gpt4 book ai didi

android - 如何使用 Canvas - Android 将图像从 drawable 绘制到 imageview 上

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:27 25 4
gpt4 key购买 nike

我有一个 Activity ,其中有一个 ImageView。我想要做的是能够使用可绘制文件夹中的图像绘制用户触摸 Imageview 的位置。我读到最好的方法是使用 Canvas,但我不确定在何处以及如何将 onDraw 方法与 onTouchListener 集成。这是我目前所拥有的:

public class Main extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final TextView textView = (TextView)findViewById(R.id.textView);
final ImageView image = (ImageView) findViewById(R.id.imageView2);

//Bitmap
Bitmap viewBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(viewBitmap);
image.draw(canvas);

image.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
textView.setText("Touch coordinates : " + String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
return false;
}
});
}
}

所以我想做的是当用户触摸 ImageView 时,将在他触摸的位置准确绘制图像。

最佳答案

您将要继承 ImageView 以覆盖其 onDraw() 方法。通过这样做,您还可以在 onTouchEvent() 中自定义触摸处理,而不是附加监听器。这不是一个完整的示例,而是类似于以下内容:

public class CustomImageView extends ImageView {

private ArrayList<Point) mTouches;
private Bitmap mMarker;

//Java constructor
public CustomImageView(Context context) {
super(context);
init();
}

//XML constructor
public CustomImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}

private void init() {
mTouches = new ArrayList<Point>();
mMarker = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_marker_image);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
//Capture a reference to each touch for drawing
if(event.getAction() == MotionEvent.ACTION_DOWN) {
mTouches.add( new Point(event.getX(), event.getY()) );
return true;
}

return super.onTouchEvent(event);
}

@Override
protected void onDraw(Canvas c) {
//Let the image be drawn first
super.onDraw(c);

//Draw your custom points here
Paint paint = new Paint();
for(Point p : mTouches) {
c.drawBitmap(mMarker, p.x, p.y, paint);
}
}

}

喂!

关于android - 如何使用 Canvas - Android 将图像从 drawable 绘制到 imageview 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com