1. 图片适配(根据手机屏幕的像素密度加载不同文件夹中的图片)
手机屏幕的像素密度:一英寸中包含的像素点的个数
例如:480x800 的像素密度 = 480^2+800^2 开方 = 932.95 / 4 = 233.23dpi
在开发的时候一般不会在每个文件夹中放置一套图片,一般是确定一个分辨率制作一套图,然后按照 android 开发规则,让 android 自动适配其他分辨,如果有图片无法适配,再去制作相应的图片到不同的分辨率对应的目录中进行图片适配
2.dimens.xml 文件适配(根据手机屏幕的像素密度加载不同文件夹中的 dimens.xml )
values -> dimens.xml
主要用来适配,在 app 中适配固定宽高控件,也可以设置固定的距离操作
res-> values-1280x720 -> dimens.xml
<resources>
<dimen name="viewpagerheight">200dp</dimen>
</resources>
布局文件使用
<com.itheima.zhbj98.view.RoolViewPager
android:id="@+id/menunewsitempager_vp_viewpager"
android:layout_width="match_parent"
android:layout_height="@dimen/viewpagerheight"
></com.itheima.zhbj98.view.RoolViewPager>
3.layout 布局文件适配(根据手机屏幕的像素密度加载不同 layout 文件夹中的布局文件)
根据手机屏幕的像素密度加载不同 layout 文件夹中的布局文件
res -> layout-1280x720 -> 布局文件(名称保持一致)
4. 代码适配
1. 按比例适配
根据比例,设置在不同分辨率中比例显示的宽度(宽度在每个分辨率中都是不一样,但是占用的比例是一样的)
首先请求 200 在 320 分辨率中占用的比例,再去 1280x720 分辨率中求出在 720 中相应的比例占用的宽度
// 先求出 200 占用 320 的比例,然后求出比例在 720 中的宽度
//200/320 * 手机界面的宽度
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
int width = windowManager.getDefaultDisplay().getWidth();
slidingMenu.setBehindOffset(200 * width / 320);// 单位是 px
2. dp和px相互转换
创建工具类
public class DensityUtil {
/**
* 根据手机的分辨率从 dip 的单位 转成为 px( 像素 )
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density; // 获取手机的屏幕的密度
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px( 像素 ) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
5. 权重适配
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
android:orientation="horizontal"
android:weightSum="10"
>
<!-- weightSum : 将控件分成几份 -->
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:background="#FF0000" />
<TextView
android:layout_width="0dp"
android:layout_weight="7"
android:layout_height="wrap_content"
android:background="#00FF00" />
</LinearLayout>