J'ai un ImageView chargeant une image dans mon Activité et je veux dessiner quelques lignes dessus Il semble que je ne suis pas capable de superposer les lignes que je dessine sur l'ImageView Si je crée une nouvelle classe (myPainter) qui étend 'View', hook myPainter.onDraw() puis setContentView (mp) dans onCreate() à partir de l'activité, tout ce que je reçois sont les lignes tracées.Mon ImageView est parti de onCreate(). Comment puis-je obtenir le ImageView et les lignes à afficher dans la même mise en page? Je suis aussi Override'ing OnTouch() pour le ImageView je peux obtenir les emplacements de clic xy de celui-ci.Dessiner une ligne dans une classe qui s'étend "Activité '
public class myPainter extends View
{
public myPainter (Context context)
{
super (context);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw (canvas);
Paint p = new Paint();
p.setColor(Color.RED);
canvas.drawLine (E_XMIN, E_YMIN, E_XMAX, E_YMAX, p);
}
}
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
ImageView iv = (ImageView) findViewById(R.id.ImageView01);
iv.setOnTouchListener (this);
// this draws my lines, but I loose the pic above ^^^
myPainter mp = new myPainter(this);
setContentView(mp);
}
MISE À JOUR:
Je pense que je me suis littéralement peint dans un coin. Comment ajouter un frameAnimation à ce code maintenant dans la méthode onTouchEvent()? Comme lorsque l'utilisateur touche l'écran. L'exemple Android rocketAnimation provoque une exception si j'ajouter du code à myPainter() Classe:
@Override
public boolean onTouchEvent (MotionEvent event)
{
//Log.d (TAG, "touchevent in myPainter");
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
Log.d (TAG, "down x:" + event.getX() + " y:" + event.getY());
int wClick = getClick (event.getX(), event.getY());
AnimationDrawable touchAni;
ImageView iv = (ImageView) findViewById (R.drawable.triangle);
iv.setBackgroundResource (R.drawable.nova);
touchAni = (AnimationDrawable) iv.getBackground();
touchAni.start();
return true;
}
return super.onTouchEvent (event);
}
qu'est-ce que 'myConst'? et où avez-vous obtenu 'E_XMIN, E_YMIN' etc – ThisGuy
Il ne dessine pas sur' R.layout.main'. Vous avez simplement changé 'setContentView'. Le 'layout.main' n'est pas visible. Vous venez de mettre 'myPainter' par-dessus. – ThisGuy