名词解释

来源:互联网 发布:淘宝退款售后怎么删除 编辑:程序博客网 时间:2024/04/25 12:14

1.android:installLocation

首先让你的程序支持SD卡上安装必须具备设置API Level至少为8,即androidmanifest.xml的中android:mindkVersion至少为8这样你的APK最终运行时兼容的固件只有2.2了,同时在androidmanifest.xml文件的根借点中必须加入android:installLocation这个属性,类似代码如下:

<manifest xmlns:android:"http://schemas.android.com/apk/res/android"android:installLocation="preferExtenal"...>
android:installLocation的值主要有preferExternal、auto 和internalOnly这三个选项,通常我们设置为preferExternal可以优先推荐应用安装到SD卡上,当然最终用户可以选择为内部的 ROM存储上,如果外部存储已满,Android内部也会安装到内部存储上,auto将会根据存储空间自适应,当然还有一些应用可能会有特殊的目的,他们一般必须安装在内部存储才能可靠运行,设置为internalOnly比较合适,主要体现在:
Services 服务
Your running Service will be killed and will not be restarted when external storage is remounted. You can, however, register for the ACTION_EXTERNAL_APPLICATIONS_AVAILABLE broadcast Intent, which will notify your application when applications installed on external storage have become available to the system again. At which time, you can restart your Service. Android123提示大家一般实时后台监控类的应用都应该装到内部存储,比较可靠。
Alarm Services  闹铃提醒服务
Your alarms registered with AlarmManager will be cancelled. You must manually re-register any alarms when external storage is remounted.
Input Method Engines 输入法引擎 
Your IME will be replaced by the default IME. When external storage is remounted, the user can open system settings to enable your IME again.
Live Wallpapers 活动壁纸
Your running Live Wallpaper will be replaced by the default Live Wallpaper. When external storage is remounted, the user can select your Live Wallpaper again.
Live Folders 活动文件夹
Your Live Folder will be removed from the home screen. When external storage is remounted, the user can add your Live Folder to the home screen again.
App Widgets Widget
Your App Widget will be removed from the home screen. When external storage is remounted, your App Widget will not be available for the user to select until the system resets the home application (usually not until a system reboot).
Account Managers 账户管理
Your accounts created with AccountManager will disappear until external storage is remounted.
Sync Adapters  同步适配器
Your AbstractThreadedSyncAdapter and all its sync functionality will not work until external storage is remounted.
Device Administrators 设备管理器
Your DeviceAdminReceiver and all its admin capabilities will be disabled, which can have unforeseeable consequences for the device functionality, which may persist after external storage is remounted.
那么哪些应用适合安装在SD卡中呢? Android开发网建议一些占用资源比较大的游戏,比如大于3MB的单个文件,不需要长期驻留内存的应用,不具备提醒和实时监控的应用一般放到SD卡上比较合适,不过目前想让你的应用装到SD卡上,必须设置API Level至少为8以上,同时显示注明android:installLocation。


2.<uses-feature>

manifest文件中的<uses-feature>用来要素来定制要求,其主要是考虑各种手机的兼容性问题。兼容性问题一直是困扰Android的一大因素,Google做出改进让开发者通过简单的方式控制他们的程序只对兼容的手机显示,Android程序兼容性主管Dan Morrill最近在Google Dev博客的一篇日志中表示,Android目前包括一个选项让开发者可以阻止他们的程序对不兼容的Android手机可见。 Google指出,一些手机在显示比如动态桌面(Live Wallpapers)功能时非常迟缓,可能让这部分用户因为手机硬件的不足获得消极的体验,甚至对程序进行差评。这种情况下还不如不要在Android Market上对这些手机用户显示这个程序。(这种情况很常见,比如我的G1虽然刷了Android 2.1系统拥有动态壁纸和3D相册功能,但基于G1落后的硬件基本上是不可用的,这种现象对3D游戏程序来说更普遍。) 现在Android开发提供一个选项可以让开发者列出若干手机兼容程序必备的条件,如果开发者推出一款使用手机加速计(accelerometer)才能玩的游戏,那么可以设置只有配置加速计的Android手机才能看到这个程序。

