您好,登錄后才能下訂單哦!
今天小編給大家分享一下Android如何自定義評(píng)分控件的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(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 星星最大個(gè)數(shù)
stepSize 評(píng)分步長(zhǎng),即能不能選中0.1個(gè)星
rating 默認(rèn)評(píng)分
starWidth 星星寬度
starHeight 星星高度
創(chuàng)建星星位圖的時(shí)候需要根據(jù)配置的大小和圖片本身的寬高進(jìn)行縮放。
繪制完成之后我們就可以動(dòng)態(tài)設(shè)置評(píng)分來回顯之前的評(píng)分,但是經(jīng)常我們需要與控件交互,動(dòng)態(tài)地設(shè)置分?jǐn)?shù),所以我們還需要重寫onTouchEvent
方法完成事件處理。
評(píng)分需要隨著手指的移動(dòng)而動(dòng)態(tài)變化,這里我們記錄下當(dāng)前手指所在的位置,如果在星星上面,就算出當(dāng)前位置距離星星左邊的長(zhǎng)度占據(jù)整個(gè)星星寬度的百分比,然后根據(jù)設(shè)置的stepSize
參數(shù)動(dòng)態(tài)微調(diào)總評(píng)分。
我們還需要將評(píng)分暴露給外部,處理主動(dòng)調(diào)用getRating()方法獲取之外,我們還可以提供一個(gè)監(jiān)聽接口,實(shí)時(shí)提供回調(diào)。
功能事件比較簡(jiǎn)單,只需要在事件處理的時(shí)候,微調(diào)總評(píng)分完成之后回調(diào)一下數(shù)據(jù)就可以了。
if (onRatingChangeListener != null) { onRatingChangeListener.onRatingChange(rating); }
ratingBar.setOnRatingChangeListener{ ratingText.text = "當(dāng)前評(píng)分:${it}" }
以上就是“Android如何自定義評(píng)分控件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。