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

相关文章

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

java中4种API参数传递方式统一说明

《java中4种API参数传递方式统一说明》在Java中,我们可以使用不同的方式来传递参数给方法或函数,:本文主要介绍java中4种API参数传递方式的相关资料,文中通过代码介绍的非常详细,需要的... 目录1. 概述2. 参数传递方式分类2.1 Query Parameters(查询参数)2.2 Path

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)