首页 > 代码库 > 屏幕适配方式的介绍

屏幕适配方式的介绍


    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>

屏幕适配方式的介绍