以下是ImageView的简单扩展代码,允许用户用手指进行绘制。
public class MyImageView extends ImageView {
List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
public MyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDraw(Canvas canvas) {
for (Point point : points) {
canvas.drawCircle(point.x, point.y, 5, paint);
// Log.d(TAG, "Painting: "+point);
}
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
Log.d("", "point: " + point);
return true;
}
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
}
这项工作很顺利。
现在,我想使用此代码在位图的顶部绘制。
我用过:
MyImageView ivPic = (MyImageView) dialog.findViewById(R.id.ivPic);
ivPic.setImageBitmap(picture);
但是绘图是在“Bitmap”后面绘制的:
您是否知道如何在位图的“顶部”绘制?
答案 0 :(得分:5)
我已经在onDraw
方法中更改了顺序,我在开头放了super.onDraw(canvas);
,我觉得它现在有用了
答案 1 :(得分:2)
覆盖并使用dispatchDraw方法,我用它来绘制视图
答案 2 :(得分:0)
我回答了自己的问题,刚刚找到答案:
ivPic.setBackgroundDrawable(new BitmapDrawable(getResources(),picture));
不知道这是否是最好的做法,但这对我有用......