gpt4 book ai didi

java - 如何覆盖 boolean PhotoViewAttacher onFling(MotionEvent, MotionEvent, float, float) 的限制?

转载 作者:行者123 更新时间:2023-12-02 10:14:58 31 4
gpt4 key购买 nike

PhotoViewAttacherboolean onFling(MotionEvent, MotionEvent, float, float)阻止我的OnSingleFlingListeneronFling除非当前比例是最小值,否则不会调用该方法。

我实现了OnSingleFlingListener来自com.github.chrisbanes.photoview 。然而,自从onFling方法仅包可见,PhotoViewAttacheronFling方法首先被调用。 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时调用方法.

最佳答案

我决定解决这个问题。

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

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

关于java - 如何覆盖 boolean PhotoViewAttacher onFling(MotionEvent, MotionEvent, float, float) 的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750496/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com