当前位置: 首页 > news >正文

指令汇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;
	}
}


相关文章:

  • 重磅推荐:Android_JNI整套视频分享
  • ReactiveCocoa概念解释进阶篇
  • Application.EnableVisualStyles();
  • 【转】.Net高级技术——IDisposable
  • [转]通过脚本添加登陆/注销/开机/关机脚本
  • 学习 AngularJS (三) module
  • Json序列化之.NET开源类库Newtonsoft.Json
  • C/C++ 库函数 是否调用 WinAPI
  • 构造汽车
  • 违反约束或者主外键删除数据
  • 不平衡学习方法理论和实战总结
  • Windows Cygwin Redis 安装(转)
  • apche commons项目简介
  • CAS (2) —— Mac下配置CAS到Tomcat(客户端)
  • Median of Two Sorted Arrays
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【译】理解JavaScript:new 关键字
  • Android 架构优化~MVP 架构改造
  • ES6系列(二)变量的解构赋值
  • javascript 总结(常用工具类的封装)
  • js中的正则表达式入门
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • React组件设计模式(一)
  • select2 取值 遍历 设置默认值
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 浮动相关
  • 关于springcloud Gateway中的限流
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 漂亮刷新控件-iOS
  • 如何合理的规划jvm性能调优
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 【云吞铺子】性能抖动剖析(二)
  • 2017年360最后一道编程题
  • #vue3 实现前端下载excel文件模板功能
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #每日一题合集#牛客JZ23-JZ33
  • (003)SlickEdit Unity的补全
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .gitignore文件设置了忽略但不生效
  • .Net 8.0 新的变化
  • .Net Remoting常用部署结构
  • .NET和.COM和.CN域名区别
  • .NET建议使用的大小写命名原则
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET中使用Protobuffer 实现序列化和反序列化
  • @Bean, @Component, @Configuration简析
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术