簡體   English   中英

在android中創建,旋轉和TranslateAnimation

[英]Create, Rotate and TranslateAnimation in android

我正在嘗試創建一個Android應用程序,當我觸摸屏幕上的任何地方時,會執行以下操作:

  1. 新的ImageView必須出現在屏幕的中心(至少在本例中我們可以說圖像視圖中的圖片是箭頭);
  2. 箭頭指向我觸摸屏幕的方向。
  3. 箭頭必須從屏幕中心轉換(使用動畫)到觸摸屏幕的位置。

由於我是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM