-
cannot resovle leftparams。。。怎么解決查看全部
-
reference:參考某一資源的id color:顏色值 boolean:布爾值 dimension:尺寸值 float:浮點(diǎn)值 integer:整型值 string:字符串 fraction:百分?jǐn)?shù) enum:枚舉值 flag:位或運(yùn)算查看全部
-
通用topbar查看全部
-
懶惰的程序猿,通過模板復(fù)用、接口回調(diào)來提高開發(fā)效率、降低耦合度查看全部
-
很不錯(cuò)的教程,大贊查看全部
-
講的很好,語速不快不慢,溫習(xí)了接口回調(diào)機(jī)制,贊贊查看全部
-
TOPBAR設(shè)計(jì)查看全部
-
(接上) (3)定義一個(gè)類似于setOnClickListener()方法給調(diào)用者使用 private topbarClickListener listener; public void setOnTopbarClickListener(topbarClickListener listener){ this.listener = listener; } 當(dāng)調(diào)用者調(diào)用setOnTopbarClickListener()就將調(diào)用者的listener和模板中的this.listener聯(lián)系在一起。 (4)為button設(shè)置點(diǎn)擊事件 leftButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { listener.leftClick(); } }); rightButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { listener.rightClick(); } }); 通過這種方法,當(dāng)點(diǎn)擊button時(shí),調(diào)用的是傳進(jìn)來的listerner.leftClick()和rightClick()。 也就是說,模板中(Topbar)的button不用關(guān)心具體的實(shí)現(xiàn),具體的實(shí)現(xiàn)由調(diào)用者完成。 (5)調(diào)用者將實(shí)現(xiàn)點(diǎn)擊操作的topbarClickListener接口當(dāng)做參數(shù)傳給模板。 topbar.setOnTopbarClickListener(new topbarClickListener() { public void rightClick() {具體實(shí)現(xiàn);} public void leftClick() {具體實(shí)現(xiàn);} }); 4. 添加一個(gè)設(shè)置自定義控件的接口 模板 public void setLeftButtonVisible(boolean visible){ if(!visible) leftButton.setVisibility(View.GONE); } 調(diào)用者:topbar.setLeftButtonVisible(false);查看全部
-
在xml中或代碼中使用控件 1. 先看使用系統(tǒng)控件的例子 <TextView android:layout_width="match_parent" 這里android其實(shí)是定義在xmlns中的系統(tǒng)屬性 xmlns:android="http://schemas.android.com/apk/res/android" xmlns是xml namespace 2. 同理,使用自定義控件 (1)自定義控件的屬性 xmlns:custom="http://schemas.android.com/apk/res/com.example.topbar" (2)使用自定義屬性 <com.example.topbar.Topbar android:id="@+id/topbar" android:layout_width="match_parent" android:layout_height="40dp" custom:leftBackground="#FFF000" custom:leftText="Back" custom:leftTextColor="#FFFFFF" 3. 使用接口回調(diào)機(jī)制為button添加點(diǎn)擊事件 (1)系統(tǒng)控件的原理 首先通過button.setOnClickListener(OnClickListener參數(shù))。這里的參數(shù)是一個(gè)接口類,里面包含了一個(gè)回調(diào),當(dāng)點(diǎn)擊button時(shí)就會(huì)執(zhí)行回調(diào)的方法onClick() rightButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); 因?yàn)檫@里的new OnClickListener()返回的是一個(gè)接口,所以叫做接口回調(diào)。 (2)仿照上面的例子,接下來定義一個(gè)類似于OnClickListener的接口 public interface topbarClickListener{ public void leftClick(); public void rightClick(); } (3)定義一個(gè)類似于setOnClickListener()方法給調(diào)用者使用查看全部
-
模板復(fù)用、接口回調(diào)查看全部
-
重寫控件,滿足要求 4. 把這些控件放在ViewGroup(Layout)中 (1)需要用到LayoutParams,這是一個(gè)Layout參數(shù) private LayoutParams leftParams, rightParams, tileParams; leftParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, TRUE); //這里的TRUE是RelativeLayout中的常量 這樣就創(chuàng)建了一個(gè)LayoutParams(layout屬性)——它是寬高自適應(yīng)、居左對(duì)齊的。 (2)最后調(diào)用addView()將leftButton以leftParams的形式加入到ViewGroup中 addView(leftButton, leftParams); (3)LayoutParams這個(gè)類要再說一下 它定義了布局的屬性,即控件是以什么屬性(寬高,位置)添加到ViewGroup中查看全部
-
重寫控件,滿足要求 1. 自定義一個(gè)Topbar類View繼承自RelativeLayout 如果Topbar UI模板(View)需要自定義屬性,其構(gòu)造函數(shù)就要使用public Topbar(Context context, AttributeSet attrs) 2. 定義UI模板中的三個(gè)控件,聲明要使用的屬性 private Button leftButton, rightButton; private TextView tvTitle; 3. 給這些控件賦值,將屬性和控件關(guān)聯(lián)起來。在構(gòu)造函數(shù)獲得在xml中自定義的屬性,并把這些屬性值賦給這些控件 (1)通過TypeArray這個(gè)數(shù)據(jù)結(jié)構(gòu),來存儲(chǔ)從xml中獲取的自定義屬性的值 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.Topbar); 其中obtainStyledAttributes(AttributeSet set, int[] attrs)第二個(gè)參數(shù)為xml定義的屬性集合,所以為R.styleable.Topbar 通過這種方法,把在xml自定義的屬性值映射到所定義的自定義屬性中去,然后返回TypeArray變量。 TypedArray類似于Map鍵值對(duì),這個(gè)變量包含了所有屬性和值的映射。 (2)從TypedArray中獲取屬性值 leftTextColor = ta.getColor(R.styleable.Topbar_leftTextColor, 0); 這里是通過下劃線的方式連接Topbar自定義屬性和屬性的名字,得到一個(gè)引用名。后面0是默認(rèn)值。 通過這種方法就從TypedArray中取出所有的屬性值,并賦值給相應(yīng)的變量。 (3)實(shí)例化控件 leftButton = new Button(context); rightButton = new Button(context); tvTitle = new TextView(context); (4)將前面獲得屬性值賦給這些控件 leftButton.setTextColor(leftTextColor); leftButton.setBackground(leftBackground); leftButton.setText(leftText);查看全部
-
在atts.xml中定義組件屬性 1. atts.xml文件中的<declare-styleable>標(biāo)簽是告訴系統(tǒng),下面是我們自己聲明的屬性名。 <declare-styleable name="Topbar"> 2. format為reference表示這個(gè)屬性值可以引用資源文件:如@drawable/... <attr name="leftBackground" format="reference|color"></attr>查看全部
-
1. 系統(tǒng)的空間View屬性是如何實(shí)現(xiàn)的(如圖)查看全部
-
設(shè)計(jì)步驟查看全部
舉報(bào)
0/150
提交
取消