Android 多屏适配解决方式

2023-10-24 17:40

本文主要是介绍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。均没有採用京东的做法。

     适配后的文件:


    


转载于:https://www.cnblogs.com/gccbuaa/p/7375907.html

这篇关于Android 多屏适配解决方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/276763

相关文章

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能