zoukankan      html  css  js  c++  java
  • 屏幕适配方式的介绍


        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>

  • 相关阅读:
    光脚丫学LINQ(025):如何验证DBML和外部映射文件
    使用LINQ to SQL将数据从一个数据库复制到另一个数据库
    用VS2010 C#写DLL文件并且调用(原创)
    linux初识
    Run Only One Copy Of Application
    SQL Server 2008开启远程连接
    用Visual C#做DLL文件
    SQL Server代理服务无法启动的处理方法(转载)
    QTP连接Oracle
    What's AJAX?
  • 原文地址:https://www.cnblogs.com/yegong0214/p/6274942.html
Copyright © 2011-2022 走看看