先看一下首页的效果图:
一、在android机型适配中,app\src\main\res文件夹下面有文件夹:
mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi。
分别代表不同 dpi 屏幕所使用的图片。根据不同分辨率将图片放入相对应的路径下
蓝湖 - 高效的产品设计协作平台 lanhuapp.com/web/#/user/…
介绍一下蓝湖的使用:选中一张图片,在页面右侧顶部,选择android平台,可以直接下载各个分辨率的图片,点击下载当前切图或者查看所有切图,就可以把所有同一张图的所有分辨率下的图片都下载下来,然后根据路径,放入相应的文件目录下即可。
二、即使是这样,banner控件也需要指定一个高度,可以看到蓝湖上显示banner图的高度是222dp
答案:并不能完全解决图片拉伸问题
既然这样的话,只有在代码中动态改变banner控件的高度了,那么如何来指定呢?
重点拉咯!!!!
使用比例:
1.首先我们可以动态获取屏幕的宽度和高度 2.可以知道,蓝湖上显示的banner图的宽高比是:375/222 3.现在已知屏幕宽度width=getDisplayWidth();则动态获取banner图的宽度为width=getDisplayWidth(); 4.假设banner的高度为h 5.好了,列个算式:width/h=375/222,可得h=222/375*width;
解释一下:这样做的好处,图片的宽高比例永远是375/222,图片也不能变形的很夸张。
当然,UI在做banner图的时候就必须严格按照这个比例,不然不同比例的图片放上去,依然是会变形的,要配合好每一步哦!!!!!
获取屏幕宽高的代码如下:
/**
* 得到屏幕的宽度
*/
public static int getDisplayWidth() {
try {
WindowManager wm = (WindowManager) App.getInstance().getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getWidth();
} catch (Exception e) {
return 1080;
}
}
/**
* 得到屏幕的宽度
*/
public static int getDisplayHeight() {
try {
WindowManager wm = (WindowManager) App.getInstance().getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getHeight();
} catch (Exception e) {
return 1080;
}
}
设置banner控件的高度,代码如下:
private void setBannerHeight(BannnerViewHolder viewHolderTop){
int widthDensity = DensityUtil.getDisplayWidth();
LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) viewHolderTop.layoutTop.getLayoutParams(); //取控件textView当前的布局参数
float height = (float)225/(float)375 * (float) widthDensity;
linearParams.height = (int)height;// 控件的高强制设成20
linearParams.width = widthDensity;// 控件的宽强制设成30
viewHolderTop.layoutTop.setLayoutParams(linearParams); //使设置好的布局参数应用到控件
}