У меня есть ImageView, загружающий изображение в моей деятельности, и я хочу нарисовать на нем несколько линийКажется, я не могу наложить линии, которые я рисую, на ImageView.Если я создаю новый класс (myPainter), который расширяет 'View', подключаю myPainter.onDraw (), а затем устанавливаю onConteate () изConcontentView (mp) из действия, все, что я получаю, это нарисованные линии.Мой ImageView ушел из onCreate ().Как мне заставить ImageView и линии отображаться в одном макете?Я также переопределяю onTouch () для ImageView, чтобы я мог получить из него местоположения щелчка xy.
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);
}
ОБНОВЛЕНИЕ:
Я думаю, что буквально загнал себя в угол.Как мне добавить frameAnimation к этому коду сейчас в методе onTouchEvent ()?Например, когда пользователь касается экрана.Пример rocketAnimation для Android вызывает исключение, если я добавляю код в класс myPainter ():
@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);
}