Android对于不同分辨率的支持

Android屏幕适配:支持不同分辨率和方向 针对不同的屏幕方向,我们可以在res目录下创建不同的布局文件夹。有时候,仅仅使用不同的布局文件还不能完全满足屏幕适配的需求,特别是在涉及到自定义控件或动态调整UI时。在布局文件中,使用相对布局(RelativeLayout)或线性布局(LinearLayout)等可自适应的布局方式,避免使用具体的像素值。综上所述,通过合理使用布局文件适配、处理屏幕旋转和动态适配,我们可以确保Android应用在不同分辨率和方向下都能提供良好的用户体验。通过获取屏幕的宽度和高度,我们可以在运行时计算并设置控件的大小和位置。 阅读详情
从android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小:QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。
然而,由于分辨率的不同,可能会导致同一布局对应不同分辨率的手机显示出不同的效果,如布局错位、图片虚化等,那么,如何解决这一问题呢? 
一、对于界面布局方面

(1)layout(放一些通用布局xml文件)  从android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小:QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。
然而,由于分辨率的不同,可能会导致同一布局对应不同分辨率的手机显示出不同的效果,如布局错位、图片虚化等,那么,如何解决这一问题呢? 
    一、对于界面布局方面
     1、根据物理尺寸的大小准备5套布局layout:
     (1)layout(放一些通用布局xml文件)
     (2)layout-small(屏幕尺寸小于3英寸左右的布局)
     (3)layout-normal(屏幕尺寸小于4.5英寸左右)
     (4)layout-large(4英寸-7英寸之间)
     (5)layout-xlarge(7-10英寸之间)
     2、根据需求配置不同的布局layout。
       如:240x320,则建立layout-320x240;400x800,则建立layout-800x400。需要注意的是:大的写在前面,例如320,小的写在后面,例如240;还有乘号要写成小写的x,不能写成*。
       另外,如果是通用的布局文件,则放在layout下。
 
     最后需注意:对于界面布局方面的分辨率的匹配需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
                         </application>
                               <supports-screens
                                    android:largeScreens="true"
                                    android:normalScreens="true"
                                    android:smallScreens="true"
                                    android:xlargeScreens="true"
                                    android:anyDensity="true"/>
                </manifest>
       在</application>标签和</manifest> 标签之间添加上面那段代码即可。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接将android:xlargeScreens="true"去掉。
     注释:android:anyDensity=["true" | "false"]
     如果android:anyDensity="true",指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。
     如果android:anyDensity="false",应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。
 
    二、图片资源方面
     1、需要根据dpi值准备5套图片资源:
      (1)drawable:主要放置xml配置文件或者对分辨率要求较低的图片
      (2)drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)
      (3)drawable-mdpi:中等分辨率的图片,如HVGA (320x480)
      (4)drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
      (5)drawable-xhdpi:至少960dp x 720dp(一般比较少用)
       Android会有自动匹配机制去选择对应的布局和图片资源,系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
    三、动态实现的界面,样式的设定(values方面)
        不同分辨率,界面的字体大小,字体等需要不同的样式,且需要动态生成的情况下,需要把不同分辨率的配置信息保存到应用中。
      举例:在RES里创建 values-480x320 values-800x400
           并在创建的文件夹中分别创建string.xml
           <dimen name="Text_size">30px</dimen>
           在程序中直接调用R.dimen.Text_size
 
    最后,做一下总结:
    (1)不要使用AbsoluteLayout布局,尽量使用RelativeLayout和LinearLayout;   
    (2)在使用布局的时候尽量使用权重,可以有效减少死数据的使用,降低适配的工作量。
(2)layout-small(屏幕尺寸小于3英寸左右的布局)
(3)layout-normal(屏幕尺寸小于4.5英寸左右)
(4)layout-large(4英寸-7英寸之间)
(5)layout-xlarge(7-10英寸之间)
2、根据需求配置不同的布局layout。
如:240x320,则建立layout-320x240;400x800,则建立layout-800x400。需要注意的是:大的写在前面,例如320,小的写在后面,例如240;还有乘号要写成小写的x,不能写成*。
另外,如果是通用的布局文件,则放在layout下。

最后需注意:对于界面布局方面的分辨率的匹配需要在AndroidManifest.xml里面添加下面一段,没有这一段自适应就不能实现:
</application>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
</manifest>
在</application>标签和</manifest> 标签之间添加上面那段代码即可。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接将android:xlargeScreens="true"去掉。
注释:android:anyDensity=["true" | "false"]
如果android:anyDensity="true",指应用程序支持不同密度,会根据屏幕的分辨率自动去匹配。
如果android:anyDensity="false",应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。例如我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity="false",Android系统会将240 x 320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源。

