Android适屏

总结一下自己的适屏经验,肯定有很多不足,这和能力有关,只希望自己不断进步,不断完善,如果有热心肠的“前辈”指导一下,不胜感激!

Android5.0已经出来了,说是这个版本对Android屏幕适配做了很多工作,不过对于我这种慢性子的人,我还是耐心的拭目以待吧,5.0之前已经有很多分辨率,刚开始做Android的时候头都大了,不过慢慢的还是积累了一些适屏的经验,在此总结一下。

一、使用资源标识

1.分辨率(密度)标识符适配

Android的分辨率有四大类,以后还会不会更多呢,我也不知道,不过话说分辨到达一定阈值后人眼就不能分辨了吧,毕竟在手机这么小的屏幕之上,再细致也就不值得了

低分辨率:lhdp(120dp)

普通分辨率:mdp(160dp)

高分辨率:hdp(240dp)

超高分辨率:xhdp(320dp)

超级高分辨率:xxhdp(480dp) 这是API Lev 16之后才有的超级分辨率

分辨率的不同主要影响Android手机上图片的显示,如果是一些颜色或者矢量背景就没有影响,比如直接用color或者定义xml类型的drawable做视图的背景时,结合布局时的一些技巧就不会受分辨率的影响了。抽空再总结,话说回来,用上面的资源标识符为图片提供多种尺寸的方法如下:

将资源标识符用短横线连接到res/drawable之后,例如:

res/drawable-lhdp/:正常图片尺寸的75%

res/drawable-hdp/:正常图片尺寸的100%

res/drawable-hhdp/:正常图片尺寸的150%

res/drawable-xhdp/:正常图片尺寸的200%

res/drawable-xhdp/:正常图片尺寸的300%

就像应用程序的启动图片,也应该设置多个分辨率类型,将36*36(像素),48*48(像素),72*72(像素),96*96(像素),144*144(像素)的icon分别放在以上对应的项目文件目录下即可实现不同分辨率下,显示相对应的图片。

2.尺寸资源标识符适配

small:426*320(dp)

normal:470*320(dp)

large:640*480(dp)

xlarge:960*720(dp)

有xxlarge:吗?

3.平台标识符限定

v4

v9

v11

v14

...

4.横竖屏标识符限定

land

5.精确限定

w<N>dp:精确限定宽度分辨率

h<N>dp:精确限定高度分辨率

sw<N>dp:表示这个layout文件夹下面的布局文件只有在设备短边的最小宽带为N时才加载。你的设备是800x480的分辨率,那么这个apk安装在你的设备上就会加载 layout-sw480dp里面的布局文件。

上面的标识符通常用在res文件目录下的drawable,layout和values,例如:layout-550dp-large;drawable-large-mdpi;values-1134*720(大数在前小数在后)

还有就是在AndroidManifest.xml中加上

<supports-screens

android:anyDensity="true"

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:xlargeScreens="true"/>

除了上面的资源标识符限定之外,如果想要更加精确的设置,可以利用values下的dimen,对于要求不是很严格的,可以结合Relativeyout,LinearLayout,还有容易被忽视的FrameLayout,设置视图的宽高(android:layout_width="" android:layout_height="")时使用match或者wrap,之后再设置layout_margin=""或者padding=""属性来控制距离。

二、Android支持的单位

1.单位

px:像素

in:英寸

mm:毫米

pt:磅(1/72)英寸

dp:与px无关的像素

dip:就是dp

sp:与刻度无关的像素,与dp类似,可根据用户字体大小的首选项缩放

2.单位换算

在标准分辨率(160dp)下:

1dp = 1dip = 1px

1pt = 160/72sp

1pt = 1/72英寸

时间: 2024-07-28 18:46:51

Android适屏的相关文章

【读书笔记《Android游戏编程之从零开始》】17.游戏开发基础(游戏适屏的简述和作用、让游戏主角动起来)

1.游戏适屏的简述和作用 由于市面上安装 Android 系统的手机不断增多,出现了各种分辨率.各种屏幕尺寸的Android 系统手机.为了保证一个游戏或者一个软件能在所有的 Android 手机上正常显示,常用的适屏做法有:利用屏幕宽高.位图宽高来设置一些游戏元素的位置:字体的适屏做法最好的使用字体图,这样文字不会因为手机分辨率不同而不同,毕竟图片大小是固定不变的. 2.让游戏主角动起来实例演示将一张由多行多列的动作帧组成的图片实现动态效果. 新建项目,游戏框架为SurfaceView 框架,

ImageView使用(适屏、缩放功能)

1.适屏 提取手机的图片库,并且进行选择图片的功能: Button onClick: Intent intent = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);// 打开手机的图片库 startActivityForResult(intent, IMAGE_SELECT); 处理图片,按照手机的屏幕大小显示: if (requestCode == I

Android横竖屏切换及其对应布局加载问题

第一,横竖屏切换连带横竖屏布局问题: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局. 可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如:layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序调用Activity的onCreate方法中的setOnContent(xxx),并自动加载相应的布局. 2)假如布

android 截屏, 消息栏未截图

原文:http://www.zuidaima.com/share/1550463684332544.htm 源代码下载地址:android 截屏, 消息栏未截图 android 截屏, 消息栏未截图, 如果谁有截屏(截全屏的) 源码截图

Android横竖屏总结(转)

Android横竖屏总结(转) 横竖屏切换后Activity会重新执行onCreat函数,但是在Android工程的Mainfest.xml中加入android:screenOrientation="user" android:configChanges="orientation|keyboardHidden"之后,横竖屏切换之后就不会去执行OnCreat函数了,而是会去调用onConfigurationChanged(),这样我们就能控制横竖屏的切换了.或者在re

Android 全屏显示 and 取消标题栏

先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 <application android:icon="@drawable/icon" android:label="@string/app_name"

android横竖屏切换时Activity的生命周期

1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3.按crtl+f12切换成横屏时 onSaveInstanceState--> onPause--> onStop--> onDestroy--> onCreate--> onStart--> onRestoreInstanceState--> onResume--> 4.再

jQuery仿Android锁屏图案应用插件

<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery仿Android锁屏图案应用插件DEMO演示</title> <link href="css/patternLock.css" rel="stylesheet" type="text/css" /> <scr

android锁屏软件制作

转载请标明出处http://blog.csdn.net/mingyue_1128 一.首先要创建一个Service保证Service一直开启,同时不被一键清理掉. 二.屏蔽掉系统的锁屏 三.创建锁屏的Activity,在Activity中屏蔽掉back,menu,home键 四.保证自己的进程不在最近任务中出现 一.创建一个Service名字为LockService public class LockService extends Service{ private KeyguardManager