Bonjour à toutes et à tous,
Je souhaite dessiner dans un layout (des lignes toutes simples) qui change à chaque fois que j'appuie sur un bouton. Le code suivant fonctionne ... de manière bancale ... ce qui ne m'étonne pas.
Mon problème : à la fin du code, dans la méthode : void onClick(View v), je ne sais pas où récupérer le canvas de mon layout, d'où l'idée (farfelue) de le recopier dans la méthode locale OnDraw.
Question : où trouve-t-on ce canvas ? c'est une variable de quel objet ? Je tourne rond et n'arrive pas à trouver.
Merci de votre aide.
Pierre
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 package com.example.test_01; import java.util.Random; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends Activity { Button Transfert; LinearLayout Img; Canvas CnvG; //variable pour stocker le canvas du layout private static Random random = new Random() ; float Y = 1; private class Dessin extends View { public Dessin(Context context) { super(context); } @Override protected void onDraw(Canvas Cnv) { //Cnv est le canvas local à la classe Dessin super.onDraw(Cnv); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);; paint.setColor(Color.GREEN); paint.setStrokeWidth(3); Y = 100*random.nextFloat(); Cnv.drawLine(0, 0, 200, Y, paint); CnvG = Cnv; //Je récupère ce canvas } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Img = (LinearLayout)findViewById(R.id.image); final Dessin MonImg = new Dessin(this); Img.addView(MonImg); Transfert = (Button)findViewById(R.id.button1); Transfert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MonImg.onDraw(CnvG); //j'utilise ici le canvas récupéré Img.draw(CnvG); } }); } }
Partager