二、图片资源方面
1、需要根据dpi值准备5套图片资源:
(1)drawable:主要放置xml配置文件或者对分辨率要求较低的图片
(2)drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)
(3)drawable-mdpi:中等分辨率的图片,如HVGA (320x480)
(4)drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(5)drawable-xhdpi:至少960dp x 720dp(一般比较少用)
Android会有自动匹配机制去选择对应的布局和图片资源,系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
三、动态实现的界面,样式的设定(values方面)
不同分辨率,界面的字体大小,字体等需要不同的样式,且需要动态生成的情况下,需要把不同分辨率的配置信息保存到应用中。
举例:在RES里创建 values-480x320 values-800x400
并在创建的文件夹中分别创建string.xml
<dimen name="Text_size">30px</dimen>
在程序中直接调用R.dimen.Text_size

最后,做一下总结:
(1)不要使用AbsoluteLayout布局,尽量使用RelativeLayout和LinearLayout; 
(2)在使用布局的时候尽量使用权重,可以有效减少死数据的使用,降低适配的工作量。
不同屏幕分辨率适配的values包.zip 安卓开发在不同分辨率下面的自适应处理xml文件 立即下载

相关推荐

【Python・统计学】(两)多因素方差分析(原理及代码)

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】

TUTO_TUTO的博客 4864

Android 动态生成不同分辨率的values文件

