java - 我可以覆盖外部库中的方法吗?

标签 java android

我对 adnroid 有点陌生,所以寻求建议。

我正在尝试制作 2 个可以缩放的 imageView。出于这个原因,我实现了 https://github.com/chrisbanes/PhotoView库,使 imageView 完全可缩放,双击缩放等。

我想做的主要想法是从一个图像复制手势,并将这些手势应用到另一个图像(例如,如果第一个图像正在缩放,我希望另一个图像完全相同地缩放)。这样做的合乎逻辑的方法是为 photoView(库中的 ImageView )编写一个 setOnTouchListener,并在 onTouch 方法中调用其他 ImageView 和 dispachTouchEvent。但是写 setOnTouchListener 需要覆盖 onTouch 方法,这使得 photoView 的功能不起作用。

所以我的问题是,我什至可以重写库 mathods 吗?或者如果可以的话,也许这就是缺点,我失去了它的所有功能?如果我做不到,你们还有其他建议如何将手势从一个 imageView 复制到另一个吗?或者它可能会与其他可缩放图像库一起使用?使用外部库的主要目的不是重新发明整个可缩放的 imageView。

提前致谢!

PhotoView image = findViewById(R.id.photo); 
PhotoView image2 = findViewById(R.id.photo2);

image.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) { 
            image2.dispatchTouchEvent(motionEvent);
            return false;
        }
    });

最佳答案

您不能直接覆盖外部库中的方法。

但是,如果您要为 覆盖方法的类不是 final 并且您要覆盖的方法不是 final,那么就可以创建该类的子类了。

例如,如果 PhotoView 不是标有 final 的类,我可以创建如下内容:

public class CustomPhotoView extends PhotoView {

    @Override
    public void setOnTouchListener(OnTouchListener l) {
        super.setOnTouchListener(l);
        //Do stuff
    } 
}

本质上,这与您通过子类化 ImageView 其他 View 来创建自己的自定义 View 是一样的。

但您也可以创建 PhotoView 的分支或克隆,并直接对该 PhotoView 进行更改。之后,您使用自己的 PhotoView 实现而不是 Chris Banes 的实现。

关于java - 我可以覆盖外部库中的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54609090/

相关文章:

java - 使用 java 流设置并集和交集

java - Cassandra (Cassandra)的高可用性

java - 在 Java 中使 session 中的对象不可变

java - 如何返回集合

java - SQL 到 java 二维矩阵

java - 在 java.library.path 中找不到库

android - 应用程序因自定义 ListView 中的 NullPointerException 而崩溃

c# - 在unity3d中访问android jar

android - 如何将新成员添加到 Android 应用程序中的 MailChimp 列表?

javascript - 在 Android 浏览器或 WebView 内部检测