如何创建具有功能的图像移动?

时间:2014-05-30 08:39:06

标签: android image drag

我试图创建像Android的解锁活动之类的东西,在那里你将锁定图像拖到圆圈之外以解锁手机。我想拖动图像并在到达某个位置时开始活动。我尝试用画布做这件事,但结果却画了我画面的其他部分。所以我尝试使用以下代码片段,我在另一篇文章中找到了:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_touch_ball);



    windowwidth = getWindowManager().getDefaultDisplay().getWidth();
    windowheight = getWindowManager().getDefaultDisplay().getHeight();
    final ImageView balls = (ImageView)findViewById(R.id.ball);

    balls.setOnTouchListener(new View.OnTouchListener() {

                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        LayoutParams layoutParams = (LayoutParams) balls.getLayoutParams();
                        switch(event.getAction())
                        {
                        case MotionEvent.ACTION_DOWN:   
                                                        break;
                        case MotionEvent.ACTION_MOVE:
                                                        int x_cord = (int)event.getRawX();
                                                        int y_cord = (int)event.getRawY();

                                                        if(x_cord>windowwidth){x_cord=windowwidth;}
                                                        if(y_cord>windowheight){y_cord=windowheight;}

                                                        layoutParams.leftMargin = x_cord;
                                                        layoutParams.topMargin = y_cord;

                                                        balls.setLayoutParams(layoutParams);
                                                        break;
                        default:
                                                        break;
                        }
                            return true;
                    }
            });
}

但这也不能很好地工作,因为当我触摸图像时,它会改变它的大小,也不会在屏幕上平滑移动。

你知道我怎样才能开始一项活动,让我们说当我将图像从屏幕底部拖到顶部时?

1 个答案:

答案 0 :(得分:0)

这是因为以下行

layoutParams.leftMargin = x_cord;
layoutParams.topMargin = y_cord;
balls.setLayoutParams(layoutParams);

如果你设定了边距,那么球就会移动。