最近研究了下 gpuimage的滤镜 , 在封装了滤镜控件后,对滤镜容器设置手势时出现了以下问题:
问题描述
主要问题就是GestureDetector onScroll
distance 数据抖动;
在用手势对象捕捉了dispatchTouchEvent事件后, 本打算 在 onScroll
方法中对容器view进行滑动的变化, 第一时间想到使用 translateX和translateY 属性对view进行滑动;
//sum 每次的移动距离;
mTranslateX += distanceX;
mTranslateY += distanceY;
//设置translate属性;
setTranslationX(mTranslateX);
setTranslationY(mTranslateY);
但是当使用setTranslationX()
方法设置属性后,滑动是能滑动,会出现抖动效果,通过打印得知distanceX 会出现两种,一会儿正,一会儿负,导致出现抖动; 用户体验效果很差;
问题原因
Left = x + translationX
理论上是没错的; 只可能的原因是设置了s