位置: 编程技术 - 正文
推荐整理分享关于android 开发屏幕适配的个人见解(基于android开发),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:基于android的开发环境,android开发相关技术,基于android开发,android开发范例实战宝典,android开发相关技术,基于android开发,基于android开发,android开发相关技术,内容如对您有帮助,希望把文章链接给更多的朋友!
是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如X就是指的像素。
在设计领域中,像素是用来计算数码影像的最小单位。计算机中显示的图像并非连续的线条组成,而是由许多肉看不见的小点组成。如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位“像素”。由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况
in表示英寸,是屏幕的物理尺寸。每英寸等于2.厘米。例如我们经常说的手机屏幕大小有,5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是4英寸,表示手机的屏幕(可视区域)对角线长度是4 X 2. = .厘米。
dpidpi是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
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 转载请保留说明!友情链接: 武汉网站建设