• 指令汇B新闻客户端开发(六) 浅谈屏幕适配解决方案


         屏幕适配的问题,我相信很多大牛的经验远比我丰富,在此就简单的分享一下我所做的的屏幕适配方案,当然我说的是安卓方面的啦,嘿嘿,屏幕适配我们一般用1280*720的屏幕作为我们的主流开发屏,当然现在AndroidStudio上面可以直接看到所有种类的屏幕,大大方便了我们的开发。

        我们遵循的原则是不用AbsoluteLayout(绝对布局),多用相对布局&线性布局(权重), 要用dp,不用px。

        开发后期, 在不同分辨率屏幕上测试(480*800,1920*1080), 如果没出现太大问题(影响正常使用), 就可以上线。

    1、图片适配:不是很常用

    2、布局适配:不是很常用,  layout-800x480 专门适配480*800的屏幕

    3、 权重适配:android:weightSum="3"

    4、代码适配:获取屏幕宽高,动态计算控件

    int width=getWindowManager
    
    ().getDefaultDisplay().getWidth
    
    ();
    		
    		
    
    slidingMenu.setBehindOffset
    
    (width*200/320);// 设置预留屏幕的
    
    宽度
    5、尺寸适配:

        dp和px的关系: dp = px/设备密度


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

               320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)

    括号后面的就是计算出来的屏幕密度。
    我们可以在values->dimens.xml  中设置大小

    然后再新建一个文件夹:values-1280x720,当屏幕是1280*720的时候就优先加载这个文件夹的。


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


  • 相关阅读:
    安装一些好用的工具
    转:通过快键强制关闭 Ubuntu 上无响应的程序
    同步cm10.1源码时出现的一些错误的解决办法。
    repo sync的介绍翻译
    配置grub解决ubuntu12.04不能保存亮度和调节的问题
    给fcitx加上云拼音库
    自己安装配置ubuntu12.04过程(内容丰富)
    关于repo sync -j*的含义的猜测
    同步cm10.1的时候发生同步错误不能找到github上的文件
    Element-ui tree组件自定义节点使用方法
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314909.html
Copyright © 2020-2023  润新知