簡體   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