将图像添加到android触摸屏布局中的触摸位置
当我在屏幕上触摸x y位置时,我需要在该特定位置添加一个图像。 我尝试实现ontouch listener,但它将图像添加到不同的位置,许多图像出现在多个触摸屏上。我想要一些东西,比如我触摸过的地方,相同的图像应该出现在那里 请帮助我,我是一个新的机器人在一个公司的项目工作 这是我的活动代码将图像添加到android触摸屏布局中的触摸位置,android,Android,当我在屏幕上触摸x y位置时,我需要在该特定位置添加一个图像。 我尝试实现ontouch listener,但它将图像添加到不同的位置,许多图像出现在多个触摸屏上。我想要一些东西,比如我触摸过的地方,相同的图像应该出现在那里 请帮助我,我是一个新的机器人在一个公司的项目工作 这是我的活动代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RelativeLayout rl = (RelativeLayout) findViewById(R.id.wwcontainer);
//Set On TouchListner to the Layout
rl.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("OnTouch", "On Touch View Group....");
int x = (int) event.getX();
int y = (int) event.getY();
ImageView imageView = new ImageView(getApplicationContext());
imageView.setImageResource(R.drawable.icon);
imageView.setLayoutParams(new LayoutParams(x,y));
rl.addView(imageView);
return true;
}
});
}
我知道拖放,我不想拖放,我需要触摸任何应该出现图像的地方。触摸位置请帮助我,你需要使用而不是相对位置
要在特定的x,y位置添加图像,需要绝对布局。是否检查了getX()和getY()返回的int值,我认为它将返回0,0
请将event.getRawX()和event.getRawX()用于实际触摸位置。我希望这会有所帮助。我也有同样的要求,这就是我所做的,它对我来说非常有效
final RelativeLayout rr = (RelativeLayout) findViewById(R.id.rr);
rr.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
ImageView iv = new ImageView(getApplicationContext());
lp.setMargins(x, y, 0, 0);
iv.setLayoutParams(lp);
iv.setImageDrawable(getResources().getDrawable(
R.drawable.gr1));
((ViewGroup) v).addView(iv);
}
return false;
}
});
这将把图像放在相对坐标上,你们从那个里开始接触坐标。若你们想把新的图片放在你们接触到相对物的地方,你们需要计算图片的高度和宽度,并把我的代码中的一行改为
lp.setMargins(x - yourImageWidth/2, y - yourImageHeight/2, 0, 0);
+谢谢你的回答。我想补充一点,如果你想将图像添加到用户触摸的中心,不要使用x-yourImageWidth/2,而要使用x-yourImageWidth,并且对高度也要这样做。