Attrs學習《致健忘的自己》

2021-07-29 23:17:25 字數 4176 閱讀 6626

2.簡單寫一下自定義的myview:

public class myview extends view 

public

myview(context context,

@nullable attributeset attrs)

@override

protected void

ondraw(canvas canvas)

3.布局檔案:

xml version=

"1.0"

encoding=

"utf-8"

?>

xmlns:

android

=""xmlns:

tools

=""xmlns:

mystudy

=""android

:layout_width=

"match_parent"

android

:layout_height=

"match_parent"

tools

:context=

"com.example.wangqing.studyattrs.mainactivity"

>

android

:id=

"@+id/id_my"

android

:layout_width=

"wrap_content"

android

:layout_height=

"wrap_content"

mystudy

:textsize=

"14sp"

mystudy

:textcolor=

"#ff22ff"

/>

布局檔案xmlns:mystudy=""就是對我們自定義的attrs引入,

mystudy

:textsize=

"14sp"

mystudy

:textcolor=

"#ff22ff"

屬性就是我們attrs定義的屬性

4.進入知識拓展:

001.兩個styleable,同時包含了相同的屬性custom,這時在編譯時會提示attribute 「***」 has already been defined,表示相同屬性重複定義:a.相同styleable name不能再同乙個attr.xml中重複定義,b.styleable name不一致attir name也不能重複定義,attr format屬性不影響重複定義結果。因此可以採用如下方法解決該問題

name="sample">

name="custom"

format="string|reference" />

declare-styleable>

name="sample1">

name="custom"

format="string|reference" />

declare-styleable>

name="custom"

format="string|reference" />

name="sample">

name="custom" />

declare-styleable>

name="sample1">

name="custom" />

declare-styleable>

002.attributeset與typedarray構造方法中的有個引數叫做attributeset(eg: myview(context context, attributeset attrs) )這個引數看名字就知道包含的是引數的集合,那麼我能不能通過它去獲取我的自定義屬性呢?

首先attributeset中的確儲存的是該view宣告的所有的屬性,並且外面的確可以通過它去獲取(自定義的)屬性,怎麼做呢?

其實看下attributeset的方法就明白了,下面看**。

public myview(context context, attributeset attrs)

public mytextview(context context, attributeset attrs) 

// ==>use typedarray ...

}

但是,在

android:layout_width="@dimen/dp100"

android:layout_height="@dimen/dp200"

這種情況時attributeset取得值就是乙個不知道的東西,而typedarray依然可以取得對應的值,所以typedarray

是用來簡化我們的工作的,再次建議大家使用typedarray

003.android自定義屬性詳解(網路貼上):

1. reference:參考某一資源id。

(1)屬性定義:

(2)屬性使用:

2. color:顏色值。

(1)屬性定義:

(2)屬性使用:

3. boolean:布林值。

(1)屬性定義:

(2)屬性使用:

4. dimension:尺寸值。

(1)屬性定義:

(2)屬性使用:

5. float:浮點值。

(1)屬性定義:

(2)屬性使用:

6. integer:整型值。

(1)屬性定義:

(2)屬性使用:

" android:drawable = "@drawable/id" 

android:pivotx = "50%" 

android:pivoty = "50%" 

android:framescount = "12" 

android:frameduration = "100"

/>

7. string:字串。

(1)屬性定義:

(2)屬性使用:

8. fraction:百分數。

(1)屬性定義:

(2)屬性使用:

"android:interpolator = "@anim/動畫id"

android:fromdegrees = "0"

android:todegrees = "360"

android:pivotx = "200%"

android:pivoty = "300%"

android:duration = "5000"

android:repeatmode = "restart"

android:repeatcount = "infinite"

/>

9. enum:列舉值。

(1)屬性定義:

(2)屬性使用:

"android:orientation = "vertical"

android:layout_width = "fill_parent"

android:layout_height = "fill_parent"

>

10. flag:位或運算。

(1)屬性定義:

注意:屬性定義時可以指定多種型別值。

(1)屬性定義:

(2)屬性使用:

致2015的自己

本來應該是1.1 日寫的文章,現在才開始寫,覺得在不抓緊時間寫的話就又會拖下去,所以趁早。這一年過得比較快,也比較渾渾噩噩就過去了7 個月 我是從 5月份從深圳辭職回來南寧工作的 但是回顧這幾個月的狀態真的是痛苦,莫名其妙的痛苦。1.工資低了。2.國企環境感覺像我這樣的性格內向的人有點彆扭。但是還是...

致過去的自己

如果能夠回到過去,與曾經的自己對話,你最想對過去的自己說些什麼呢?如果時光可以倒轉,過去的事情可以重新來過,你會有不同的做法嘛?時間彷彿總是騎著白馬,匆匆而過,用現實的繩索拉著我們跌跌撞撞,走過屬於自己獨一無二的生活。回想起童年那時候,我們能夠自信的並且喊出我們長大以後的夢想 我要當醫生,去拯救世間...

致過去的自己

如果能夠回到過去,與曾經的自己對話,你最想對過去的自己說些什麼呢?如果時光可以倒轉,過去的事情可以重新來過,你會有不同的做法嘛?時間彷彿總是騎著白馬,匆匆而過,用現實的繩索拉著我們跌跌撞撞,走過屬於自己獨一無二的生活。回想起童年那時候,我們能夠自信的並且喊出我們長大以後的夢想 我要當醫生,去拯救世間...