自定义RatingBar,不同分辨率屏幕下图片拉伸或者显示不完整问题解决

时间:2021-07-26 07:38:30

1、需要两张评分图片ic_rating_highlight.png ic_rating_normal_white.png(宽高都是52px,且有内边距)

   将这两张图片添加到各分辨率文件夹下

   开发过程:

   1.1 根据设计图,1个星星约等于1/3指尖宽高,而指尖宽高取47dp,所以一个星星宽高取 47dp/3,即16dp

   1.2 根据dp与px的关系,在xxhdpi分辨率下,16dp对应的宽高为48px,所以星星切片应当在48px左右,并放到drawable/mipmap xxhdpi下

     在不同分辨率下即可进行自适应

2、drawable下添加dw_ratingbar_white.xml

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item
android:id="@android:id/background"
android:drawable="@mipmap/ic_rating_normal_white"/>
<item
android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/ic_rating_normal_white"/>
<item
android:id="@android:id/progress"
android:drawable="@mipmap/ic_rating_highlight"/> </layer-list>

3、values下styles.xml里添加

     <style name="bgWhiteRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/dw_ratingbar_white</item>
<item name="android:maxHeight">16dp</item>
<item name="android:minHeight">16dp</item>
</style>

4、评分条布局

 <!--星级-->
<RatingBar
android:id="@+id/rating_bar_home"
style="@style/bgWhiteRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginLeft="20dp"
android:isIndicator="true"
android:numStars="5"
android:stepSize="1"/>

附:

自定义RatingBar,不同分辨率屏幕下图片拉伸或者显示不完整问题解决