Android自定義評分控件的完整實(shí)例
前言
無意中翻到幾年前寫過的一個RatingBar,可以拖拽,支持自定義星星圖片,間距大小等參數(shù)。

自定義參數(shù)
為了方便擴(kuò)展,支持更多的樣式,這里將大部分參數(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 默認(rèn)評分
- starWidth 星星寬度
- starHeight 星星高度
解析參數(shù)

創(chuàng)建星星位圖的時候需要根據(jù)配置的大小和圖片本身的寬高進(jìn)行縮放。
繪制

繪制完成之后我們就可以動態(tài)設(shè)置評分來回顯之前的評分,但是經(jīng)常我們需要與控件交互,動態(tài)地設(shè)置分?jǐn)?shù),所以我們還需要重寫onTouchEvent方法完成事件處理。
事件處理

評分需要隨著手指的移動而動態(tài)變化,這里我們記錄下當(dāng)前手指所在的位置,如果在星星上面,就算出當(dāng)前位置距離星星左邊的長度占據(jù)整個星星寬度的百分比,然后根據(jù)設(shè)置的stepSize參數(shù)動態(tài)微調(diào)總評分。
評分監(jiān)聽
我們還需要將評分暴露給外部,處理主動調(diào)用getRating()方法獲取之外,我們還可以提供一個監(jiān)聽接口,實(shí)時提供回調(diào)。
功能事件比較簡單,只需要在事件處理的時候,微調(diào)總評分完成之后回調(diào)一下數(shù)據(jù)就可以了。
if (onRatingChangeListener != null) {
onRatingChangeListener.onRatingChange(rating);
}外部使用
ratingBar.setOnRatingChangeListener{
ratingText.text = "當(dāng)前評分:${it}"
}總結(jié)
到此這篇關(guān)于Android自定義評分控件的文章就介紹到這了,更多相關(guān)Android自定義評分控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Manifest中meta-data擴(kuò)展元素數(shù)據(jù)的配置與獲取方式
這篇文章主要介紹了Android Manifest中meta-data擴(kuò)展元素數(shù)據(jù)的配置與獲取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
在Android中如何使用DataBinding詳解(Kotlin)
這篇文章主要給大家介紹了關(guān)于在Android中如何使用DataBinding(Kotlin)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Android開發(fā)調(diào)用WebService的方法示例
這篇文章主要介紹了Android開發(fā)調(diào)用WebService的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android調(diào)用WebService的原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下2017-10-10
Android AutoCompleteTextView控件基本用法示例
這篇文章主要介紹了Android AutoCompleteTextView控件基本用法,結(jié)合實(shí)例形式分析了AutoCompleteTextView控件的功能、使用方法及相關(guān)操作步驟,需要的朋友可以參考下2016-06-06
Android實(shí)現(xiàn)用文字生成圖片的示例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)用文字生成圖片的示例代碼,這里整理了詳細(xì)的代碼,非常具有實(shí)用價值,需要的朋友可以參考下2017-08-08
Android實(shí)現(xiàn)的數(shù)字格式化用法示例
這篇文章主要介紹了Android實(shí)現(xiàn)的數(shù)字格式化用法,結(jié)合實(shí)例形式分析了Android數(shù)學(xué)運(yùn)算中數(shù)字格式化輸出的相關(guān)技巧,需要的朋友可以參考下2016-08-08
Android Studio報錯Manifest merger failed with multiple errors
這篇文章主要介紹了Android Studio報錯Manifest merger failed with multiple errors2017-10-10
Android自定義StepView仿外賣配送進(jìn)度
這篇文章主要為大家詳細(xì)介紹了Android自定義StepView仿外賣配送進(jìn)度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android RecyclerView 基礎(chǔ)知識詳解
本文主要介紹Android RecyclerView的資料,這里對RecyclerView 的基礎(chǔ)知識做了詳細(xì)講解,并附簡單示例代碼幫助大家學(xué)習(xí)參考,有需要的小伙伴可以參考下2016-09-09