public class Main { static final int width_size = 750; // 设定尺寸 640x1136 750x1334 static final int height_size = 1334; // 设定尺寸 640x1136 750x1334 public static void main(String[] args) {

wsliqingyuan的博客 2002

Armbian 国内源一键配置:告别卡顿,加速软件更新

本文详细介绍了如何为Armbian系统配置国内软件源,以解决默认国外源导致的更新缓慢、连接超时等问题。通过手动修改配置文件或使用高效的一键换源脚本,可将源切换至清华大学、阿里云等国内镜像站,实现apt更新与软件安装速度的质的飞跃,让Armbian开发体验更加流畅高效。

weixin_29215815的博客 243

android屏幕分辨率适配

分辨率 高度 宽度 宽高比(宽/高) 1920x1080 1920 1080 0.5625 2094x1080 2094 1080 0.5157593123 2220x1080 2220 1080 0.4864864865 1280x720 1280 720 0.5625 2392x...

wangyongqi的博客 1万+

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

避坑指南:Docker部署PaddleOCR-VL服务时,关于flash-attn安装、端口映射和模型加载的那些坑

本文详细记录了Docker部署PaddleOCR-VL服务时遇到的常见问题及解决方案,包括flash-attn安装、GPU兼容性检查、容器生命周期管理、模型加载优化等关键环节。特别针对不同GPU架构提供了flash-attn的安装策略,并分享了端口映射、配置文件处理等实用技巧,帮助开发者高效避坑。

weixin_33686714的博客 463

Android UI适配方案

大纲 使用dp而不是px 尽量使用自动适配布局,而不要指定分辨率 使用宽高限定符 values-1080x1920,以1080P为基准计算每种常见分辨率对应的尺寸。 需要尽可能全的添加各种设备的分辨率(有工具) 容错性不足,如果设备分辨率不能精确匹配对应限定符,会默认使用统一默认的dimens 第三方自动适配UI框架 原理:自定义RelativeLayout,在onMeasure中对控件分辨率做变换 第三方框架,维护性很成问题 一些自定义View,处理比较麻烦 最小宽度限定符,类似宽高限定符

钟小明的专栏 1711

网络安全隔离技术解析:单向网闸与双向网闸的核心差异与应用场景

本文深入解析网络安全隔离技术中的单向网闸与双向网闸,详细比较两者的核心差异与应用场景。单向网闸通过物理隔离确保数据单向流动,适用于金融交易等高风险场景;双向网闸则支持严格安检的双向数据交互,常见于医疗、政务等领域。文章还提供了选型建议和技术发展趋势,帮助读者根据安全需求和业务场景选择最适合的网闸解决方案。

weixin_29323365的博客 527

【最新】Android 手机分辨率整理(做屏幕适配的拿走)

Android 手机分辨率:320x480    320x400480x800    480x854540x960600x1024720x1184    720x1196    720x1280768x1024    768x1280800x12801080x1776    1080x1794    1080x1800    1080x1812    1080x1920    1080x2016 ...

GuangkuoDing的博客 1万+

LangChain4j + MCP:从工具协议到生产级 Agent

这两年,很多团队都已经把「大模型问答」接入到系统里了:前端一个输入框,后端调一下 OpenAI / DeepSeek / 本地模型,返回一段回答——这类 「简单问答型」AI 功能它只能说,不会做:不会主动查数据库,不会调用你的接口,不会帮你真正执行脚本;面对复杂一点的需求,比如「帮我生成这个报表的 SQL 并执行一下」,普通 ChatGPT 式的问答就开始力不从心了。而Agent 智能体想解决的,就是这件事:不只是回答你「怎么做」,而是能自己思考、自己决定要不要用工具、再用工具把事做完。

OFFTime_we的博客 1152

如何解决Elsevier和IEEE期刊之间参考文献的转换问题

Elsevier期刊和IEEE旗下的期刊两者模版互相转换的时候,会发现Elsevier模版的参考文献是存放在.bib文件下的,然后在.tex文件中直接引用即可。3. 在IEEE的.tex文件中的\end{document}命令行之前,添加下面的这句话(ps:\bibliography{**}中的**名称即为.bib文件的名称)如何将Elsevier的参考文献快速的转成IEEE期刊可用的格式,是本博客需要解决的问题。2. 将下载好的.bib文件,上传到IEEE的latex文件中。

薰珞婷紫小亭子的博客 1674

Android:支持不同分辨率的屏幕设计

1、不同的layout       Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行

欧阳天涵的专栏 4783

Unreal5从入门到精通 专栏目录

欢迎来到“UE5从入门到精通”专栏!在这里,我们将带您踏上一段精彩的旅程,深入探索虚幻引擎5(Unreal Engine 5)的无限可能。不论您是游戏开发的新手,还是希望提升技能的开发者,这里都有适合您的内容。基础知识:了解虚幻引擎5的界面、功能和基本操作,为您的学习打下坚实的基础。项目实战:通过实际项目案例,帮助您从理论走向实践,真实体验游戏开发的每个环节。高级技巧:分享各种高级功能和技巧,包括蓝图、C++编程、材质编辑、光照和渲染等,让您能够创作出更具专业水准的作品。

TxNet 2986

关于android手机开发中支持不同分辨率的总结

虽说是原创,但是却参考了好几位大神的博客,在最后面会给出链接。这里是我自己的总结。 首先我们应该理解一个重要的概念  dp   定义:Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp对应 的像素点越多。 上面的公式中有个dpi,dpi

小牛大帝的专栏 835

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android:支持不同分辨率的屏幕设计 .

1、不同的layout Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。2...

weixin_30819085的博客 131

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android不同屏幕和分辨率的支持讨论

路径http://developer.android.com/guide/practices/screens_support.html#strategies http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources 转载于:https://www...

andy76123的博客 115

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android支持不同的密度或分辨率

http://blog.youkuaiyun.com/duguang77/article/details/17539381 http://blog.youkuaiyun.com/duguang77/article/details/17539381 http://blog.youkuaiyun.com/duguang77/article/details/17539381 【官方】A

532

android webview 像素,[WebView学习之二]:使用Web Apps 支持不同分辨率屏,webviewapps

[WebView学习之二]:使用Web Apps 支持不同分辨率屏,webviewapps上一篇我们学习了(1.[WebView学习之一]:Web Apps简介),今天我们来继续学习。(博客地址:http://blog.youkuaiyun.com/developer_jiangqq),转载请注明。Author:hmjiangqqEmail:jiangqqlmj@163.com因为Android设备有很多分辨...

weixin_32124135的博客 648

【官方】Android支持不同的密度或分辨率(Supporting Different Densities)

官方Api地址:http://developer.android.com/training/multiscreen/screendensities.html 支持不同的密度或分辨率 本课介绍如何通过提供不同的资源和使用的测量分辨率独立单元支持不同屏幕密度(分辨率) 使用独立的像素密度 设计你的布局时会有一个常见的错误,你必须避免使用绝对像素来定义距离或大

努力后才会有收获....加油! 2914

【分辨率】Android官方提供的支持不同屏幕大小的全部方法

转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/8830286 原文地址为:http://developer.android.com/training/multiscreen/screensizes.html 本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法: 让你的布局能充分的自适

天。朝程序猿的专栏 951

android 百分比布局不支持滑动吗,Android 之百分比布局 适应不同分辨率

之前一直在想怎样适应不同分辨率的问题,后来在masrchen老师的视频上学习到了android:layout_weight 这个按比例布局的属性,然后在网上找到了一篇写的不错的博客,如下:在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示。android并没用提供table...

weixin_42128537的博客 113

docker-android多屏幕支持终极指南:如何配置不同分辨率和屏幕密度的Android模拟器

docker-android是一个轻量级且可定制的Docker镜像,能将Android模拟器作为服务运行。本指南将详细介绍如何利用docker-android实现多屏幕支持,轻松配置不同分辨率和屏幕密度的Android模拟器,满足多样化的测试需求。 ## 为什么需要多屏幕支持的Android模拟器? 在移动应用开发过程中,不同设备拥有各异的屏幕分辨率和密度,这直接影响应用的显示效果和用户体验。

gitblog_01033的博客 434

android 不同分辨率dimen,Android 屏幕适配,自动生成不同分辨率的值

import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintWriter;/** * Created by zhy on 15/5/3. */public class GenerateValueFiles {private int baseW...

weixin_34669755的博客 251
上一篇: Android string.xml中使用html标签
下一篇: Java反射学习笔记
冒泡彩虹
博客等级 码龄14年 17粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值