PhotoViewAttacher的boolean onFling(MotionEvent, MotionEvent, float, float)阻止我的OnSingleFlingListener的onFling方法被调用,除非当前的scale是最小值。
我从com.github.chrisbanes.photoview实现了OnSingleFlingListener。然而,由于onFling方法只对包可见,所以PhotoViewAttacher的onFling方法首先被调用。PhotoViewAttacher.onFling防止在代码时调用我的onFling方法。我需要调用我的除非scale > getMediumScale()。(当我的图像的宽度与窗口的宽度匹配时才调用scale == getMediumScale()。)我如何解决这个问题?我是否需要创建整个PhotoView包的副本并将< scale > DEFAULT_MIN_SCALE >d15scale > getMediumScale()>修改为公共的?
我的代码:
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;
}我希望在getScale() <= getMediumScale()时调用我的onFling。相反,只有在getScale() == DEFAULT_MIN_SCALE时才调用我的onFling方法。
发布于 2019-03-26 21:38:59
我决定解决这个问题。
如果(getScale()> getMediumScale() + .01f) { return false;}
https://stackoverflow.com/questions/54750496
复制相似问题