1,代码适配
-
有一些情况下,我们需要去动态的设置控件的大小或者是控件的位置,比如dialog或者popupwindow的偏移量或者是显示的位置等等,这个时候在xml布局里就显得有点乏力,我们可以根据当前屏幕的大小属性来设置合适的数值。
-
有些时候我们会再代码中获取一个预留的位置。在不同屏幕上显示效果不好
-
代码获取宽高进行适配
2,获取宽高,动态设置
【1】DisplayMetrics第一种方法获取宽高
-
获取屏幕宽高
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
// 密度
float density = displayMetrics.density;
密度(每寸像素)
int densityDpi = displayMetrics.densityDpi;
//屏幕高
int heightPixels = displayMetrics.heightPixels;
//屏幕宽
int widthPixels = displayMetrics.widthPixels;
Configuration configuration = getResources().getConfiguration();
//屏幕最小宽 得到的是dp values-sw600dp 这里的600 就是和这个对比的 不常用
int smallestScreenWidthDp = configuration.smallestScreenWidthDp;
【2】DisplayMetrics第二种方法获取宽高
-
获取屏幕高宽
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
windowsHeight = metric.heightPixels;
windowsWight = metric.widthPixels;
-
动态改变布局
LinearLayout production_factory = (LinearLayout)findViewById(R.id.production_factory);
LayoutParams params = production_factory.getLayoutParams();
params.height = windowsHeight / 2;
production_factory.setLayoutParams(params);
【3】getWindowManager
-
获取宽高
int width = getWindowManager().getDefaultDisplay().getWidth();
int height = getWindowManager().getDefaultDisplay().getHeight();
tv1.setLayoutParams(new LayoutParams((int)(width*0.5), (int)(height*0.2)));
常规做法: 如果是自定义的控件, 没有使用xml布局文件时, 可以在代码中动态设置宽高
Android 屏幕适配,我写了9篇关于适配的详解。查看我的专栏
https://blog.csdn.net/cricket_7/article/category/9408535