如何替换/自定义Android API类?

时间:2015-05-13 17:38:54

标签: android android-source

我还没有找到任何指导。

我想对Android API类(ViewPager)进行一些小改动,然后将其导入我的项目。我想自定义非公共方法的参数。

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

我在Android Studio中反编译它,尝试复制并粘贴该类,但它不起作用。我现在很无能为力。

我怎样才能实现它?

这是我试过的: enter image description here

2 个答案:

答案 0 :(得分:2)

您可以在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。

答案 1 :(得分:1)

你有的可能性:

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

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

Slowing speed of Viewpager controller in android

Android: velocity-based ViewPager scrolling