我有一个程序,我想在触摸事件的坐标处放置一个图像。我现在有坐标我需要帮助才能在那里放置图像。我将使用drawable。
编辑** 我也想把它叠加在另一张图片上。我找不到任何关于此的文件。我认为应该很容易。
任何人都可以帮助我吗?
EDIT **** 知道了,现在我只需弄清楚如何在触摸点而不是左上角找到图像的中间位置:
final View touchView2 = findViewById(R.id.ImageView02);
touchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.v("x,y",event.getY()+","+event.getX());
touchView2.bringToFront();
int y = (int)event.getY();
int x = (int)event.getX();
touchView2.layout(x, y, x+48, y+48);
return true;
}
});
答案 0 :(得分:4)
将您想要的图像放在应用程序的xml中。 设置它隐形或消失...
取代:
final View touchView2 = findViewById(R.id.ImageView02);
在类构造函数之前:
ImageView touchView2;
和构造函数(onCreate)方法
touchView2 = (ImageView) findViewById(R.id.ImageView02);
现在通过在屏幕上进行所有触摸来设置onTouchEventListener。 如果这些坐标位于您喜欢的位置,则使用按下的X和Y坐标调用placeImage方法。这个方法放在类构造函数(onCreate)之外,所以下面的第一个方法应该是正确的:
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
int eventAction = event.getAction();
switch(eventAction) {
case MotionEvent.ACTION_DOWN:
float TouchX = event.getX();
float TouchY = event.getY();
placeImage(TouchX, TouchY);
break;
}
return true;
}
现在是placeImage方法:
private void placeImage(float X, float Y) {
int touchX = (int) X;
int touchY = (int) Y;
// placing at bottom right of touch
touchView2.layout(touchX, touchY, touchX+48, touchY+48);
//placing at center of touch
int viewWidth = touchView2.getWidth();
int viewHeight = touchView2.getHeight();
viewWidth = viewWidth / 2;
viewHeight = viewHeight / 2;
touchView2.layout(touchX - viewWidth, touchY - viewHeight, touchX + viewWidth, touchY + viewHeight);
}
这应该是你的答案......现在你只需要使touchView可见:
touchView2.setVisibility(0);
答案 1 :(得分:0)
Drawable recycle_bin = context.getResources().getDrawable(android.R.drawable.ic_menu_delete);
int w = recycle_bin.getIntrinsicWidth();
int h = recycle_bin.getIntrinsicHeight();
int x = getWidth()/2 - w/2;
int y = getHeight() - h - 5;
recycle_bin.setBounds( x, y, x + w, y + h );
recycle_bin.draw( canvas );
这就是我在底部中心绘制回收站图标的方式
答案 2 :(得分:0)
要将图像放置在某个坐标处,您必须在画布上绘制图像。要获取触摸事件的坐标,请使用以下代码:
@Override
public void onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
mTouchX = event.getX();
mTouchY = event.getY();//stores touch event
} else {
mTouchX = -1;
mTouchY = -1;
}
super.onTouchEvent(event);
}