3. android:targetSdkVersion

<uses-sdkandroid:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" /> 

作用:在你使用高版本的sdk进行编译,而需要在低版本的手机上运行时,就需要使用该属性。
minSdkVersion:标识程序可以在低版本的andriod系统上运行,且最低的版本是多少。默认时为1
targetSdkVersion:程序在什么版本的android系统上是最适合的,已经经过了完整的测试。
maxSdkVersion: 程序最高可运行在什么版本的android系统上,该属性一般不需要设置,android 2.0.1之后,android也不会去检查该属性,只有android market才会用到。
比如:当你在用2.3.3的sdk编译程序时,想要在1.5的手机上运行,那你就把minSdkVersion设为3,如果你的程序在1.6上都测试过了,那就将targetSdkVersion设为4。


4. supports-screens

介绍:Adnroid1.6或以上SDK,在AndroidManifest.xml中提供新的一个元素<supports-screens>用于支持多屏幕机制。

<supports-screens           android:largeScreens="true"   是否支持大屏          android:normalScreens="true"  是否支持中屏          android:smallScreens="true"   是否支持小屏          android:anyDensity="true"     是否支持多种不同密度/> 
  1. Screen size 屏幕实际尺寸。Android讲屏幕实际尺寸分为3个通用的尺寸。
  2. Aspect ratio 长宽比
  3. Resolution 分辨率
  4. Density 密度
  5. Density-independent pixel 密度无关的像素
Android提供3种方式处理屏幕自适应
一.预缩放的资源(基于尺寸和密度去寻找图片)
1.如果找到相应的尺寸和密度,则利用这些图片进行无缩放小时。
2.如果没法找到相应的尺寸,而找到密度,则认为该图片尺寸为 "medium",利用缩放这个图片显示。
3.如果都无法匹配,则使用默认图片进行缩放显示。默认图片默认标配 "medium" (160)。

二.自动缩放的像素尺寸和坐标(密度兼容)
1.如果应用程序不支持不同密度android:anyDensity="false",系统自动缩放图片尺寸和这个图片的坐标。
 (代码中体现)
2.对于预缩放的资源,当android:anyDensity="false",也不生效。
3.android:anyDensity="false",只对密度兼容起作用,尺寸兼容没效果

