此文章只是个人笔记,未完待补
首先感谢大神文章m.blog.csdn.net/fesdgasdgasdg/article/details/52325590
1、使用适配时需要注意使用屏幕的实际分辨率,部分带虚拟键盘的手机的分辨率会比真实分辨率小
2、使用px做百分比适配可能会因为1原因导致适配失败,需要做的文件夹太多
3、选择dp的百分比方案做适配。以一种dp值为基础,大部分基于360dp,做dp百分比适配
4、图片适配,选择xhdpi图片,此屏幕密度下的图片可以适配多种不同密度机型,不会严重拉扯。
5、图片适配,找图先找对应手机dpi密度下的文件,如果没找到会向高密度找,找到原图尺寸会自动缩小, 如果还没找到会向下继续找,找到会自动放大
6、Values-w320dp和values-sw320dp区别。横屏时宽度变为原来的高度,sw会限制所有宽度为320,区别就是横竖屏时候限制
*获取屏幕的宽
*
* @param activity
* @return
*/
public static float getWith(Activity activity) {
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;
return width;
}
/**
*获取屏幕的高
*
* @param activity
* @return
*/
public static float getHeight(Activity activity) {
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
int heightPixels = metric.heightPixels;
return heightPixels;
}
/**
*获取屏幕真实的宽
*
* @param activity
* @return
*/
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public static float getRealWith(Activity activity) {
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metric);
int width = metric.widthPixels;
return width;
}
/**
*获取屏幕真实的高
*
* @param activity
* @return
*/
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public static float getRealHeight(Activity activity) {
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metric);
int heightPixels = metric.heightPixels;
return heightPixels;
}
/**
*获得屏幕宽度的dp值
*/
public static float getDp(Activity activity) {
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int widthPixels = displayMetrics.widthPixels;
float density = displayMetrics.densityDpi;//获取屏幕dpi
float dp = widthPixels * 160 / density;
return dp;
}
/**
*获取屏幕的dpi
*
* @param activity
* @return
*/
public static float getScreenDensity(Activity activity) {
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
float density = metric.densityDpi;
return density;
}
dp=width*160/dpi