自定义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"/>

附:

 

原文地址:https://www.cnblogs.com/jinglecode/p/5960790.html