Android 多屏适配解决方式
1.主流手机必要測量的參数(通过详细的方法。測量出,须要測试手机的 以下的这些參数,我们主要使用的仅仅是 screenwidth 这个參数,其它參数仅仅是帮助我们更好的理解
屏幕适配)
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5/2.0)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240/320)
int screenWidth = (int) (width / density);//屏幕宽度(dp)
int screenHeight = (int) (height / density);//屏幕高度(dp)
AppContext.getAppContext().setDpHeight(screenWidth);
AppContext.getAppContext().setDpWidth(screenHeight)
Log.i("pixel", "width:" + width + "height:" + height + " density:" + density + " densitydpi" + densityDpi);
详细手机型号,相应的输出參数
华为 ht:960 density:1.5densitydpi240 screenWidth360 screenHeight640
米2 +++width:720 height:1280 density:2.0 densitydpi320 screenWidth360 screenHeight640
HM1s +++width:720 height:1280density:2.0 densitydpi320 screenWidth360 screenHeight640
MI 3 +++width:1080 height:1920density:3.0 densitydpi480 screenWidth360 screenHeight640
GT-I9507v +++width:1080 height:1920density:3.0 densitydpi480 screenWidth360 screenHeight640
荣耀3c +++width:720 height:1280 density:2.0 densitydpi320 screenWidth360 screenHeight640
华为 G730-U00 +++width:540 height:960 density:1.5 densitydpi240 screenWidth360 screenHeight640
华为 A199 +++width:720 height:1280density:2.0 densitydpi320 screenWidth360 screenHeight640
努比亚Nx507J +++width:1080 height:1920 density:3.0 densitydpi480 screenWidth360 screenHeight640
联想K910 +++width:1080 height:1920 density:3.0 densitydpi480 screenWidth360 screenHeight640
华为P6 +++width:720 height:1184 density:2.0 densitydpi320 screenWidth360 screenHeight592
Coolpad 8675 width:720 height:1280 density:2.0 densitydpi320 width 360 height 640
华为 G520 +++width:480 height:854 density:1.5 densitydpi240 screenWidth320 screenHeight569
HTC T528w +++width:480 height:800density:1.5 densitydpi240 screenWidth320 screenHeight533
三星 N7000 width:800height:1280 density:2.0densitydpi320 width 400 dp height 640 dp
2.依据google api 提供的
适配命名优先级,国家,sw參数dp 等等 ,类似 values-1920x1080 这样的书写方式,官方api上没有详细进行说明。可是经过測试的却能够使用这样的方式进行适配,缺点就是
须要定义非常多类似这种配置參数。
3.第三点。须要在项目values -dimens(基础为系统默认提供),写下详细的适配參数,因为考虑到如今收据的screenwidth 都是在320dpi之上。所以。我们项目中使用1dp=2px 作为基础dimens适配參数,这样
我们就须要依据不同的手screenwidth建立不同的 sw目录
sw320dp
sw360dp(较多)
sw400dp
sw480dp(市面上较少)
4.依据基础适配參数320dp,假设我们须要适配360dp则须要,使用(360/320)*基础dimens參数,一側类推,假设是400dp适配,则使用(400/320)*基础dimens參数
5.依据不同的适配须要,首先在基础dimens中进行配置,然后。測试各个手机适配情况进行对应的调整
总结:之前适配。是从网上找的一段代码。经全部的适配条件。依据比值(0.75/1/1.5/2)事先计算好。然后须要适配的地方使用自己计算好的參数。
这样适配肯定是不行,
后期维护成本较高,适配效果不够精细。
以上都是手动敲上去的,。由于之前做适配,没去读google api 造成走了非常大的弯路。
google api 多屏适配上面写的都是清清楚楚的,我们參照各市面上几个较有名的apk,都是这样实现的,京东的apk大家能够反编译看看,里面的适配使用了5种之多。(这是非常笨的方式)。淘宝。微信,Facebook。sina client。均没有採用京东的做法。
适配后的文件:
Android 多屏适配解决方式的更多相关文章
- Unity与Android刘海屏适配
本周学习Unity与Android刘海屏适配 关于刘海屏适配部分 网上有很多教程 这里只是做一下整理 https://blog.csdn.net/xj1009420846/article/detail ...
- Android刘海屏适配 ----- ImmersionBar
android 4.4以上沉浸式状态栏和沉浸式导航栏管理,适配横竖屏切换.刘海屏.软键盘弹出等问题,可以修改状态栏字体颜色和导航栏图标颜色,以及不可修改字体颜色手机的适配,适用于Activity.Fr ...
- android程序报错“error launching activity com.android.ddmlib.shellcommandunresponsiveexception”的解决方式
今天在调试android程序的时候,因为是NDK开发,要先编译.so库再打包下载到android模拟器,所以花费的时间比較长.控制台就会报例如以下错误: error launching activit ...
- Android 之UI自适应解决方式
1.概况 作为Android开发者,最头疼的莫过于让自己开发的程序在不同终端上面的显示效果看起来尽量一致(当然.假设要充分利用大屏幕的优势另当别论).在全球范围内来讲.android有着数以亿计的设备 ...
- win8装win7出现蓝屏的解决方式
今天用PE装系统,在进入PE前会出现蓝屏: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzAxODcyMQ==/font/5a6L5L2T/fo ...
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...
- 【转】Android横竖屏切换问题
Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...
- Android横竖屏切换总结
Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...
- Android横竖屏切换处理
Android横竖屏要解决的问题应该就两个: 1.布局问题:2.重新载入问题 一.布局问题: 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你 ...
随机推荐
- SAE J1850 VPW Implement
---恢复内容开始--- OBDII Interface Project When I can ever find enough time away from schoolwork, I try to ...
- ubuntu安装LDAP
参考文献: https://help.ubuntu.com/12.04/serverguide/openldap-server.html(最主要的) http://www.linuxidc.com/L ...
- 蜗牛—ORACLE基础之学习(二)
如何创建一个表,这个表和还有一个表的结构一样但没有数据是个空表,旧表的数据也插入的 create table newtable as select * from oldtable 清空一个表内的数据 ...
- Revit API画垂直于风管的风管
start /// <summary> /// 选择风管与风管外一点,画与风管垂直的风管. /// </summary> [Transaction(TransactionMod ...
- AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve
本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 ...
- 用格式工厂将mts文件转换成其它格式flv,mpg失败
通常情况下,是由帧速率的改变引起的! 看一看你的MTS帧速率是多少,则转换成FLV时,帧速率要一样!---------- 这是非常重要的!!!
- ASP.NET MVC:Form Authentication 相关的学习资源
看完此图就懂了 看完下面文章必须精通 Form authentication and authorization in ASP.NET Explained: Forms Authentication ...
- 深入浅出!从语义角度分析隐藏在Unity协程背后的原理
Unity的协程使用起来比较方便,但是由于其封装和隐藏了太多细节,使其看起来比较神秘.比如协程是否是真正的异步执行?协程与线程到底是什么关系?本文将从语义角度来分析隐藏在协程背后的原理,并使用C++来 ...
- TX1 flash backup & restore
备份:耗时2.5小时 ./tegraflash.py --bl cboot.bin --applet nvtboot_recovery.bin --chip 0x21 --cmd "read ...
- [转]小心PHP的类定义顺序与继承的问题
FROM : http://www.pakey.net/blog/php-class-shunxu.html 以下代码的运行环境均为PHP5.3.11先来看一段代码 <?php class A ...