三.兼容模式显示在大屏幕,尺寸(尺寸兼容)
1.对于你在<supports-screens>声明不支持的大屏幕,而这个屏幕尺寸是normal的话,系统使用尺寸为    ("normal")和密度为("medium)显示。
2. 对于你在<supports-screens>声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统同样使用尺寸为                   ("normal")和密度为("medium)显示,不过会出现一层黑色的背景。不是居中显示。


密度独立:
系统默认应用支持DIP单位的,三个使用DIP的地方:
1.加载资源时,使用DIP实现预缩放的资源。
2.在Layout使用DIP,系统自动完成缩放。
3.在应用程序中,自动缩放一些绝对像素。
   (只有在android:anyDensity="false"生效)即屏幕自适应方式二
4.像素单位都使用DIP,文本单位使用SP

最佳屏幕独立实践:
1.使用wrap_content, fill_parent 和使用dip作为像素单位in XML layout files。
2.避免使用AbsoluteLayout 
3.在代码中,不要使用像素数字硬编码,而是要通过dip转换为px。
    例子:
  你使用手势分析器分析一个scroll手势,假如,你滚动的距离是16px。
1.在一个160dip的屏幕中,你实际移动距离 16px / 160dpi = 1/10th of an inch (or 2.5 mm)
2.在一个240dip的屏幕中,你实际移动距离 16px / 240dpi = 1/15th of an inch (or 1.7 mm)
 // The gesture threshold expressed in dip 
 private static final float GESTURE_THRESHOLD_DIP = 16.0f; 
  // Convert the dips to pixels 
  final float scale = getContext().getResources().getDisplayMetrics().density; 
  mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale); 
4.使用密度和/或尺寸特定资源(通过文件夹)


关于预缩放或者自动缩放图片或9格图
1.系统是一定对会资源包下的图片进行合理的缩放。
   例如:一张240x240高密度图片,显示在中密度的屏幕上,图片大小自动变为160x160。
2.你在API中不会得到被缩放后的图片尺寸,得到还是你原来图片的尺寸。
3.如果你不想系统自动帮你缩放图片,可以建立一个res/drawable-nodpi文件夹,存放你的图片。
4.也可以通过BitmapFactory.Options 完成系统自动缩放图片或9格图(在画图时)。
5.自动缩放图片比预缩放花费更多CPU,但是用更少内存(RAM or ROM ?)


5. android:screenOrientation

<activity ...android:screenOrientation="portrait">

android:screenOrientation设定该活动的方向。有以下几个值:

"unspecified"

默认值。由系统选择显示方向,在不同的设备可能会有所不同。

"landscape"

横向

"portrait"

纵向

"user"

用户当前的首选方向

"behind"

与活动堆栈下的活动相同方向

"sensor"

根据物理方向传感器确定方向。取决于用户手持的方向,当用户转动设备,它跟随改变。

"nosensor"

不经物理方向传感器确定方向。该传感器被忽略。所以当用户转动设备,显示不会跟随改变,除了这个区别,系统选择使用相同的政策取向对于"未指定"设置。系统根据"未指定"("unspecified")设定选择相同方向。

原文:http://blog.csdn.net/zeng622peng/article/details/6572115


6. android:configChanges

官方解释: 通过设置这个属性可以使Activity捕捉设备状态变化,以下是可以被识别的内容:

CONFIG_FONT_SCALE 

CONFIG_MCC 

CONFIG_MNC 

CONFIG_LOCALE 

CONFIG_TOUCHSCREEN 

CONFIG_KEYBOARD 

CONFIG_NAVIGATION 

CONFIG_ORIENTATION


ValueDescription"mcc"The IMSI mobile country code (MCC) has changed - a SIM hasbeen detected and updated the MCC. 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。"mnc"The IMSI mobile network code (MNC) has changed - a SIM has been detected and updated the MNC.移动网号,在一个国家或者地区中,用于区分手机用户的服务商。"locale"The locale has changed - the user has selected a new language that text should be displayed in.用户所在地区发生变化。"touchscreen"The touchscreen has changed.(This should never normally happen.)"keyboard"The keyboard type has changed - for example, the user ha plugged in an external keyboard.键盘模式发生变化,例如:用户接入外部键盘输入。"keyboardHidden"The keyboard accessibility has changed - for example, the user has revealed the hardward keyboard.用户打开手机硬件键盘"navigation"The navigation type (trackball/dpad) has changed.(This should never normally happen.)"orientation"The font scaling factor has changed - the user has selected a new global font size.设备旋转,横向显示和竖向显示模式切换。"fontScale"The font sacling factor has changed - the user has selected a new global font size.全局字体大小缩放发生改变

7.android:theme

<Activity ...android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

原文:http://stephen830.iteye.com/blog/1129203

Theme.Dialog: Activity显示为对话框模式

Theme.NoTitleBar: 不显示应用程序标题栏

Theme.NoTitleBar.Fullscreen: 不显示应用程序标题栏,并全屏

Theme.Light: 背景为白色

Theme.Light.NoTitleBar: 白色背景并无标题栏

Theme.Light.NoTitleBar.Fullscreen: 白色背景,无标题栏,全屏

Theme.Black: 背景黑色

Theme.Black.NoTitleBar: 黑色背景,无标题栏

Theme.Black.NoTitleBar.Fullscreen: 黑色背景,无标题栏,全屏

Theme.Wallpaper: 用系统桌面为应用背景

Theme.Wallpaper.NoTitileBar: 用系统桌面为应用背景,无标题栏

Theme.Wallpaper.NoTitleBar.Fullscreen: 用系统桌面为应用程序背景,无标题栏,全屏

Theme.Translucent: 透明背景

Theme.Translucent.NoTitleBar: 透明背景并无标题

Theme.Translucent.NoTitleBar.Fullscreen: 透明背景,无标题栏,全屏

Theme.Panel: 面板风格显示

Theme.Light.Panel: 平板风格显示