分类:
1.图片适配(在不同的像素密度的手机上加载不同文件夹中的图片)
2.dimens.xml适配(在不同的像素密度的手机上加载不同的dimens文件)
3.layout适配(在不同的像素密度的手机上加载不同的布局文件)
4.java代码适配(根据屏幕的像素比例设置宽高)
5.权重的适配(剩余空间进行适配)
1.图片适配(在不同的像素密度的手机上加载不同文件夹中的图片)
一般都是按照一个标准做一套图,占用应用程序的体积,1280*720,用一套图,会出现图片变形问题,但是小图变形明显,大图变形明显
总结:按照一个标准做一套图,将变形严重图片,做多种分辨率格式,放到不同的文件夹下去加载
2.dimens.xml适配(在不同的像素密度的手机上加载不同的dimens文件)
1920*1080 1dp = 3px 1080/3/2 = 180dp
1.res -> values-分辨率(1920x1080)
2.在values目录中创建dimens.xml,在其中设置相应控件的宽高
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="textview_width">180dp</dimen>
</resources>
3.在默认的values中也要设置相应的属性
4.在布局文件中使用
<TextView
android:layout_width="@dimen/textview_width"
android:layout_height="30dp"
android:background="#ff0000"
/>
3.layout适配(在不同的像素密度的手机上加载不同的布局文件),修改layout文件夹
操作类似dimens.xml布局
layout适配一般不用,特殊的手机,魅族 1920*1118
4.java代码适配(根据屏幕的像素比例设置宽高)
示例代码
tv = (TextView) findViewById(R.id.tv);
//1.获取屏幕的宽高
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
Log.i(tag , "width:"+outMetrics.widthPixels);
Log.i(tag, "height:"+outMetrics.heightPixels);
//2.获取屏幕宽高一半
//四舍五入,3.7 3 4 3.7+0.5 = 4.2 4
int width = (int) (outMetrics.widthPixels/2+0.5f);
int height = (int) (outMetrics.heightPixels/2+0.5f);
//3.给控件设置宽高
//w : 宽度
//h : 高度
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height);
//给控制设置属性了
tv.setLayoutParams(params);
5.权重的适配(剩余空间进行适配)
主要是通过权重来进行布局,比例