位置: 编程技术 - 正文

关于android 开发屏幕适配的个人见解(基于android开发)

编辑:rootadmin
一、android 中各个单位的基本概念px

推荐整理分享关于android 开发屏幕适配的个人见解(基于android开发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于android的开发环境,android开发相关技术,基于android开发,android开发范例实战宝典,android开发相关技术,基于android开发,基于android开发,android开发相关技术,内容如对您有帮助,希望把文章链接给更多的朋友!

是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如X就是指的像素。

在设计领域中,像素是用来计算数码影像的最小单位。计算机中显示的图像并非连续的线条组成,而是由许多肉&#;看不见的小点组成。如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位“像素”。由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况

in

表示英寸,是屏幕的物理尺寸。每英寸等于2.厘米。例如我们经常说的手机屏幕大小有,5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4 X 2. = .厘米。

dpi

dpi是Dots Per Inch的缩写, 每英寸点数,即每英寸包含像素个数。比如X分辨率的手机,宽2英寸,高3英寸, 每英寸包含的像素点的数量为/2=dpi(横向)或/3=dpi(纵向),就是这部手机的dpi,横向和纵向的这个&#;都是相同的,原因是大部分手机屏幕使用正方形的像素点。

density

屏幕密度,density和dpi的关系为 density = dpi/

dp

也即dip,设备独立像素,device independent pixels的缩写,Android特有的单位,在屏幕密度dpi = 屏幕上,1dp = 1px。

sp

和dp很类&#;,一般用来设置字体大小,和dp的区别是它可以根据用户的字体大小偏好来缩放。

二、常见的解决办法

当新建一个android工程时 会出现以下几个drawable文件夹,它们分别对应不同的dpi

drawable-ldpi (dpi=, density=0.)

drawable-mdpi (dpi=, density=1)

drawable-hdpi (dpi=, density=1.5)

drawable-xhdpi (dpi=, density=2)

drawable-xxhdpi (dpi=, density=3)

市面上常见手机的分辨率

iphone分辨率

x 3:2

x 3:2

x :9

android主流分辨率

x 3:2 (主分辨率) 华为C

x 5:3 (主分辨率) HTC G

x 3:2 魅族MX

x 5:3 (主分辨率)google nexus4

x :9 (主分辨率)小米2s

x :9 (主分辨率) 三星 galaxys4

做高分辨率三套,同比缩小到相应分辨率

x :9

关于android 开发屏幕适配的个人见解(基于android开发)

x 5:3

x 3:2

分辨率对应DPI"HVGA mdpi" x

"WVGA hdpi " x"FWVGA hdpi " *"QHD hdpi " *"P xhdpi" *"P xxhdpi " *

常见的适配方法:为每种dpi都出一套图片资源(但是此方法为美工增加了工作量,同时增大了apk)

android 自动渲染:Android SDK会自动屏幕尺寸选择对应的资源文件进行渲染,如SDK检测到你手机dpi是的话会优先到drawable-mdpi文件夹下找对应的图片资源,注意只是优先,假设你手机dpi是,但是你只在xhpdi文件夹下有对应的图片资源文件,程序一样可以正常运行。所以理论上来说只需要提供一种规&#;的图片资源就ok了,如果只提供ldpi规&#;的图片,对于大分辨率的手机如果把图片放大就会不清晰,所以需要提供一套你需要支持的最大dpi的图片,这样即使用户的手机分辨率很小,这样图片缩小依然很清晰

自动渲染需要在AndroidManifest.xml设置在中Menifest中添加子元素

android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。

相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:

横屏竖屏目录区分

1) drawable

a) drawable-hdpi该图片即适用于横屏,也适用于竖屏;

b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;

c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。

2) layout

在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换

多屏幕适配的4条黄金原则

1) 在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;尽量使用match_parent而不是fill——parent

具体来说,设置view的属性android:layout_width和android:layout_height的&#;时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。

2) 在程序的代码中不要出现具体的像素&#;,在dimens.xml中定义;

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

3) 不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;

4) 对不同的屏幕提供合适大小的图片。(屏弃)

