自定义RatingBar,不同分辨率屏幕下图片拉伸或者显示不完整问题解决
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
1 <?xml version="1.0" encoding="utf-8"?> 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <item 5 android:id="@android:id/background" 6 android:drawable="@mipmap/ic_rating_normal_white"/> 7 <item 8 android:id="@android:id/secondaryProgress" 9 android:drawable="@mipmap/ic_rating_normal_white"/> 10 <item 11 android:id="@android:id/progress" 12 android:drawable="@mipmap/ic_rating_highlight"/> 13 14 </layer-list>
3、values下styles.xml里添加
1 <style name="bgWhiteRatingBar" parent="@android:style/Widget.RatingBar"> 2 <item name="android:progressDrawable">@drawable/dw_ratingbar_white</item> 3 <item name="android:maxHeight">16dp</item> 4 <item name="android:minHeight">16dp</item> 5 </style>
4、评分条布局
1 <!--星级--> 2 <RatingBar 3 android:id="@+id/rating_bar_home" 4 style="@style/bgWhiteRatingBar" 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content" 7 android:layout_gravity="bottom" 8 android:layout_marginLeft="20dp" 9 android:isIndicator="true" 10 android:numStars="5" 11 android:stepSize="1"/>
附: