我对 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/