0
我想构建一个具有imageview的应用程序,它只是简单地遵循手指触摸。换句话说,imageview会跟随手指的触摸。我已经部分实现了这一点,因为imageview是在跟随手指的触摸,但问题在于它有一些偏移。 imageview大约一英寸的实际触摸。Imageview不跟随手指触摸
下面是我的代码:
public class MainActivity extends AppCompatActivity {
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView)findViewById(R.id.img1);
img.setImageResource(R.drawable.ic_remove_circle_black_24dp);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
img.setX(event.getX());
img.setY(event.getY());
return false;
}
}
可能是什么背后的偏移的原因吗?
编辑:解
下面的代码做什么,我需要:
public class MainActivity extends AppCompatActivity {
ImageView img;
int[] viewCoords = new int[2];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView)findViewById(R.id.img1);
img.setImageResource(R.drawable.ic_remove_circle_black_24dp);
}
@Override
public boolean onTouchEvent(MotionEvent event){
img.getLocationOnScreen(viewCoords);
img.setX(event.getX()-(viewCoords[0]-img.getX()));
img.setY(event.getY()-(viewCoords[1]-img.getY()));
return true;
}
}
感谢Doomsknight的方向。
执行完int [] v iewCoords = new int [2]; imageView.getLocationOnScreen(viewCoords); viewCoords中的值是{0,0}。所以,实际上,它什么都不做。 –
@ankitshubham。你有上面答案中偏移的原因。如果这个特定的实现不起作用,我建议现在在互联网上寻找另一个,你有一个地方开始。 – Doomsknight
@ankitshubham。另外我建议把这个代码放在ontouch方法中。不是oncreate方法。这可能有助于通货膨胀应该发生 – Doomsknight