自定義控件從入門到精通(二)——組合控件

組合控件的目的是封裝公共模塊或者業(yè)務(wù)模塊。比如說(shuō)app的標(biāo)題欄,包括一些返回鍵等按鈕,自定義的控件,包含各個(gè)按鈕,并封裝一些接口,讓用戶實(shí)現(xiàn)這些接口。這樣不需要每個(gè)界面都將這些重寫一遍,大大提高了開(kāi)發(fā)效率。

實(shí)現(xiàn)的步驟主要是:

1.在attrs.xml聲明新的屬性。

2.在代碼構(gòu)造函數(shù)中取出新聲明的屬性,并且根據(jù)這些屬性,結(jié)合LayoutParams將各個(gè)控件添加入父view。

組合控件式繼承線程的常用布局的,比如RelativeLayout,LinerLayout等。繼承這些布局而不是直接繼承Viewgroup的好處是不用自己重寫onMeasure和onLayout方法,前提是你的布局不是奇異布局(比如說(shuō)流式布局)。所以跟我剛開(kāi)頭說(shuō)的一樣,適合于封裝一些業(yè)務(wù)控件。

我實(shí)現(xiàn)的自定義組合控件很簡(jiǎn)單,就是上面圖片,下面文字,我的目的是用在九宮格里。當(dāng)做完這個(gè)demo的時(shí)候,特別想跟大家分享一個(gè)學(xué)習(xí)自定義控件的思路,在學(xué)習(xí)自定義控件的過(guò)程中,看完涉及到的知識(shí)點(diǎn),然后根據(jù)自定義控件的種類每個(gè)類型都看一兩個(gè)demo后,趕緊動(dòng)手寫一些簡(jiǎn)單的,因?yàn)榧词购芎?jiǎn)單,也會(huì)涉及到view繪制的各個(gè)流程和一些常用的方法,這時(shí)你就會(huì)有一些成就感,而且對(duì)于掌握這個(gè)高逼格技術(shù)心里也有底了,下一步就可以找些那些高手做的復(fù)雜的自定義控件去研究了。

好了,上具體步驟:

1.在attrs.xml聲明新屬性。

2.在構(gòu)造函數(shù)中

publicItemView(Context context, AttributeSet attrs) {

super(context, attrs);

itemtextTextView=newTextView(getContext());

imgImageView=newImageView(getContext());

//獲得屬性

TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ItemView);

itemtext= ta.getString(R.styleable.ItemView_itemtext);

img= ta.getDrawable(R.styleable.ItemView_imgsrc);

//設(shè)置子控件的屬性

itemtextTextView.setText(itemtext);

itemtextTextView.setTextColor(Color.BLACK);

itemtextTextView.setGravity(Gravity.CENTER);

imgImageView.setImageDrawable(img);

//添加view
mimgParams=newLayoutParams(LayoutParams.MATCH_PARENT,200);

addView(imgImageView,mimgParams);

mTextParams=newLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);

addView(itemtextTextView,mTextParams);

}

很多屬性都可以寫到attrs.xml中聲明,在代碼中獲取后進(jìn)行設(shè)置。也可以直接在代碼中寫死,根據(jù)需求選擇。

3.使用


android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_alignParentStart="true"

android:layout_below="@+id/animViewbig"

android:orientation="vertical"

app:imgsrc="@mipmap/zly"

app:itemtext="照片">

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評(píng)論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,252評(píng)論 4 61
  • 1 隔著14000多公里的距離,我在異國(guó)的酒店里,給你打電話。 電話撥通了,嘟的一聲,又一聲。牽扯著我的神經(jīng)。 我...
    大千一墨閱讀 2,452評(píng)論 18 11
  • 不出我所料的一天,搬了很長(zhǎng)時(shí)間的教室,回到宿舍竟然還要搬,從三樓搬到一樓累到癱! ...
    離人不復(fù)閱讀 212評(píng)論 0 0
  • 你, 拂過(guò)了春, 淌過(guò)了夏, 經(jīng)過(guò)了秋, 歸寂于冬。 我, 于冬而生, 于秋而思, 于夏而酣, 于春綻放。 人生如...
    如若不逢春閱讀 356評(píng)論 0 0