相反,尝试将您的 ImageView 作为画布进行绘制。
ImageView CanvasView = (ImageView) findViewById(R.id.fashion_pic)
您可以从这里创建自己的位图并在 TouchEvent 之后重新绘制它。以下 sn-p 包含针对 2.1(或 2.2,我不记得)中的错误的必要解决方法:
public void redrawImage() {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.fashion_pic);
Bitmap proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
Canvas c = new Canvas(proxy);
//Here, we draw the background image.
c.drawBitmap(bm, new Matrix(), null);
//Here, we draw the text where the user last touched.
c.drawText("Fashion", someGlobalXvariable, someGlobalYvariable, somePaint);
CanvasView.setImageBitmap(proxy);
}
在这里,您创建了一个画布,该画布已经将您的图片作为背景,并在 x 和 y 变量处绘制文本。现在,只需设置一个 OnTouchListener:
CanvasView.setOnTouchListener( new OnTouchListener(){
public boolean onTouch(View v, MotionEvent e) {
someGlobalXvariable = e.getX();
someGlobalYvariable = e.getY();
redrawImage();
return true;
}
});
如您所见,当您触摸它时,侦听器会自动更新您的图像,并且文本将跟随用户的手指。由于您使用位图作为画布,因此如果您的应用想要具有这种功能,您还可以添加对保存/加载图像的支持。
编辑:如果您将第 1-3 行从 redrawImage() 移到其他位置,将这些对象设置为全局对象,则可能对性能更友好。我会让你修补的。