屏幕适配:有几种方式啦(五种)
1:图片适配
需要准备不同的图片资源,系统根据屏幕尺寸自动加载图片(drawable-xhdpi ...)
2:布局适配
需要适配对应屏幕的布局 创建新的布局文件 layout-800x480 把对应的布局加载进去
3:比重适配
设置权重比例设置 (实用于线性布局)
4:dimension适配
设置对应屏幕的dimens资源 dp sp values-800x480 下 dimens 资源
5:代码适配
在代码中获取手机屏幕的宽高;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取手机屏幕的宽度
int widthPixels = getResources().getDisplayMetrics().widthPixels;//宽度
int heightPixels = getResources().getDisplayMetrics().heightPixels;//高度
float density = getResources().getDisplayMetrics().density;//密度
int densityDpi = getResources().getDisplayMetrics().densityDpi;//像素密度
Log.i(TAG,"widthPixels:"+widthPixels);
Log.i(TAG,"heightPixels:"+heightPixels);
Log.i(TAG,"density:"+density);
Log.i(TAG,"densityDpi:"+densityDpi);
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ll.getLayoutParams();
params.width = widthPixels/4;
params.height = heightPixels;
//设置布局参数
ll.setLayoutParams(params);
}
px和dp的转换
/**
* 像素转换的工具类
*/
public class Dp2PxUtils {
//dp转换成px
public static int dp2px(Context context,int dp){
return (int)(dp * context.getResources().getDisplayMetrics().density + 0.5);
}