PhotoViewAttacher
的boolean onFling(MotionEvent, MotionEvent, float, float)
阻止调用我的OnSingleFlingListener
的onFling
方法,除非当前比例为最小。
我从OnSingleFlingListener
实现了com.github.chrisbanes.photoview
。但是,由于onFling
方法仅在包中可见,因此首先调用PhotoViewAttacher
的onFling
方法。 PhotoViewAttacher.onFling
防止在onFling
时调用我的scale > DEFAULT_MIN_SCALE
方法。我需要我的电话,除非scale > getMediumScale()
。 (当图像的宽度与窗口的宽度匹配时,为scale == getMediumScale()
。)如何解决这个问题?我需要自己制作整个PhotoView
软件包的副本,然后将OnSingleFlingListener.onFling
修改为公开吗?
我的代码:
public class BasicViewActivity extends AppCompatActivity implements DownloadCallback, OnSingleFlingListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
. . .
return true;
}
OnSingleFlingListener:
package com.github.chrisbanes.photoview;
public interface OnSingleFlingListener {
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);
}
PhotoViewAttacher:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (mSingleFlingListener != null) {
if (getScale() > DEFAULT_MIN_SCALE) {
return false;
}
. . .
return mSingleFlingListener.onFling(e1, e2, velocityX, velocityY);
}
return false;
}
我想在
onFling
时调用我的getScale() <= getMediumScale()
。相反,仅当onFling
时才调用我的getScale() == DEFAULT_MIN_SCALE
方法。 最佳答案
我决定解决它。
我克隆了PhotoView包。
我将其源代码复制到自己的程序包中。
我更改了上述一行(并添加了一个分数以防止浮点错误):
if(getScale() > getMediumScale() + .01f) {
return false;
}
关于java - 如何覆盖 boolean PhotoViewAttacher onFling(MotionEvent,MotionEvent,float,float)的限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54750496/