Android自定義評分控件的完整實例
前言
無意中翻到幾年前寫過的一個RatingBar,可以拖拽,支持自定義星星圖片,間距大小等參數(shù)。
自定義參數(shù)
為了方便擴展,支持更多的樣式,這里將大部分參數(shù)設置成支持外部可配置的形式。
<declare-styleable name="RatingBarPlus"> <attr name="hideImageResource" format="reference"/> <attr name="showImageResource" format="reference"/> <attr name="starSpace" format="dimension"/> <attr name="maxStar" format="integer"/> <attr name="stepSize" format="float"/> <attr name="rating" format="float"/> <attr name="starWidth" format="dimension"/> <attr name="starHeight" format="dimension"/> </declare-styleable>
- hideImageResource 暗星星圖片id
- showImageResource 亮星星圖片id
- starSpace 星星間距
- maxStar 星星最大個數(shù)
- stepSize 評分步長,即能不能選中0.1個星
- rating 默認評分
- starWidth 星星寬度
- starHeight 星星高度
解析參數(shù)
創(chuàng)建星星位圖的時候需要根據(jù)配置的大小和圖片本身的寬高進行縮放。
繪制
繪制完成之后我們就可以動態(tài)設置評分來回顯之前的評分,但是經(jīng)常我們需要與控件交互,動態(tài)地設置分數(shù),所以我們還需要重寫onTouchEvent
方法完成事件處理。
事件處理
評分需要隨著手指的移動而動態(tài)變化,這里我們記錄下當前手指所在的位置,如果在星星上面,就算出當前位置距離星星左邊的長度占據(jù)整個星星寬度的百分比,然后根據(jù)設置的stepSize
參數(shù)動態(tài)微調總評分。
評分監(jiān)聽
我們還需要將評分暴露給外部,處理主動調用getRating()方法獲取之外,我們還可以提供一個監(jiān)聽接口,實時提供回調。
功能事件比較簡單,只需要在事件處理的時候,微調總評分完成之后回調一下數(shù)據(jù)就可以了。
if (onRatingChangeListener != null) { onRatingChangeListener.onRatingChange(rating); }
外部使用
ratingBar.setOnRatingChangeListener{ ratingText.text = "當前評分:${it}" }
總結
到此這篇關于Android自定義評分控件的文章就介紹到這了,更多相關Android自定義評分控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android Studio使用教程(四):Gradle基礎
這篇文章主要介紹了Android Studio使用教程(四):Gradle基礎,本文講解了什么是Gradle、安裝Gradle、Gradle 基本概念等內(nèi)容,需要的朋友可以參考下2015-05-05Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例
這篇文章主要介紹了Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例,Android中自帶的JSONObject非常好用,需要的朋友可以參考下2016-03-03