zoukankan      html  css  js  c++  java
  • Android 屏幕适配

    Android屏幕适配主要有五种方法:图片适配、布局适配、尺寸适配、权重适配、代码适配。前两种不太常用,后三种用的较多。

    图片适配

    • 开启4种分辨率的模拟器
    • drawable的多个目录下放置内容不同但命名相同的图片
    • 运行程序,查看在不同模拟器上的显示效果
    • 常规做法: 美工只做一套1280*720的图片,放置在drawable-xhdpi的目录下, ImageView宽高指定为确定的值, 不包裹屏幕

    布局适配

    • 针对特定分辨率,创建layout文件夹: layout-800x480, layout-land(表示横屏)
    • 800x480 和其他分辨率模拟器对比
    • 常规做法: 该方式不到万不得已,一般不用

    尺寸适配

    dp和px的关系:dp=px/设备密度
    设备密度(density)的获取:

    `float density = getResources().getDisplayMetrics().density;

       

    根据这个,我们可以写一个dp互转pxUtil类,代码如下:

    public static int dp2px(Context context,float dp)
    {
    float density=context.getResources().getDisplayMetrics().density;
    return (int) (dp*density+0.5f);//+0.5 四舍五入
    }

    public static float px2dp(Context context,int px){
    float density=context.getResources().getDisplayMetrics().density;
    return px/density;
    }

       

    • 常规设备密度: 320x240(0.75), 480x320(1), 800x480(1.5), 1280x720(2)
    • 设置dp, 在不同屏幕上查看显示的比例
    • 创建文件夹values-1280x720, dimens.xml中制定尺寸, 适配屏幕
    • 常规做法: 美工提供像素px, 我们使用前需要用px除以设备密度,转换成dp,写在布局文件中

    当然,使用dp不能解决所有问题,比如800x480(竖屏)和1280x720(横屏),这种情况就不能只设定一个dp值了,我们可以将一般的值写在dimens.xml中,同时创建一个values-1280x720文件夹将1280x720屏幕的dp值写在这个文件夹中的dimens.xml里面。这样,当遇到1280x720的设备就会去加载values-1280x720文件夹中dimens.xml的值。

    权重适配

    我们知道,只有在LinearLayout布局中,才有layout_weight属性。这个属性用来控制LinearLayout布局中各个子组件按照一定比例显示。一般说来,layout_weight值越大,所占的比例就越大。计算公式是:某个组件宽度(或高度)占LinearLayout的比例是:本组件weight / LinearLayout内所有组件weight值的和。

    代码适配

    int width = getWindowManager().getDefaultDisplay().getWidth();
    int height = getWindowManager().getDefaultDisplay().getHeight();

    tv1.setLayoutParams(new LayoutParams((int)(width*0.5), (int)(height*0.2)));

    常规做法: 如果是自定义的控件, 没有使用xml布局文件时, 可以在代码中动态设置宽高

  • 相关阅读:
    挂断电话——黑名单拦截
    上传文件 服务端模拟存储
    短信监听+短信拦截
    c#常用控件缩写(装)
    20121016学习笔记四
    c#日期时间格式化
    FTP服务器配置以及访问
    关于远程桌面设置和连接
    20121016学习笔记三
    电脑开机应用程序自动启动设置
  • 原文地址:https://www.cnblogs.com/yxx123/p/5244877.html
Copyright © 2011-2022 走看看