IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Comment forcer le dessin d"un canvas


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut Comment forcer le dessin d"un canvas
    bonjour à tous,

    sur changement de longitude ou latitude j'ai besoin de changer des info et refaire un tracé d'axe sur mon écran android

    mais j'y arrive pas

    je detecte bien le changement de localisation avec un toast qui s'affiche bien
    mais je sais pas comment refaire le dessin

    si quelqu'un peut m'aider ?
    merci

    voici un bout du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
     
    import android.app.Activity;
    import android.content.Context;
    import android.content.pm.ActivityInfo;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.DashPathEffect;
    import android.graphics.Paint;
    import android.hardware.Camera;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.view.View;
    import android.view.WindowManager;
    import android.view.WindowManager.LayoutParams;
    import android.widget.FrameLayout;
    import android.widget.Toast;
     
     
     
    public class MainActivity extends Activity implements LocationListener{  
     /** Called when the activity is first created. */
    	DrawView drawView;
     	CameraPreview cv;
     	DrawView dv;
     	FrameLayout alParent;
     	final static float mini_azimut = 60.0f; 
     	final static float maxi_azimut = 300.0f; 
     	final static float mini_hauteur = 0.0f;
     	final static float maxi_hauteur = 80.0f;
    	LocationManager locationManager ;
    	String provider;
    	float gps_longitude;
    	float gps_latitude;
     
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // met l'ecran en position payage
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        // et en mode plein ecran
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    	} 
     
    class DrawView extends View {
            Paint paint = new Paint();
            public DrawView(Context context) {
                super(context);
                paint.setColor(Color.BLUE);
            }
     
     
            @Override
            public void onDraw(Canvas canvas) {
                super.onDraw(canvas);
                // Nous allons dessiner nos points par rapport à la résolution de l'écran
                int canvasHauteur = canvas.getHeight();   // Hauteur        
                int canvasLargeur  = canvas.getWidth();    // Largeur  
                paint.setColor(Color.BLACK);
                paint.setTextSize(22);  
           	  	canvas.drawText("Longitude = "+Double.toString(gps_longitude), 50, 50, paint);
          	    canvas.drawText("Latitude = "+Double.toString(gps_latitude), 50,100, paint);    
     
          	   //
          	   // ******************** ICI BUG
          	   canvas.drawText("Longitude = "+Double.toString(gps_longitude), 50, 50, paint);
          	   canvas.drawText("Latitude = "+Double.toString(gps_latitude), 50,100, paint);             
     
          	   // *********************************************
          	   // A TERMINER 
          	   // **********************************************
          	   // dessin des axes
          	   paint.setColor(Color.GRAY);
          	   paint.setStyle(Paint.Style.STROKE);
          	   paint.setPathEffect(new DashPathEffect(new float[] {2,2}, 0));
          	   paint.setTextSize(22);
          	   int i = 0;
          	   // tracer vertical
          	   for (i=1;i<24;i++)
          	       {
          	           canvas.drawLine((int) (i*canvasLargeur/24.0), (int) 0,(int) (i*canvasLargeur/24.0), (int) canvasHauteur, paint);
          	       }
     
          	   // tracer horizontal
          	   for (i=1;i<16;i++)
          	       {
          	       canvas.drawLine((int) 0, (int)(i*canvasHauteur/16.0), (int)canvasLargeur,(int) (i*canvasHauteur/16.0), paint);
          	       // *********************************************
          	       // A TERMINER 
          	       // **********************************************            	 
          	       // canvas.drawText(Double.toString(canvasWidth), 50, 50, paint);
          	       }             
     
          	   // tracé des textes des echelles
          	   // *********************************************
          	   // A TERMINER 
          	   // **********************************************             
          	   // A TERMINER ICI a centrer 
          	   // tracer axe azimut de 60 à 300°
          	   paint.reset();
          	   paint.setTextSize(10);            
          	   paint.setColor(Color.BLACK);             
          	   for (i=1;i<24;i++)
          	       {
          	       canvas.drawText(String.valueOf(60+i*10), (int) ((i)*canvasLargeur/24.0), (int) (14.0*canvasLargeur/16.0), paint);
          	       }
          	   // tracer axe hauteur de  0 à 70m
          	   // A TERMINER ICI a centrer 
          	   // *********************************************
          	   // A TERMINER 
          	   // **********************************************
          	   paint.reset();
          	   paint.setTextSize(10);            
          	   paint.setColor(Color.RED);             
          	   for (i=2;i<17;i=i*2)
          	       {
          	       canvas.drawText(String.valueOf((i)*5), 0, (int) (canvasHauteur-(i*canvasHauteur/16.0)), paint);
          	       }             
     
          	   double hauteur=0;
          	   double azimut=0;
          	   double hauteur_1;
          	   double azimut_1;
          	   for (i=0;i<25;i++)
          	       {
          	       // courbe du 23 janvier
          	       paint.setColor(Color.BLUE);
          	       hauteur=calcul_hauteur_soleil(43.3,5.1,23,1,i,0);
          	       azimut =calcul_azimut_soleil (43.3,5.1,23,1,i,0);
          	       hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,1,i-1,0);
          	       azimut_1 =calcul_azimut_soleil (43.3,5.1,23,1,i-1,0);
          	       canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	       canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
          	       // courbe du 23 fevrier
          	       paint.setColor(Color.RED);
          	       hauteur=calcul_hauteur_soleil(43.3,5.1,23,2,i,0);
          	       azimut =calcul_azimut_soleil (43.3,5.1,23,2,i,0);
          	       hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,2,i-1,0);
          	       azimut_1 =calcul_azimut_soleil (43.3,5.1,23,2,i-1,0);            	 
          	       canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	       canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
     
          	        // courbe du 23 mars
          	        paint.setColor(Color.CYAN);
          	        hauteur=calcul_hauteur_soleil(43.3,5.1,23,3,i,0);
          	        azimut =calcul_azimut_soleil (43.3,5.1,23,3,i,0);
          	        hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,3,i-1,0);
          	        azimut_1 =calcul_azimut_soleil (43.3,5.1,23,3,i-1,0);            	 
          	        canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	        canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
     
          	        // courbe du 23 avril
          	        paint.setColor(Color.GREEN);
          	        hauteur=calcul_hauteur_soleil(43.3,5.1,23,4,i,0);
          	        azimut =calcul_azimut_soleil (43.3,5.1,23,4,i,0);
          	        hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,4,i-1,0);
          	        azimut_1 =calcul_azimut_soleil (43.3,5.1,23,4,i-1,0);            	 
          	        canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	        canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
     
          	        // courbe du 23 mai
          	        paint.setColor(Color.MAGENTA);
          	        hauteur=calcul_hauteur_soleil(43.3,5.1,23,5,i,0);
          	        azimut =calcul_azimut_soleil (43.3,5.1,23,5,i,0);
          	        hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,5,i-1,0);
          	        azimut_1 =calcul_azimut_soleil (43.3,5.1,23,5,i-1,0);            	 
          	        canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	        canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
     
          	        // courbe du 23 juin
          	        paint.setColor(Color.WHITE);
          	        hauteur=calcul_hauteur_soleil(43.3,5.1,23,6,i,0);
          	        azimut =calcul_azimut_soleil (43.3,5.1,23,6,i,0);
          	        hauteur_1=calcul_hauteur_soleil(43.3,5.1,23,6,i-1,0);
          	        azimut_1 =calcul_azimut_soleil (43.3,5.1,23,6,i-1,0);            	 
          	        canvas.drawCircle((float)((azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)),(float)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)),(float) ( 3.0), paint);
          	        canvas.drawLine((int) ((azimut_1-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut)), (int)(canvasHauteur-hauteur_1*canvasHauteur/(maxi_hauteur-mini_hauteur)),(int)(azimut-mini_azimut)*canvasLargeur/(maxi_azimut-mini_azimut), (int)(canvasHauteur-hauteur*canvasHauteur/(maxi_hauteur-mini_hauteur)), paint);	 
     
          	        }
          	  }      	    
    }
     
    //-------------------------------------------------------------------------------
    //-------------calcul de la position du soleil pour un jour donnée---------------
    //-------------------------------------------------------------------------------
    double calcul_hauteur_soleil(double latitude,double longitude,int jour,int mois,int heure,int minute)
    {
    return(10.0f);
    }
     
     
    //-------------------------------------------------------------------------------
    //-------------calcul de l'azimut du soleil pour un jour donnée -----------------
    //-------------------------------------------------------------------------------
    double calcul_azimut_soleil(double latitude,double longitude,int jour,int mois,int heure,int minute)
    {
    return(10.0f);
    }
     
    @SuppressWarnings("deprecation")
    public void Load(){
    	// Try to get the camera 
        Camera c = getCameraInstance();
     
        // If the camera was received, create the app
        if (c != null){
        	/* Create our layout in order to layer the 
        	 * draw view on top of the camera preview. 
        	 */
            alParent = new FrameLayout(this);
            alParent.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
     
            // Create a new camera view and add it to the layout
            cv = new CameraPreview(this,c);
            alParent.addView(cv);
     
            // Create a new draw view and add it to the layout
            dv = new DrawView(this);
            alParent.addView(dv);
     
            // Set the layout as the apps content view 
            setContentView(alParent);
        }
        // If the camera was not received, close the app
        else {
        	Toast toast = Toast.makeText(getApplicationContext(), 
        			"Unable to find camera. Closing.", Toast.LENGTH_SHORT);
        	toast.show();
        	finish();
        }
    }
     
    /* This method is strait for the Android API */
    /** A safe way to get an instance of the Camera object. */
    public static Camera getCameraInstance(){
        Camera c = null;
     
        try {
            c = Camera.open();// attempt to get a Camera instance
        }
        catch (Exception e){
            // Camera is not available (in use or does not exist)
        	e.printStackTrace();
        }
        return c; // returns null if camera is unavailable
    }
     
     
    @Override
    protected void onPause() {
        super.onPause();
        if (cv != null){
        	cv.onPause();
        	cv = null;
        }
    }
     
    @Override 
    protected void onResume(){
    	super.onResume();
    	// charge le preview de la caméra
    	Load();
    	// charge la detection du GPS
     
     
    	Toast test = Toast.makeText(this, "La position a changé", 10);
        test.show();	
     
     
     
    	}
     
    @Override
    public void onLocationChanged(Location location) {
    	// Setting Current Longitude
    	gps_longitude= (float) location.getLongitude();	
    	// Setting Current Latitude
    	gps_latitude= (float)  location.getLatitude();
     
     
    	Toast test = Toast.makeText(this, "La position a changé", 10);
        test.show();	
     
    //	dv = new DrawView(this);
    //    paint.setColor(Color.BLACK);
    //    paint.setTextSize(22);
    //	dv.drawText("Longitude = "+Double.toString(gps_longitude), 50, 50, paint);
    //	dv.drawText("Latitude = "+Double.toString(gps_latitude), 50,100, paint); 
     
    }
     
    @Override
    public void onProviderDisabled(String provider) {
    	// TODO Auto-generated method stub		
    }
     
    @Override
    public void onProviderEnabled(String provider) {
    	// TODO Auto-generated method stub	
     
    }
     
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    	// TODO Auto-generated method stub		
    }

  2. #2
    Membre du Club
    Profil pro
    Hhh
    Inscrit en
    Septembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Hhh

    Informations forums :
    Inscription : Septembre 2007
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    c 'est bon j'ai trouvé l"erreur j'avais oublié ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // met l'ecran en position paysage
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        // et en mode plein ecran
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Getting LocationManager object
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);        
        // Creating an empty criteria object
        Criteria criteria = new Criteria();
     
        // Getting the name of the provider that meets the criteria
        provider = locationManager.getBestProvider(criteria, false);
        if(provider!=null && !provider.equals("")){
        	// Get the location from the given provider 
            Location location = locationManager.getLastKnownLocation(provider);
            locationManager.requestLocationUpdates(provider, 20000, 1, this);
            if(location!=null)
            	onLocationChanged(location);
            else
            	Toast.makeText(getBaseContext(), "Position GPS incorrecte", Toast.LENGTH_SHORT).show();
        }else{
        	Toast.makeText(getBaseContext(), "Pas de fournisseur de données GPS trouvé", Toast.LENGTH_SHORT).show();
        }    
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment effacer le dessin dans un Canvas ?
    Par RoM_CoOl dans le forum Langage
    Réponses: 11
    Dernier message: 29/11/2007, 16h11
  2. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  3. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  4. [Sql] Comment forcer un Accent-Insensitive ?
    Par manu59 dans le forum DB2
    Réponses: 2
    Dernier message: 23/08/2005, 13h39
  5. [Struts]comment forcer un Forward ?
    Par njac dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/10/2004, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo