owant / ThinkMap

在 Android 上绘制思维导图控件,让思维更简单。
Apache License 2.0
346 stars 82 forks source link

收拾放缩的时候view在抖动 #3

Closed dtboy1995 closed 6 years ago

dtboy1995 commented 7 years ago

您好大神,在使用库的时候,发现了手势缩放的时候View在抖动,是什么原因呢,测试环境(小米手机Android6.0),求指导,很棒的library

顺便问您一下,而且响应区域就是这个View本身的区域吧,这是您故意设计的呢还是什么,我将其背景设置为黑色后,发现只有该View区域才可响应手势,离开了就失效了,如果可以响应全屏幕的区域,那就真的体验很好了。

owant commented 7 years ago

你好,已经知道了。对于抖动,这个bug我会修复,主要是使用Scale的手势去处理,之前采用了传统的Event去进行手势进行缩放发现突变太快,就会抖动。对于为什么采用了View的大小来响应手势主要是考虑到简易实现的问题。如果要通过屏幕区域进行专递事件的话要进行更多的处理。所有暂时采用View自身进行传递。你也可以通过自己的想法进行优化,之后提交到这个Issues或者其他,我会考虑加入。这个Library还有很多不足,多见谅。

owant commented 7 years ago

call this fixed the bug

public class TreeView extends ViewGroup implements ScaleGestureDetector.OnScaleGestureListener {

   private ScaleGestureDetector mGestureDetector;

   mGestureDetector = new ScaleGestureDetector(context,this);

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        mGestureDetector.onTouchEvent(event);
        return mViewScaleHandler.move(event);
    }
       @Override
    public boolean onScale(ScaleGestureDetector detector) {
        float scaleFactor = detector.getScaleFactor();
        setScaleX(scaleFactor);
        setScaleY(scaleFactor);
        return false;
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector detector) {
        return true;
    }

    @Override
    public void onScaleEnd(ScaleGestureDetector detector) {

    }
}

and ingore the code in ViewScaleHandler.java

//                    if (newDist > oldDist + midDx) {//增大
//
//                        if (v <= max_scale) {
//                            ViewHelper.setScaleX(mView, v);
//                            ViewHelper.setScaleY(mView, v);
//                            oldDist = newDist;
//                        }
//
//                    } else if (newDist < oldDist - midDx) {//减小
//
//                        if (v > min_scale) {
//                            ViewHelper.setScaleX(mView, v);
//                            ViewHelper.setScaleY(mView, v);
//                            oldDist = newDist;
//                        }
//                    }
dtboy1995 commented 7 years ago

谢谢了,辛苦了大神,已get