android自定義控制項基礎

2021-07-09 05:20:18 字數 1880 閱讀 6804

看了 這篇部落格後,自己對自定義控制項做的一些總結。

關於自定義控制項的建立,主要分為以下幾個步驟:

1. 在value資料夾下,建立attrs.xml檔案,在其中宣告 自定義控制項的名字以及各種屬性。

2. 建立自定義控制項的類檔案,通常是繼承view。重寫其中的幾個方法

a.在建構函式中,通過typearray獲取控制項的所有屬性,進行畫筆paint以及其他一些屬性初始化,獲取完畢後需要進行recycle。

在設定字型屬性的時候,涉及單位轉換,可以使用:

titletextsize = a.getdimensionpixelsize(  

attr, (int

typedvalue.complex_unit_sp, 25

, getresources().getdisplaymetrics()));

//預設標題字型大小25sp

b.重寫onmeasrue方法,這個方法的作用主要是用於計算出自定義控制項的寬和高。

一般都要先獲取控制項在布局檔案layout中自己設定的模式及寬高。(這是我自己的理解)

通過int widthmode = measurespec.getmode(widthmeasurespec);

int widthsize = measurespec.getsize(widthmeasurespec);

int heightmode = measurespec.getmode(heightmeasurespec);

int heightsize = measurespec.getsize(heightmeasurespec);

模式有3中,exactly(具體的android:layout_width="200dp"),

up_most(具體的android:layout_width="wrap_content"),

unspecified(

具體的不太懂 ,想多大 就多大

),其中的一些方法:

fontmetrics,用於獲取字型屬性panit.getfontmetrics

textutils.ellipsize,用於獲取text中的文字資訊。string msg = textutils.ellipsize(subtitletext, textpaint, right - left, textutils.truncateat.end).tostring();

c.重寫ondraw方法,進行自定義控制項的繪製。

其中的一些方法:

canvas.drawtext(msg, x, bottom - fm.descent, paint);繪製文字。

canvas.drawbitmap(imagebitmap, null, rect, paint);繪製。

d.設定一些介面,可以通過介面對自定義的屬性進行修改。

3.在布局檔案中使用自定義控制項,在開頭進行宣告。

4.關於自定義控制項的3個構造方法

在**裡new的話一般用乙個引數的,

寫在xml裡的 呼叫2個引數的 attr裡邊傳過來的是 xml裡邊對應的height width等引數,包括自己定義的引數,如果在xml裡邊寫入自定義控制項的話 必須要重寫2個引數的

建構函式

public myview(context context, attributeset attrs)  

第3個引數不熟,傳style的吧貌似

如果在code中例項化乙個view會呼叫第乙個建構函式,如果在xml中定義會呼叫第二個建構函式,而第三個函式系統是不呼叫的,要由view(我們自定義的或系統預定義的view,如此處的customtextview和button)顯式呼叫,比如在這裡我們在第二個建構函式中呼叫了第三個建構函式,並將r.attr.customizestyle傳給了第三個引數。

自己總結的一些,不知道對不對,有問題歡迎指出。

Android自定義控制項 基礎(五)

android開發中難免遇到需要自定義控制項的需求,有些是產品的要求在android標準控制項庫中沒有滿足要求的,有些是開發過程中沒有 的可復用,自己定義的。android已經提供了一系列基礎控制項和xml屬性來幫助你建立自定義控制項。view在android是最基礎的幾個控制項之一,所有的控制項均...

Android 自定義控制項

幹android也有一段的時間了,自定義這塊的東西覺得還是很有比較複習一下基礎的東西。自定義控制項和自定義元件基本上的使用都是在專案中基本的android控制項滿足不了需求的時候使用的。所以,如果要高出特別炫的特效,或者比較特殊的控制項排列方式,例如瀑布流,那麼就要好好學學自定義咯。首先,先簡單的介...

android自定義控制項

android自定義控制項 二 入門,繼承view 說說android 兩種為自定義元件新增屬性的使用方法和區別 自定義控制項的屬性 自定義控制項 今天花了3,4個小時看了自定義控制項,看 懂了,還沒有實踐,因為時間不夠,日後實踐。總結下 自定義控制項有3種方式 繼承已有控制項 繼承乙個容器控制項,...