Android移动ImageView

尤恩

我在网上搜索了一个简单的解决方案,可以自由移动ImageView我终于找到了一些可以产生完美结果的代码:

public class MainActivity extends Activity implements View.OnTouchListener {

    private int _xDelta;
    private int _yDelta;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView j = (ImageView)findViewById(R.id.j);

        j.setOnTouchListener(this);

    }

    public boolean onTouch(View view, MotionEvent event) {
        final int X = (int) event.getRawX();
        final int Y = (int) event.getRawY();
        ImageView j = (ImageView)findViewById(R.id.j);
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
                _xDelta = (int) (X - j.getTranslationX());
                _yDelta = (int) (Y - j.getTranslationY());
                break;
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_POINTER_DOWN:
                break;
            case MotionEvent.ACTION_POINTER_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();

                j.setTranslationX(X - _xDelta);
                j.setTranslationY(Y - _yDelta);
                break;
        }

        return true;
    }}

由于我真的不知道我的代码是如何工作的,所以我想看看是否有更好的解决方案。

尤恩

这是我得到的解决方案:

private float xCoOrdinate, yCoOrdinate;

         view.setOnTouchListener(new View.OnTouchListener() {

            Float y1 = 0f, y2 = 0f;

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                Point size = new Point();
            getWindowManager().getDefaultDisplay().getSize(size);        

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        //xCoOrdinate = view.getX() - event.getRawX();
                        yCoOrdinate = view.getY() - event.getRawY();
                        Float puffer = 0f;
                        y1 = event.getRawY();

                        break;
                    case MotionEvent.ACTION_MOVE:
                        view.animate().y(event.getRawY() + yCoOrdinate).setDuration(0).start();
                        //view.animate().x(event.getRawX() + xCoOrdinate).y(event.getRawY() + yCoOrdinate).setDuration(0).start();
                        break;
                    case MotionEvent.ACTION_UP:
                        y2 = event.getRawY();
                        Float dy = (y2 - y1);


                        if (dy < 0) { 
                            //moved up
                            view.animate().y(size.y / 100 * -40).setDuration(100).start();
                        } else if (dy > 0) {  
                            // moved down
                            view.animate().y(size.y / 2 - view.getHeight() / 2).setDuration(100).start();  
                        }

                        break;
                }

                return false;
            }
        });

说明:如果向上或向下移动,我只需要在y轴上移动并进行检测。这是通过将视图的动画设置为动画来实现的,女巫各有利弊(相反:它很难检测空间中的视图/优点:视图实际上在移动,而不仅仅是出现在其他地方),但事实证明它最适合我,很简单。这里的目标是向上滑动视图并将其移至所需位置,就像向下滑动一样,返回到原始位置,这是相对于屏幕尺寸实现的。对我来说,代码是相对简单和易于解释的,但是请问是否有不清楚的地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android移动ImageView

来自分类Dev

在Android上移动ImageView

来自分类Dev

在Android中将ImageView移动到屏幕中心

来自分类Dev

Android-如何在滑动上移动ImageView

来自分类Dev

Android ImageView和OnTouchListener手指移动

来自分类Dev

Android Studio:如何使ImageView沿旋转方向移动

来自分类Dev

如何在Imageview Android上平稳地移动图像

来自分类Dev

根据重力移动ImageView?

来自分类Dev

在xml中移动imageView

来自分类Dev

循环移动Imageview

来自分类Dev

从屏幕外移动imageView

来自分类Dev

Android:如何在同一imageview内绘制多个图像,但在y坐标上移动?

来自分类Dev

在Android的触摸事件上移动imageview后,Alpha动画的行为异常

来自分类Dev

Android:移动带有动画的imageView多数民众赞成在窗口管理器上放置

来自分类Dev

android中的imageview不会向下移动而只会水平扩展,因此未显示某些图像

来自分类Dev

Android Imageview

来自分类Dev

在视图内正确移动imageview

来自分类Dev

通过ImageView OnTouchListener的Android ImageView

来自分类Dev

Android中ImageView上的ImageView

来自分类Dev

Android:imageview超过imageview问题

来自分类Dev

在Android中单击ImageView时如何从一个片段移动到另一个片段?

来自分类Dev

移动可绘制和Imageview布局的问题

来自分类Dev

创建侦听器以移动ImageView

来自分类Dev

ImageView在相机表面视图后面移动

来自分类Dev

在RelativeView中围绕中心椭圆移动ImageView

来自分类Dev

移动ImageView对象时的并发处理

来自分类Dev

ImageView移动到相机表面视图的后面

来自分类Dev

在RelativeView中围绕中心椭圆移动ImageView

来自分类Dev

将 ImageView 移动到布局右侧

Related 相关文章

热门标签

归档