不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为×,那么低密度(low)屏幕的图片大小应为×,高(high)的为×,extra-high为×

使用9-patch PNG图片

使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。

“上、左”定义可拉伸区域

“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。

Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。

关于图片的制作:1、关于设计:设计图先定下一个要设计的尺寸,而且尽量采用在目前最流行的屏幕尺寸(比如目前占屏幕比重比较多的是系列,也即是*或者*,下面的图标制作也在次基础上进行比例的换算)上设计。先了解一下屏幕的级别:屏幕级别屏幕密度比率(相对)物理大小(英寸)像素大小通常的分辨率ldpi.mdpi*hdpi.*xhdpi*xxhdpi*说明:屏幕级别:注意屏幕级别是按照密度分级,和像素没有关系。如果非要让密度和像素扯上关系,则需要一个参照系,android使用mdpi级别作为标准参照屏幕,也就是说在*分辨率的手机上一个密度可以容纳一个像素。然后其他密度级别则在此基础上进行对比。如果理想情况下,*的屏幕一个密度可以容纳1.5个像素。物理大小:单位是英寸而不是像素,也就说一个英寸在任何分辨率下显示的大小都是一样的,但是像素在密度不同的手机里面显示的实际的大小是不一样的(这就是为什么android手机需要适配的原因)。然后就是重点。假设1像素在密度下显示1英寸,则1像素在密度基础上显示大约0.英寸,在密度下显示0.5英寸。于是就出现一种情况,在电脑上的一个像素,在不同的手机上看实际的大小不一样。那么怎么让“设计效果”在不同的手机上看起来显示的区域一样呢?还是假设一个像素在密度下的显示在一个密度内,也假设就是一英寸。那么需要几个像素才能在密度级别下显示在一英寸范围内呢?答案是1.5个像素(根据上图的比率换算)。了解了这个关系,接下来就是图标的制作。2、关于切图。关于切图有几个建议:第一,长宽最好是3的倍数(根据android的推荐logo图标的大小是(mdpi),(hdpi),(xhdpi)得出的最小公约数)。第二,长宽最好是偶数。因为奇数在进行等比压缩的时候可能有问题。第三,根据上面两条,如果长宽是6的倍数最理想。第四,如果可以拉伸而不改变设计意图的情况下,比如纯色背景,则使用android的9path工具制作成.9的图片。3、关于图标的适配。然后接下来的一切就和设计稿没什么关系。在切好图的基础上,根据屏幕密度、像素和实际大小的比例关系。假如设计司在*的分辨率下做好了设计图,并且切好图,如果你需要适配*屏幕,该怎么做?根据比例,他们的关系是2:3,于是你需要按照1.5倍比例制作图标,比如你在*的设计稿上切下来一个*像素的图,那么你就需要制作一个等比放大成*像素的图标,这样同一个图标在*的屏幕和*的屏幕上显示的实际大小才一样。同理,如果你需要适配xxhdpi则需要在*的基础上制作一个等比放大成*像素的图标。4、关于图标的目录,*切下来的图我们放在drawable-hdpi目录下,按照2:3放大的图标放在drawable-xhdpi目录下,按照2倍放大的图标放在drawable-xxhdpi目录下。android会根据手机的密度优先查找对应的目录的资源,比如*分辨率下的手机如果密度是,则自动加载drawable-hdpi这个目录下的图标,如果*密度是的手机自动加载drawable-xhdpi这个目录下的图标。如果没有这个文件夹,则查找和最接近的对应密度文件夹。三、其它接下来要说的估计会让你失望,根据上面的步骤也不能完全解决适配的问题,只能是大概适配,而就算根据上面的步骤大概适配了,实际在手机上的效果也有出入。比如魅族MX3的分辨率是*,标准情况下密度是,但是他的密度大约是,和接近,也就是会查找drawable-xxhdpi这个资源下的文件。也就是说你在*分辨率下切图然后按两倍放大的图标在这台手机上显示的效果还是比实际的小。而另一个要说的问题是*或者*,他们的密度很可能是或者接近也可能是。于是在*的设计稿上切下来的图并且进行的适配制作,在这些手机上显示的实际大小也可能或大或小

Android实战--英文词典(API+GSON+Volley) 转载请注明出处,喜欢我的可以关注我!上一节我们介绍了GSON和Volley,用GSON对返回的数据进行了初步解析,这一节我们更进一步,讨论一下如何实现英

Android 接口的回调函数 实例代码:(newOnHttpListener(){@OverridepublicvoidonStart(){//TODOAuto-generatedmethodstubsuper.onStart();}@OverridepublicvoidonProgress(intmProgress,Stringmessage){//TODOAuto-generatedmethodstub

Android数据库学习 我个人感觉安卓自带的数据库用的不是太多的,毕竟现在很多应用都直接和服务器数据库进行交互,或者直接API获取一些接口的数据,但是不可否认自

标签: 基于android开发

本文链接地址:https://www.jiuchutong.com/biancheng/382229.html 转载请保留说明!

上一篇:Android: wifi打开和关闭的流程解析(安卓wifi打不开解决)

下一篇:Android实战--英文词典(API+GSON+Volley)(android英语)

  • 增值税发票综合服务平台验证口令失败
  • 建筑劳务公司怎么做账
  • 缴纳上一年所得税附件是哪些科目
  • 小规模企业免征增值税如何做账
  • 资产负债表里的固定资产是原值还是净值
  • 其他应付款短期借款
  • 科目余额表一定要编吗
  • 员工备用金期末未报销怎么处理
  • 1%是什么税
  • 发票认证完是不是没开票
  • 土地款可以抵扣土地增值税么
  • 本期增加发生额是指
  • 应税服务计入什么科目
  • 需要预缴增值税
  • 个人所得税必须得交吗
  • 国际货运代理免税备案取消了吗
  • 增值税进项和销项税的计算方法
  • 自由职业者知乎
  • 航空运输的湿租业务按什么缴纳增值税
  • 公司小汽车多少年报废
  • 金融企业贷款损失准备金
  • 支付员工补偿金计入管理费用的福利费用吗
  • 存货跌价准备转销
  • 资产减值损失能否在所得税税前扣除
  • 待处理财产损益的二级科目
  • 对方公司只能开发票吗
  • 不锈钢材料开票
  • 宣传用品发票包括哪些
  • 收到的产品返利怎么做账
  • 企业重组特殊性处理通俗理解
  • 原材料暂估分录
  • 跨年发票能不能报销
  • 应交企业所得税和所得税费用区别
  • php 注册
  • win8怎么提高性能
  • 将u盘格式化
  • root怎么开oppo
  • 发行股票溢价计入哪里
  • 金融资产的会计处理方法
  • 免税和免征增值税是一个意思么
  • php面向对象和面向过程
  • 盈余公积转增资本的最高限额
  • 汽车折旧年限及年限
  • 增值税收范围
  • 简易征收要交附合同吗
  • 出售固定资产如何申报企业所得税
  • mysql内连接查询使用汉语作为官方语言的所有国家
  • mysql的my.ini配置
  • 存货的入账价值等于
  • 超市小规模税负怎么算
  • 政府对企业提交的项目申请报告主要从等方面进行核准
  • 一般纳税人劳务税率是多少?
  • 结转损益类科目余额
  • 企业每月营业额达多少需要交税
  • 销项税大于进项税后,税金如何算
  • 金蝶旗舰版如何备份账套
  • 如何解绑企业微信绑定的邮箱
  • 建筑业简易征收税率5%
  • 股权转让如何支付利润
  • mysql的ip怎么看
  • win7 光盘
  • Office 2007在Windows Vista中出现的反常字体问题的解决办法
  • linux图片编辑软件
  • upd什么意思
  • jquery监听页面刷新
  • 同一个页面
  • vim命令详解
  • jquery的fadein
  • jquery实现分页功能
  • node实现文件上传
  • Python回调函数注册类型不匹配
  • javascript和html区别
  • JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
  • python字典常用操作
  • jquery控制display属性
  • 青岛新农合网上缴费时间
  • 昆山华润燃气多少钱一方
  • 个人所得税核定征收的政策
  • 股东向公司借款需要什么手续
  • 国税优盘安装教程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设