- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义的 SwipeRefreshLayout,里面有一个自定义的 GridView。我想根据捏/缩放手势更改该 GridView 的列号。我已经成功地实现了它。问题是,秤太敏感了。
例如,我有第 3-5 列。缩放到 3 或 5 很容易,但要缩放到 4 很难,因为缩放本身太敏感了。
这是我自定义的 SwipeRefreshLayout 类
/**
* This class contains fix from http://stackoverflow.com/questions/23989910/horizontalscrollview-inside-swiperefreshlayout
*/
public class CustomSwipeRefreshLayout extends SwipeRefreshLayout {
private int mTouchSlop;
private float mPrevX;
private ScaleGestureDetector mScaleGestureDetector;
private ScaleListener mScaleListener;
public CustomSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public void setScaleListener(Context context, ScaleListener scaleListener) {
this.mScaleListener = scaleListener;
mScaleGestureDetector = new ScaleGestureDetector(context, new MyOnScaleGestureListener());
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (mScaleGestureDetector != null) {
mScaleGestureDetector.onTouchEvent(event);
}
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
setEnabled(false);
if (mScaleListener != null) {
mScaleListener.onTwoFingerStart();
}
break;
case MotionEvent.ACTION_POINTER_UP:
setEnabled(true);
mPrevX = MotionEvent.obtain(event).getX();
if (mScaleListener != null) {
mScaleListener.onTwoFingerEnd();
}
break;
case MotionEvent.ACTION_DOWN:
mPrevX = MotionEvent.obtain(event).getX();
break;
case MotionEvent.ACTION_MOVE:
final float eventX = event.getX();
float xDiff = Math.abs(eventX - mPrevX);
if (xDiff > mTouchSlop) {
return false;
}
}
return super.onInterceptTouchEvent(event);
}
class MyOnScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
private static final String TAG = "MyOnScaleGestureListene";
@Override
public boolean onScale(ScaleGestureDetector detector) {
if (mScaleListener != null) {
// Too sensitive, must change to other approach
float scaleFactor = detector.getScaleFactor();
Log.d(TAG, "onScale: " + scaleFactor);
if (scaleFactor > 1F) {
mScaleListener.onScaleUp(scaleFactor);
} else if (scaleFactor < 1F) {
mScaleListener.onScaleDown(scaleFactor);
} else {
// no scale
}
}
return true;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
}
public interface ScaleListener {
void onTwoFingersStart();
void onTwoFingersEnd();
void onScaleUp(float scaleFactor);
void onScaleDown(float scaleFactor);
}
}
有什么办法可以降低ScaleGestureDetector.SimpleOnScaleGestureListener的灵敏度吗?如果没有办法,有没有办法解决?
这是一个显示问题的简短视频 https://www.youtube.com/watch?v=0MItDNZ_o4c
最佳答案
你应该有一个公差距离,这在Android世界中被称为“slop”。如果手势小于该容差,您应该忽略它。
private static final int SPAN_SLOP = 7;
...
@Override
public boolean onScale(@NonNull ScaleGestureDetector detector) {
if (gestureTolerance(detector)) {
// performing scaling
}
return true;
}
private boolean gestureTolerance(@NonNull ScaleGestureDetector detector) {
final float spanDelta = Math.abs(detector.getCurrentSpan() - detector.getPreviousSpan());
return spanDelta > SPAN_SLOP;
}
例如,您可以看到 @rallat 制作的展示开源应用程序.
在这里你可以找到source code和 presentation at GOTO Copenhagen 2016 .
关于java - 如何降低 android ScaleGestureDetector.SimpleOnScaleGestureListener 的灵敏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43043176/
使用interactjs ,有什么办法可以控制drag vhold的灵敏度吗?在 PC 上,使用鼠标触发保持事件非常容易。在 iPad/iPhone 上,屏幕灵敏度(主要是手指压力的变化)使得很难获得
我正在尝试让 ECG 查看器读取 DICOM 文件。 我获得了所有数据(如 channel 定义序列),还获得了每个 channel 的波形样本。我的问题是有一个标签( channel 灵敏度),我无
这个问题在这里已经有了答案: What is a NullReferenceException, and how do I fix it? (27 个答案) 关闭 5 个月前。 我是一个绝对的初学者
我在 R 中使用插入符号进行逻辑回归: ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10,
我已经实现了 SimpleOnGestureListener.onFling(),但我必须非常快地挥动才能触发它。有什么办法让它更灵敏吗? 提前致谢... 最佳答案 触发 onFling() 事件所需
我有一个相对简单的问题,我只是无法在任何地方找到解决方案。 有谁知道如何初始化 JScrollPane 插件( plugin website ),并具有更灵敏的滚动速度?默认速度太慢且缓慢,尤其是在更
我试图减慢 UICollectionView 中的滚动速度。一切都很好,细胞之间的距离也很好,但它移动得太快了。 如何调整滚动的灵敏度或速度? [编辑] 我忘了提到我已经尝试过: self.colle
我正在寻找一种在绘制签名时减慢鼠标按下移动速度的方法。 我认为这会让用户有更多的控制权。 有什么办法吗? 最佳答案 mousemove 事件由浏览器生成,因此您无法更改这些事件。 关于javascri
我正在使用 jQuery ui ressized,我(个人)发现它就像一个视频游戏,可以在您尝试调整元素大小时确定点击区域。 看起来命中区域是 div 边缘的单个像素! WT... 有人知道如何增加
我正在使用 PyML用于 SVM 分类。但是,我注意到当我使用 LOO 评估多类分类器时,结果对象不报告灵敏度和 PPV 值。相反,它们是 0.0: from PyML import * from P
我是一名优秀的程序员,十分优秀!