http://www.pptjcw.com

ppt播放下图片的随意拖动:Android实现随意拖动View+ViewGroup效果(亲验可行)

    下面的是PPT教程网给你带来的相关内容:

    ppt播放下图片的随意拖动:Android实现随意拖动View+ViewGroup效果(亲验可行)

    由于现在做一个拖拽效果的实现,发现网上的例子只有 View 的拖拽,但是没有 的拖拽ppt播放下图片的随意拖动,为了回报社区,我也分享一下这两个效果!!

    View的拖拽

    ppt播放下图片的随意拖动

    代码如下ppt播放下图片的随意拖动:Android实现随意拖动View+ViewGroup效果(亲验可行),如果是View 主要是处理他的View 的触摸时间,然后 重新摆放位置即可

     @Override
        public boolean onTouchEvent(MotionEvent event) {
            super.onTouchEvent(event);
            if (this.isEnabled()) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        isDrag = false;
                        downX = event.getX();
                        downY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        Log.e("kid", "ACTION_MOVE");
                        final float xDistance = event.getX() - downX;
                        final float yDistance = event.getY() - downY;
                        int l, r, t, b;
                        //当水平或者垂直滑动距离大于10,才算拖动事件
                        if (Math.abs(xDistance) > 10 || Math.abs(yDistance) > 10) {
                            Log.e("kid", "Drag");
                            isDrag = true;
                            l = (int) (getLeft() + xDistance);
                            r = l + width;
                            t = (int) (getTop() + yDistance);
                            b = t + height;
                            //不划出边界判断,此处应按照项目实际情况,因为本项目需求移动的位置是手机全屏,
                            // 所以才能这么写,如果是固定区域,要得到父控件的宽高位置后再做处理
                            if (l < 0) {
                                l = 0;
                                r = l + width;
                            } else if (r > screenWidth) {
                                r = screenWidth;
                                l = r - width;
                            }
                            if (t < 0) {
                                t = 0;
                                b = t + height;
                            } else if (b > screenHeight) {
                                b = screenHeight;
                                t = b - height;
                            }
                            this.layout(l, t, r, b);
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                        setPressed(false);
                        break;
                    case MotionEvent.ACTION_CANCEL:
                        setPressed(false);
                        break;
                }
                return true;
            }
            return false;
        }
        
    

    的拖拽

    ppt播放下图片的随意拖动

    如果是 的话,需要处理分发的事件当时遇到的问题如下

    如果子View 处理的 会有问题2.如果父控件有别的时间,如要

        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            getParent().requestDisallowInterceptTouchEvent(true);
            
            Boolean flag = handleEvent(event);
            if (flag) {
                return true;
            } else {
                return super.dispatchTouchEvent(event);
            }
        }
        
         @Nullable
        private Boolean handleEvent(MotionEvent event) {
            boolean result = false;
            if (this.isEnabled()) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        isDrag = false;
                        downX = event.getX();
                        downY = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        Log.d(TAG, "====>>>   ACTION_MOVE");
                        final float xDistance = event.getX() - downX;
                        final float yDistance = event.getY() - downY;
                        int l, r, t, b;
                        //当水平或者垂直滑动距离大于10,才算拖动事件
                        if (Math.abs(xDistance) > scaledTouchSlop || Math.abs(yDistance) > scaledTouchSlop) {
                            Log.d(TAG, "====>>>   Drag: ");
                            isDrag = true;
                            l = (int) (getLeft() + xDistance);
                            r = l + width;
                            t = (int) (getTop() + yDistance);
                            b = t + height;
                            //不划出边界判断,此处应按照项目实际情况,因为本项目需求移动的位置是手机全屏,
                            // 所以才能这么写,如果是固定区域,要得到父控件的宽高位置后再做处理
                            if (l < 0) {
                                l = 0;
                                r = l + width;
                            } else if (r > screenWidth) {
                                r = screenWidth;
                                l = r - width;
                            }
                            if (t < 0) {
                                t = 0;
                                b = t + height;
                            } else if (b > screenHeight) {
                                b = screenHeight;
                                t = b - height;
                            }
                            this.layout(l, t, r, b);
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        break;
                }
            }
            return isDrag;
        }
    

    完整代码获取方式如下:

    感谢你支持pptjcw.com网,我们将努力持续给你带路更多优秀实用教程!

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:ppt播放自动跳动怎么办:怎么取消ppt自动放映 下一篇:没有了

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。