我怎样才能 replace/customize 一个 Android API class?

How can I replace/customize an Android API class?

我还找不到任何相关指导。

我想对 Android API class (ViewPager) 做一点小改动,然后将其导入到我的项目中。我想自定义一个不是public的方法的参数。

我试图扩展此 class 并覆盖该方法,但由于它受到保护,我无法从我的包中访问 super.method(),所以我不知道如何继续。

我在 Android Studio 中反编译了它,尝试复制并粘贴 class,但它不起作用。我现在一无所知。

如何实现?

这是我尝试过的:

您可以在AOSP项目中找到ViewPager的源码:https://android.googlesource.com/platform/frameworks/support/+/android-5.1.1_r2/v4/java/android/support/v4/view/ViewPager.java并复制到您的项目中。然后您可以根据需要对其进行修改和扩展。

但是,如果您学习本课程,您将无法从新 AOSP 版本的 ViewPager 获得更新。我强烈建议寻找另一种方法来实现您的目标,而无需像这样复制 ViewPager。

你拥有的可能性:

  • 扩展 class 并覆盖 public 或受保护的方法。
  • 从 Android 源代码复制并粘贴整个 class,进行必要的更改。
  • 使用反射更改行为。

关于 ViewPager 的速度:检查以下 SO 问题:

Slowing speed of Viewpager controller in android

Android: velocity-based ViewPager scrolling