【发布时间】:2014-01-08 09:02:47
【问题描述】:
我正在尝试创建一个 android 应用程序,当我触摸屏幕上的任何位置时,它会执行以下操作:
- 一个新的 ImageView 必须出现在屏幕的中心(至少对于这个例子,我们可以说图像视图中的图片是一个箭头);
- 有箭头指向我触摸屏幕的方向。
- 箭头必须从屏幕中心平移(使用动画)到屏幕被触摸的位置。
由于我是 Android 的新手,所以我不知道最好的方法是什么,所以我想出了以下不工作的解决方案:
happyrelativelayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() ==MotionEvent.ACTION_DOWN){
ImageView arrow = new ImageView(ctx);
arrow.setImageResource(R.drawable.arrow);
arrow.setX(centerx);
arrow.setY(centery);
float angle = -(float) Math.toDegrees(Math.atan2(centerx - event.getX(), centery - event.getY()));
arrow.setRotation(angle);
happyrelativelayout.addView(arrow);
arrowanimation = new TranslateAnimation(0, event.getX() - centerx, 0, event.getY() - centery);
arrowanimation.setFillAfter(true);
arrowanimation.setDuration(1000);
arrow.startanimation(arrowanimation);
}
}
}
有了这个解决方案,除了动画之外,一切似乎都按原样进行。 即使箭头移动到触摸点,也没有动画,箭头只是从中心向触摸点闪烁。我错过了什么重要的东西?
【问题讨论】:
标签: android rotation ontouchlistener translate-animation