繁体   English   中英

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

[英]How to make a small change to Android source code, and incorporate into your own project

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

这篇文章帮助我按照应用程序的要求将分钟值的范围限制为{0,15,30,45}。 但是,正如我在后续评论中指出的那样,分钟微调器仍将前一分钟显示为当前值-1,将下一分钟显示为当前值+ 1,这将创建一个马虎的用户界面。

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

所以我的问题是:

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

就我而言,我只需要对TimePickerNumberPicker进行一些小的更改,但是我不确定如何在我的项目中进行适当的设置。

感谢您的任何建议。

但是,当我尝试将源代码复制到项目中时,遇到了与包声明有关的无数错误

您的源文件的目录必须与程序包名称匹配。 并且由于您无法覆盖android.widget.TimePicker ,因此您将需要将该类移动到新的包中,或者给它一个新的名称。

在哪里找到小部件

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

如何解析R.id变量

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

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

恕我直言,这不能轻易地抽象地回答。 一般来说,您会执行上面列出的各种操作。

最好是将相关类子类化,并覆盖要更改的方法。

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

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

    有关Java子类化的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM