安卓适配所有屏幕UI的方法

本文介绍了如何在Android应用中实现UI全屏幕适配,包括使用百分比库和屏幕缩放策略。作者通过比较fragment、百分比布局和不同缩放方法,选择了基于屏幕宽高比的缩放方案,并提供了px到dip的转换代码,确保在不同分辨率和密度的屏幕上UI显示效果良好。
摘要由CSDN通过智能技术生成

  问题背景:之前项目里UI是通过JSON模版来进行控制的,为了数据通用性强(与字体大小对应,匹配xml方便)采用dip作为单位。但遇到的问题是在不同的分辨率或屏幕密度的屏幕上不能够正常显示。虽然采用相对布局的模板设计既能解决屏幕适配问题又能解决手机在横竖屏翻转UI切换问题,但这样做有可能因为屏幕不同而造成UI显示变形(目前的需求不考虑屏幕翻转)。所以在不改变我之前就定好的UI模版规则的前提下,使一个模版适配所有屏幕就显得尤为重要了。
  
  自己总结一般有如下方法:
  1. fragment,它就是为屏幕尺寸的“碎片”而生的,但并不全能。
  2. 百分比,目前新出来有开源库 compile ‘com.zhy:percent-support-extends:1.1.1’,很好用。
  3. 缩放,缩放又有多种缩放方式:
  a.对整个屏幕的横竖两个方向按照“屏幕宽/模板宽”和“屏幕高/模板高”的比例分别缩放,即将所有的位置、宽高、字体大小等数据全部按两个方向分别缩放。优点是:模板效果和屏幕效果接近。缺点:可能会因为屏幕不同造成轻度显示差异。
  b.显示区域按照“屏幕宽/模板宽”与“屏幕高/模板高”的最小值进行横竖缩放。优点:不会造成显示差异。缺点:可能造成留白。
  
  本次采用方法2中的a,原因有三点:
  1. 界面效果与界面模板绑定。
  2.考虑屏幕翻转,只要不是横屏的模版数据显示在竖屏上,就不会产生明显的显示差异。
  3.不考虑屏幕翻转,在不同屏幕上的显示差异较小。
  当然这是在我在画满了两大张纸然后解决了匹配所有屏幕这个问题的前提下,写这些的。(纸张就不传了,放在这也没多少人看得懂,不是难看懂而是难看)。而屏幕的翻转也只不过是在onConfigurationChanged()中切换模板而已。
  
  dip,dp,px中与屏幕上显示效果直接相关的是px,其他概念自己查,网上一大堆。如果没有理解这些概念,下面的东西也是可有可无。
  
  px与dip之间转换如下:
  


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机多图,比较漂亮。800*480的。其他尺寸自己改SysInfo.ini文件 X,Y是坐标,IconPushed为图标的地址,SizePushed,SizeNormal图标的大小。 GLOBALSETTINGS ShowMessage = 0 Quitno X = 0 x方向的位置(后同) Y = 0 y方向的位置(后同) Width = 480 桌面背景图片宽度 Height = 272 桌面背景图片高度 Arrange = No 排列与否,和windows桌面排列一样 BackgroundBitmap = \SDMMC\app\PIC\background.bmp 显示桌面背景图片,可以修改成你想显示的图片名称及位置 StartUpAnimation = FlyUp Accelerated = yes TopMost = no #--------------------------------- DATE 显示日期的设置, x = 60 y = 3 Color = FFFFFF 字体颜色(后同) FrameColor = 000000 Size = 18 字体大小(后同) Weight = 700 CreateFont TIME 显示时间的设置, x = 155 y = 3 Color = FFFFFF FrameColor = 000000 Format = HH':'mm':'ss' 时间格式 Size = 18 Weight = 700 CreateFont Interval = 1000 刷新间隔,单位好像是毫秒 BATTERY 显示电池信息, x = 10 y = 5 Width = 38 Height = 16 ColorBattery = A0A0A0 ColorHigh = 00A000 ColorLow = A0A000 ColorCritical = A00000 Segments = 10 电池电量显示分块数 #--------------------------------- #--------------------------------- ICONXPBUTTON 自定义快捷方式,注意每节前后有#----作为分段 x = 420 程序图标的显示位置,X方向 y = 1 程序图标的显示位置,y方向 Command = \SDMMC\应用软件\Off.exe 应用程序位置名称 SizeNormal = 48 图标大小,不能小于图标文件的尺寸 SizePushed = 48 按下去后的图标大小 ScaleAlpha = 100 比例 Ic\SDMMC\图标库\off.ico 快捷方式的图标位置名称 ScaleAlpha = 100 比例 Ic\SDMMC\图标库\off.ico 按下去后的图标位置名称 Quitno 程序启动后是否自动退出,YES是的,no不关闭 TEXT 快捷方式的文字说明 x = 25 文字说明的显示位置,X方向 y = 150 文字说明的显示位置,Y方向 Text = 语音电子书 文字说明的内容 Color = FFFFFF 文字的颜色 FrameColor = 000000 背景框颜色 Size = 16 文字的大小 Weight = 700 CreateFont #--------------------------------- #--------------------------------- ICONXPBUTTON x = 5 y = -16 NewIni = ..\Navi\Navi.ini 运行下一个页面 SizeNormal = 48 SizePushed = 48 S

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值