如何覆盖布尔PhotoViewAttacher onFling(MotionEvent,MotionEvent,float,float)的限制?

时间:2019-02-18 15:27:11

标签: java android android-photoview

PhotoViewAttacher的{​​{1}}阻止我的boolean onFling(MotionEvent, MotionEvent, float, float)的{​​{1}}方法被调用,除非当前标度是最小。

我从OnSingleFlingListener实现了onFling。但是,由于OnSingleFlingListener方法仅在包中可见,因此首先调用com.github.chrisbanes.photoview的{​​{1}}方法。 onFling防止在PhotoViewAttacher时调用我的onFling方法。除非PhotoViewAttacher.onFling,否则我需要我的电话。 ({onFling当我的图像的宽度与窗口的宽度匹配时。)如何解决这个问题?我需要自己制作整个scale > DEFAULT_MIN_SCALE软件包的副本并修改scale > getMediumScale()使其公开吗?

我的代码:

scale == getMediumScale()

OnSingleFlingListener:

PhotoView

PhotoViewAttacher:

OnSingleFlingListener.onFling

我希望在public class BasicViewActivity extends AppCompatActivity implements DownloadCallback, OnSingleFlingListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { . . . return true; } 时呼叫我的package com.github.chrisbanes.photoview; public interface OnSingleFlingListener { boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY); } 。相反,仅在@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方法。

1 个答案:

答案 0 :(得分:1)

我决定解决这个问题。

  1. 我克隆了PhotoView包。
  2. 我将其源代码复制到了自己的程序包中。
  3. 我更改了上述一行(并添加了一个分数以防止浮点错误):

    if(getScale() > getMediumScale() + .01f) {
        return false;
    }