如何对Android源代码进行小的更改,并将其合并到您自己的项目中

时间:2013-04-18 14:13:19

标签: android open-source android-source android-datepicker

我想对Android标准TimePicker类进行一些小改动。具体来说,我正在尝试更改它,使其以15分钟为增量,而不是1分钟增量。

This post帮助我将分钟值的范围限制为{0,15,30,45},这在我的应用中是必需的。但正如我在后续评论中指出的那样,分钟微调器仍然将前一分钟显示为当前值-1,将下一分钟显示为当前值+ 1,这将创建一个草率感的用户界面。

我查看了相关的Android source code,看来我需要做的更改非常简单。但是当我尝试将源代码复制到我的项目中时,我得到了与package声明相关的大量错误,在哪里找到Widget,如何解析R.id变量等等。

所以我的问题是:

从Android源代码对给定类进行小改动并将其合并到您自己的项目中的最佳方法是什么?

在我的情况下,我只需要对TimePickerNumberPicker进行一些小的更改,但我不确定如何在我的项目中正确设置它。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

  

但是当我尝试将源代码复制到我的项目中时,我得到了与包声明相关的大量错误

您的源文件的目录需要与包名匹配。由于您无法覆盖android.widget.TimePicker,因此您需要将该类移至新包或为其指定新名称。

  

在哪里找到Widget

这意味着您已将TimePicker复制到其中一个软件包中。这很好,但是您需要为import从其原始包中引用的类添加适当的TimePicker语句。或者,您需要在TimePicker中保留(重命名)android.widget,并将此包添加到您的项目中。这是基本的Java。

  

如何解决R.id变量

如果TimePicker依赖于不属于Android SDK的资源,您还需要将这些资源从AOSP复制到您的项目中。

  

从Android源代码对给定类进行小改动的最佳方法是什么,并将其合并到您自己的项目中?

恕我直言,这在摘要中无法轻易回答。一般来说,你会做我上面列出的各种事情。

答案 1 :(得分:0)

最好关闭相关类的子类并覆盖您想要更改的方法。

在Java中,您可以在子类中执行以下操作:

  • 继承的字段可以直接使用,就像任何其他字段一样 领域。
  • 您可以在子类中声明一个与其名称相同的字段 超类中的那个,因此隐藏它(不推荐)。
  • 你可以 声明子类中不在超类中的新字段。
  • 继承的方法可以直接使用。
  • 您可以在子类中编写一个新实例方法,该方法与超类中的签名具有相同的签名,从而覆盖它。
  • 您可以在子类中编写一个新的静态方法,该方法与超类中的签名具有相同的签名,从而隐藏它。
  • 您可以在子类中声明不在超类中的新方法。
  • 您可以编写一个子类构造函数,以隐式方式或使用关键字super来调用超类的构造函数。

    More info on subclassing in Java