[英]Create, Rotate and TranslateAnimation in android
我正在嘗試創建一個Android應用程序,當我觸摸屏幕上的任何地方時,會執行以下操作:
由於我是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);
}
}
}
有了這個解決方案,除了動畫之外,一切似乎都要去。 即使箭頭移動到觸摸點,也沒有動畫,箭頭只是從中心閃爍到觸摸點。 我錯過了一些重要的事情嗎?
代碼看起來是正確的,但我從未使用過TranslateAnimation()
我個人使用ObjectAnimator類,這通常是因為我想使用NineOldAndroids來支持舊版本。
這是使用ObjectAnimator看起來的樣子。
final ObjectAnimator translateX = ObjectAnimator.ofFloat(arrow, "translationX", centerX, event.getX());
translateX.setDuration(1000);
final ObjectAnimator translateY = ObjectAnimator.ofFloat(arrow, "translationY", centerY, event.getY());
translateY.setDuration(1000);
final AnimatorSet moveAnimation = new AnimatorSet();
moveAnimation.playTogether(translateX, translateY);
moveAnimation.start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.