手机制造商:Xiaomi
手机型号:MI NOTE LTE
系统版本:4.4.4
imei:867993025592278
屏幕像素:1080*1920
密度 density:2
密度 densityDpi:440
字体大小:2.75
请问这个手机适配时走的是哪个drawable和values目录?
假如一个图片的高度是24px,在这个手机上又显示多高?
还有这个手机:
手机制造商:motorola
手机型号:Moto X Pro
系统版本:5.0.2
屏幕像素:1440*2392
密度 density:3
密度 densityDpi:560
手机制造商:HUAWEI
手机型号:HUAWEI Y511-T00
系统版本:4.2.2
屏幕像素:480*854
密度 density:1
密度 densityDpi:240
1,xml布局解决。
2,代码解决。(个人推荐第二种)
3,将RatingBar换成ImageView,一劳永逸
第一种方式:能解决正规分辨率下的适配,但是android机型真是不敢恭维,太NM恶心了。
1,分别在drawable目录下放置对应的图片。
2,写个样式
<style name="move_home_rb_score" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/movie_home_rb_score</item>
// 不同values目录下score的高度直接写成图片的高度(px)
<item name="android:minHeight">@dimen/score</item>
<item name="android:maxHeight">@dimen/score</item>
</style>
第二种:
直接获取对应图片的高度,然后设置图片的高度。
try {
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_score_press);
scroeHeight = bmp.getHeight();
} catch (Exception e) {
e.printStackTrace();
}
在需要的地方设置LayoutParams 记得图片只需要初始化一次就可以了。
if(scroeHeight!=0){
LinearLayout.LayoutParams llp = (LayoutParams) holder.rb_score.getLayoutParams();
llp.width = -2;// 包裹内容
llp.height = scroeHeight;
holder.rb_score.setLayoutParams(llp);
}