【问题标题】:Android move object to touchAndroid移动对象以触摸
【发布时间】:2012-04-19 17:30:45
【问题描述】:

我对在 Android 上构建应用有点陌生。我确实有一些 Java 开发经验,但我现在做的项目首先是在 Android 上。

我正在构建一个基本的纸牌游戏,我希望卡片移动到我触摸的特定位置。 我做到了,卡片移动到触摸点,但是一旦动画结束,它就会弹回起始位置。

我添加了一个图像重新定位代码,但现在它从该点开始动画。 任何想法,任何人?

我做的代码是:

    public class FinallyActivity extends Activity {
        /** Called when the activity is first created. */

        EditText DBG;
        ImageView iv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        DBG = (EditText)  findViewById(R.id.editText1);
        iv =  (ImageView) findViewById(R.id.imV1);      
    }

    private void RunAnimations(MotionEvent event) {
    //  Animation b = AnimationUtils.loadAnimation(this,R.anim.cardtrans);
        int xStart, yStart, dx, dy;

        xStart = iv.getLeft();
        yStart = iv.getTop();
        Animation b = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE,event.getX()-50,
                Animation.ABSOLUTE,0,Animation.ABSOLUTE,event.getY()- 105);
        b.setDuration(3000);
        iv.clearAnimation();
        iv.startAnimation(b);   

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            RunAnimations(event);
        }

                iv.layout((int)event.getX()-25,(int) event.getY()-105,
                (int)event.getX()+25,(int) event.getY()-35);
        return true;

    }

}

谢谢大家!!

【问题讨论】:

标签: java android graphics imageview


【解决方案1】:

【讨论】:

  • 作为后续问题,有没有人知道一本适合初学者的好书\网站来学习图形和动画? (我使用 android SDK 和一些博客,但我似乎无法深入了解这件事)
【解决方案2】:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView = findViewById(R.id.subview);
    imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                    xDown = event.getX();
                    yDown = event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    float moveX,moveY;
                    moveX = event.getX();
                    moveY = event.getY();

                    float distanceX = moveX -xDown;
                    float distanceY  = moveY -yDown;
                    imageView.setX(imageView.getX()+distanceX);
                    imageView.setY(imageView.getY()+distanceY);
                    break;
            }
            return true;
        }
    });
}

【讨论】:

  • 浮动 xDown = 0;浮动 yDown = 0;
  • 感谢您的回答。为了改进您的答案,请添加一些说明您的解决方案的文字。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多