在Android中,从左向右滑动视图,反之亦然

在Android中,从左向右滑动视图,反之亦然,android,animation,swipe,slide,gesture,Android,Animation,Swipe,Slide,Gesture,我有一个图标,它位于屏幕的右侧,我给它一个-25dp的边距,所以它不是完全可见的,我希望用户能够移动按钮,同时触摸它,直到它被完全查看,并返回到它的位置。 我尝试了许多代码,如下面的代码,但我无法计算每个屏幕分辨率的正确滑动值,有人能帮我找到更好的解决方案吗 您想将其移动到屏幕上的任何位置,还是仅移动x轴或y轴?x轴,直到用户从右到左完全看到图像,然后用户可以将其返回您的移动工作?只有密度问题?哪一个是屏幕端?我可以在水平视图中将其从右向左移动,但我无法猜测用户何时可以完全查看图像,因此他无法再

我有一个图标,它位于屏幕的右侧,我给它一个-25dp的边距,所以它不是完全可见的,我希望用户能够移动按钮,同时触摸它,直到它被完全查看,并返回到它的位置。 我尝试了许多代码,如下面的代码,但我无法计算每个屏幕分辨率的正确滑动值,有人能帮我找到更好的解决方案吗


您想将其移动到屏幕上的任何位置,还是仅移动x轴或y轴?x轴,直到用户从右到左完全看到图像,然后用户可以将其返回您的移动工作?只有密度问题?哪一个是屏幕端?我可以在水平视图中将其从右向左移动,但我无法猜测用户何时可以完全查看图像,因此他无法再滑动。
    class DragExperimentTouchListener implements View.OnTouchListener {

    public DragExperimentTouchListener(float initalX, float initialY) {
        lastX = initalX;
        lastY = initialY;
    }

    boolean isDragging = false;
    float lastX;
    float lastY;
    float deltaX;

    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {


        if (gestureDetector.onTouchEvent(arg1)) {
            // single tap
            return true;
        } else {
            // your code for move and drag


            int action = arg1.getAction();

            if (action == MotionEvent.ACTION_DOWN && !isDragging) {
                isDragging = true;
                deltaX = arg1.getX();
                return true;
            } else if (isDragging) {
                if (action == MotionEvent.ACTION_MOVE) {


                    if (arg0.getX() >= ??) {
                        arg0.setX(arg0.getX() + arg1.getX() - deltaX);
                        arg0.setY(arg0.getY());
                    }
                    return false;
                } else if (action == MotionEvent.ACTION_UP) {
                    isDragging = false;
                    lastX = arg1.getX();
                    lastY = arg1.getY();


                    return false;
                } else if (action == MotionEvent.ACTION_CANCEL) {
                    arg0.setX(lastX);
                    arg0.setY(lastY);

                    isDragging = false;
                    return false;
                }
            }
        }

        return false;
    }
}