我有一个 ImageView 在我的 Activity 中加载图片并想在上面画一些线。似乎我无法将绘制的线条叠加到 ImageView 上。如果我创建一个扩展“视图”的新类(myPainter),将 myPainter.onDraw() 挂钩,然后从活动的 onCreate() 中设置内容视图(mp),我得到的只是画线。我的 ImageView 从 onCreate() 中消失了。如何让 ImageView 和线条显示在相同的布局中?我还为 ImageView 覆盖了 onTouch(),因此我可以从中获取 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);
}
更新:
我想我真的把自己画到了一个角落里。现在如何在 onTouchEvent() 方法中向此代码添加 frameAnimation?就像用户触摸屏幕的位置一样。如果我将代码添加到 myPainter() 类,Android RocketAnimation 示例会导致异常:
@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);
}