歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android實戰技巧之組合控件

Android組合控件是自定義控件的一種,只不過它是由其他幾個原生控件組合而成,故名組合控件。

在實際項目中,GUI會遇到一些可以提取出來做成自定義控件情況。

一個自定義控件的好處就是把一些需要模塊化的UI和邏輯放在一起,做到了高內聚,向其他模塊提供接口並很少
 依賴外界,這樣就是低耦合。一個自定義控件就是一個封閉的王國,這裡由你掌控。

上述是我自己的一個體會,想必大家也會常做自定義控件吧,就像邏輯部分的模塊化一樣。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

下面我要做一個例子,請看完成圖。


下面一排圖片加文字就是組合控件了,我是怎麼做的呢?

其實這裡用到了兩個組合控件,一個是圖片+文字,我把它叫一個Item,而三個在一起就是另一個控件了。

重點看這個Item,它有自己的屬性如圖片、文字、圖片大小、文字大小、不透明度等等。這些把它定義在attr文件中,然後在xml文件中

配置,就像我們用原生控件一樣。

先看attr文件。

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.         <declare-styleable name="LevelMenuItem">  
  4.         <attr name="text" format="string" />  
  5.         <attr name="text_color" format="color"/>  
  6.         <attr name="text_size" format="dimension" />          
  7.         <attr name="image_src" format="reference"/>  
  8.         <attr name="image_bg" format="reference"/>  
  9.         <attr name="image_alpha" format="integer" />  
  10.         <attr name="image_height" format="dimension"></attr>  
  11.         <attr name="image_width" format="dimension" />  
  12.     </declare-styleable>  
  13. </resources>  
這個文件在values下,和string文件同級。把你自己要定義的屬性都寫在這裡吧。format是屬性的“單位”,如果你要問有多少中format呀?答案在這裡
有了屬性了,下面看看布局文件level_menu_item.xml。
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.         <ImageView  
  7.             android:id="@+id/image_item"  
  8.             android:layout_width="fill_parent"  
  9.             android:layout_height="fill_parent"  
  10.             android:scaleType="fitCenter"  
  11.             />  
  12.          <TextView  
  13.             android:id="@+id/tv_item"  
  14.             android:layout_width="fill_parent"  
  15.             android:layout_height="wrap_content"  
  16.             android:gravity="center_horizontal"  
  17.             android:textColor="#23ffffff"  
  18.             android:textSize="25sp"   
  19.          />      
  20. </LinearLayout>  
這裡唯一值得一說的是文本的顏色。大家看見他是8位的,前兩位是表示不透明度的,後六位是表示顏色的,三色,范圍都是00~ff。

如果在java中設置顏色,需要這樣。

  1. setTextColor(0x23ffffff);  

關於不透明度,一般美工會定義。有些要求不透明如30%這樣的,可以用整型換算一下。00~ff對應十進制為0~255,那麼30%就是255x0.3=76.5,用科學計算機換算為4c。

更多顏色相關請看《Android中設置文本顏色的三種辦法》見 http://www.linuxidc.com/Linux/2012-04/58697.htm

Copyright © Linux教程網 All Rights Reserved