ratingbar簡單介紹
ratingbar是基於
seekbar
(拖動條)和
progressbar
(狀態條)的擴充套件,用星形來顯示等級評定,
在使用預設ratingbar時,使用者可以通過觸控/拖動/按鍵(比如遙控器)來設定評分,
ratingbar自帶有兩種模式
,乙個小風格
ratingbarstylesmall
,大風格為
ratingbarstyleindicator
,大的只適合做指示,不適用與使用者互動。
黃色星形為
自定義ratingbar
小綠色為自帶的
ratingbarstylesmall
大綠色為自
帶的ratingbarstyleindicator
通過設定 style="************x"進行設定切換(比如:style="?android:attr/ratingbarstyleindicator")
自定義ratingbar需要注意的地方
一般情況下,系統自帶的ratingbar是遠遠無法滿足開發需求的,我們根據自定乙個ratingbar,在開始實現自定義ratingbar之前,順帶說一下res目錄下放置目錄的區別:
在android sdk 1.5版本之前res目錄下面只有乙個drawable乙個目錄,在android sdk 1.6版本以後就出現了三個目錄,分別是drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,
(1)drawable-hdpi裡面存放高解析度的,如wvga (480x800),fwvga (480x854)
(2)drawable-mdpi裡面存放中等解析度的,如hvga (320x480)
(3)drawable-ldpi裡面存放低解析度的,如qvga (240x320)
(4)drawable-xhdpi裡面存放超大解析度的,至少960dp x 720dp
由於我們自定義實現的ratingbar裡面使用到的星形解析度比較低,所以一般情況下,我們把放到drawable-mdpi或者drawable-ldpi裡面。
自定義ratingbar的實現過程 首先
,根據自定乙個ratingbar的背景條,和放到同乙個目錄下面(比如drawable-mdpi),room_rating_bar.xml
<?xml version="1.0" encoding="utf-8"?>
backgroud:是用來填充背景的,和進度條非常類似,當我們設定最高評分時(android:numstars),系統就會根據我們的設定,來畫出以星星為單位的背景(假如android:numstars="5",就會畫出5顆灰色的星星)
progress:
是用來在背景基礎上進行填充的指示屬性(和進度條類似,第一進度位置)
secondaryprogress:
同progress一樣屬於第二進度位置(如果不定義這個,進度條拖動,每次就畫出一整顆星星(亮),第二進度(暗)沒有覆蓋掉第一進度之後的位置,從左往右是拖不出來n.5顆星星的,這樣評分效果就不完整)
其次,通過開始介紹,我們知道ratingbar的樣式是通過style來切換的,在android中,我們可以通過在styles.xml檔案中通過設定style屬性,來繼承我們需要自定控制項型別,如下styles.xml
<?xml version="1.0" encoding="utf-8"?>
通過 parent
屬性來選擇繼承的父類,我們這裡繼承ratingbar類。
重新定義
progressdrawable
屬性(ratingbar的背景條,和我們在首先裡面介紹的那樣)
maxheight和minheight可以根據我們畫素或者其他參考值來設定。
最後,在我們需要用到ratingbar的xml配置檔案裡面新增ratingbar控制項。
main.xml
附上原始碼:
自定義ratingbar實現
Android自定義控制項 自定義屬性
自定義屬性的過程 1.在res values資料夾中建立attrs的xml檔案。2.寫入標籤,定義子標籤attr,放入自定義屬性的名稱。format 可以用 來同時使用 1 reference 參考某一資源id 2 color 顏色值 3 boolean 布林值 4 dimension 尺寸值 帶有...
Android自定義View 自定義元件
自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...
Android自定義控制項之自定義View 二
效果如下圖 1 自定義ringview繼承view新增其構造方法並建立畫筆 public class ringview extends view protected boolean isrunning false public ringview context context public ring...