简体   繁体   English

Android 移动对象以触摸

[英]Android move object to touch

I'm kinda new to building apps on Android.我对在 Android 上构建应用程序有点陌生。 I do have some Java developing experience, but the project I do now is first on Android.我确实有一些Java开发经验,但我现在做的项目首先是在Android上。

I'm building a basic cards game, and I want the card to move to the specific location I touch.我正在构建一个基本的纸牌游戏,我希望纸牌移动到我触摸的特定位置。 I did it, and the card moves to the touch point, but once the animation is over it bounces back to starting position.我做到了,卡片移动到接触点,但是一旦动画结束,它就会弹回到起始位置。

I added a Image re-position code, but now it begins the animation from that point.我添加了一个图像重新定位代码,但现在它从那个点开始动画。 any ideas, anyone?任何想法,任何人?

the code I did is:我做的代码是:

    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;

    }

}

Thanks All!!谢谢大家!!

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;
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM