法一:静态适配
从小屏幕到大屏幕为values-xhdpi 到values-xxxhdpi(优先级高于values):
values-xhdpi
values-xxhdpi
values-xxxhdpi
values-large
values-xlarge
横屏时(优先级高于values-land):
values-land-xhdpi
values-land-xxhdpi
values-land-xxxhdpi
values-large-land
values-xlarge-land
根据分辨率划分
xhdpi:2.0
hdpi:1.5
mdpi:1.0(基准)
ldpi:0.75
这意味着,如果你针对xhdpi的设备生成了一张200*200的图像,同样你应该为mdpi的设备生成一张100*100的图像,为ldpi生成75*75的图片资源。
方法二:动态适配
xml里设置padding,代码端通过控制Layout的padding来调整大小(1080*1620为屏幕的分辨率)。
DisplayMetrics dm = getResources().getDisplayMetrics();
int mScreenWidth = dm.widthPixels;
int mScreenHeight = dm.heightPixels;
float ratioWidth = (float) mScreenWidth / 1080;
float ratioHeight = (float) mScreenHeight / 1620;
float ratioMetrics = Math.min(ratioWidth, ratioHeight);
if (ratioMetrics < 1) {
LinearLayout layout = findViewById(R.id.tools);
layout.setPadding(0,0,0,0);
}