安卓xml布局如何动态改变values中的strings.xml的值

当前访客身份:游客 [
:为什么我只要使用setParameters 或者 setProfile...
:蛮好的资料,解释清楚、通俗易懂!!
:很全面,很详细。
:引用来自“Xushao”的评论 很详细! 有个问题:我...
:作者辞藻华丽,用词生动,真是我辈楷模
:listView嵌入到ScrollView里面,我也被这个害的很...
:粗心打错字 ~。~ 嘿嘿
:SoftReference是强引用,????????...
:纯干货,很好,谢谢分享
今日访问:5
昨日访问:89
本周访问:192
本月访问:5
所有访问:65393
android适配规则(一)
发表于3年前( 23:28)&&
阅读(2471)&|&评论()
0人收藏此文章,
如有理解错,希望被指出
单位杂谈:
px(pixel) 屏幕像素
dip(density-independent pixel) 设备独立像素,缩写为dp,可以理解为另外一种标识像素的单位,它与像素存在以下关系:
dip/pixel = dpi/160 =& dip = dpi*pixel/160=&&px = dp * (dpi / 160)& 当dpi=160时&& dip=px
屏幕对角线的长度代表手机的尺寸。
dpi(dot per inch) 表示每英寸像素点有多少,也可以认为是每英寸像素密集度,我们所说的density其实是dpi的估算值,比如165的dpi认为是160的density。
&&&&&& 基准线是160dpi
比如:计算WVGA(800*480)分辨率,3.7英寸的密度DPI,如图1所示
Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252
根据上面的计算方案,下面计算得出:
QVGA(240X320)&&&&&&&&&&&&&&& 2.7inch&& 148dpi&&& ldpi
HVGA(320x480)&&&&&&&&&&&&&&& 3.2inch&& 180dpi&&& mdpi
QVGA(ADP2)(320X480)&&&& 3.2inch&& 180dpi&&& mdpi
WQVGA(240x400)&&&&&&&&&&& 3.3inch&& 141dpi&&& ldpi
WQVGA(240x432)&&&&&&&&&&&& 3.4inch&& 145dpi&&& ldpi
FWQVGA(480x854)&&&&&&&&&& 3.7inch&& 265dpi&&& hdpi
WXGA()&&&&&&&&&&&&& 4.7inch&& 312dpi&&& xhdpi
WVGA(480x800)&&&&&&&&&&&&&&& 5.1inch&& 183dpi&&& mdpi
FWVGA(480x854)&&&&&&&&&&&&&& 5.4inch&& 181dpi&&& mdpi
Nexus One(480x720)&&&&&&&& 3.7inch&& 270dpi&&& hdpi
Nexus S(480x800)&&&&&&&&&&&&&& 4.0inch&& 233dpi&&& hdpi
从上可见,dpi是由屏幕分辨率和屏幕尺寸一起决定的。
为不同的语言和硬件创建资源:
利用目录结构描述,你可以为指定的语言、地点、硬件配置创建不同的资源。在运行时,安卓利用它自己的动态选择机制动态选着这些值。
在res文件夹内,你可以通过使用一个平行的目录结构指定可选择的资源值。连字符“-”被用来分离指定条件的修饰符。
先举个跨语言的例子:
&& values/
&&&& strings.xml
&& values-fr/&& 法国人
&&&& strings.xml
&& values-fr-rCA/& 法裔加拿大人
&&&& strings.xml
下面列出可用的资源值修饰符:
1.Mobile Country Code(MCC 移动国家编码) 和 Mobile Newwork Code(MNC 移动网络编码)
国家和可选择的网络取决于你当前所使用的SIM卡,MCC:mcc+3个代表国家的数字编码,MNC:mnc+2个代表网络的数字编码,举个例子:mcc234-mnc20,你可以找到这些编码在.
2.语言和区域
语言根据ISO 639-1 指定2个小写字母作为代表,紧接着可选择的区域先以r开头(region)然后根据ISO 3166-1-alpha-2 语言编码,也是2个字母不过是大写,还是举个例子吧:
en(英语),en-rUS(美国英语),en-rGB(GB不知道是哪个国家~。~,大家可以去查找通过维基百科)
3.最小的屏幕宽度
以sw&Dimention value&dp的格式(比如sw600dp,sw320dp…)来指定最小的设备尺寸(宽和高)。那为什么说是最小屏幕宽度?考虑到横竖屏,实质就是宽高的较小值。
用在提供多个布局,安卓选择最接近但是不超过当前屏幕尺寸。
4.有效的屏幕宽度
以w&Dimention value&dp 来表示最小的设备屏幕宽度,比如:w600dp,w320dp,w720dp等,同样也是为了支持多个布局选择,不同于最小的屏幕宽度,有效的屏幕宽度
它跟当前的屏幕宽度做对比(比如当前是横屏的屏幕宽度),安卓选择最接近但是不超过当前屏幕尺寸。
5.有效的屏幕高度
与有效的屏幕宽度类似,表示方法以h&Dimension value&dp.
6.屏幕尺寸
实用大致对照表:
屏幕&&&&&&&&&&&& 宽度&&&&&&&&& 高度&&&&&&&&&& 尺寸&&&&&&&&&&&&&& 大小&&&&&&& 密度&&&&&&&
Type&&&&&&&&&& (Pixels)&&&& (Pixels)&& Range (inches)&&&& Size&&&&&&&& Group
QVGA&&&&&&&&&&& 240&&&&&&&&& 320&&&&&&& 2.6 - 3.0&&&&&&&&&&& Small&&&&&& Low
WQVGA&&&&&&&& 240&&&&&&&&& 400&&&&&&& 3.2 - 3.5&&&&&&&&&& normal&&&& Low
FWQVGA&&&&&& 240&&&&&&&&& 432&&&&&&& 3.5 - 3.8&&&&&&&&&& normal&&&& Low
HVGA&&&&&&&&&&& 320&&&&&&&&& 480&&&&&&& 3.0 - 3.5&&&&&&&&&& normal&&&& Medium
WVGA&&&&&&&&&& 480&&&&&&&&& 800&&&&&&& 3.3 - 4.0&&&&&&&&&& normal&&&& High
FWVGA&&&&&&&& 480&&&&&&&&& 854&&&&&&& 3.5 - 4.0&&&&&&&&&& normal&&&& High
WVGA&&&&&&&&&& 480&&&&&&&&& 800&&&&&&& 4.8 - 5.5&&&&&&&&&&& large&&&&&& Medium
FWVGA&&&&&&&& 480&&&&&&&&& 854&&&&&&&& 5.0 - 5.8&&&&&&&&&& large&&&&&& Medium
大约 2~3 inch 为 small, 3~4 inch 为normal,4~6inch 为large, 大于6为xlarge
因为每个屏幕类型都有不同的尺寸(比如QVGA可能有2~3个尺寸),在平板电脑里更常见,比较好的方式是用前面提到的最小的屏幕宽度和有效的屏幕宽度(高度)来更精确的指定,安卓在检测layout的修饰符,会优先考虑后者。
7.屏幕的方向
port(portrait)、land(landscape)、square(square)
8.Dock Mode 所谓的底座模式?
car(行车模式)、desk (断开底座)
9.Night Mode
这个用来指定是否是夜间模式,night或者notnight,以此我们可以修改一个theme或者color theme来达到效果
10.屏幕像素密度(dpi)
最佳实践方式:给ldpi(120dpi),mdpi(160dpi),hdpi(240dpi),xhdpi(320dpi) 都指定对应的图片资源。
然而你也可以指定nodpi表示不去适配dpi。同样安卓也是选择最接近当前设备dpi的Drawables文件夹。
11.触屏类型
notouch、stylus、finger
12.键盘有效性
One of keysexposed, keyshidden, or keyssoft.
13.键盘输入类型
One of nokeys, qwerty, or 12key.
14.导航键有效性
One of navexposed or navhidden.
15.UI导航类型
nonav,dpad,trackball,wheel
16.平台版本
target API Level,& 以v&API level&& 比如v7. 用来限制资源只能跑在指定API或者更高的设备上。
你可以为任何资源指定多个修饰符,然后以- 分开,任何混合写法都是支持的,但是只能是上面列出的修饰符,还有一点就是每种修饰符只能出现1次。
&&&&&&&& layout-large-land
&&&&&&&& layout-xlarge-port-keyshidden
&&&&&&&& layout-long-land-notouch-nokeys
&&&&&&&& values-rUS-en (out of order)
&&&&&&&& values-rUS-rUK (multiple values for a single qualifier)
注意:安卓如果找不到合适的资源文件夹将会报错,所以通常你需要指定一个默认的文件夹(没有任何修饰符的)。
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读strings.xml转义字符, 注意细节解决 - 蓝花花的天空 - ITeye技术网站
博客分类:
XML转义字符
以下为XML标志符的数字和字符串转义符
"&&&& (&#34; 或 &)
'&&&& (&#39; 或 &)
&&&&& (&#38; 或 &)
lt(&) (&#60; 或 &)
gt(&) (&#62; 或 &)
如题:
比如:在string.xml中定义如下一个字符串,
&string name="first"&大家好,欢迎来到eoeandroid社区。welcome to here!&/string&
我想以
大家好,欢迎来到eoeandroid社区。
welcome to here!
两行的形式输出,如何做?加\n,看下面:
&string name="hello"&大家好,欢迎来到eoeandroid社区。\nwelcome to here!&/string&
android中的空格编码 string.xml前后加空格的技巧
&string name="space"&&#160;&#160;&#160;&#160;我来看空格&/string&
&#160; 这个就代表着空格
1. 遇到如下错误的时候说明你需要在单引号签名加转义字符(\):
Description Resource Path Location Type error: Apostrophe not preceded by \ (in Search' Titles) strings.xml
只要将定义的字符串中的单引号('), 修改为(\')即可
2. 变量文本格式(%s)提示:
Multiple annotations found at this line:
- error: Multiple substitutions specified in non- did you mean to add the formatted="false"
attribute?
- error: Unexpected end tag string
这是由于新的SDK(虽然从没用过老的)采用了新版本的aapt(Android项目编译器), 这个版本的aapt编译起来会比老版本更加的严格, 在Android最新的开发文档中描述String的部分,已经说明了如何去设置 %s 等符号, 可以点击去看.
简单解决方法就是:把%s之类的变量格式替换成%1$s, %1表示第一个位置的变量, $s表示为字符串类型
例如:
&string name="welcome_messages"&Your First Var is %1$s! You Second Var is %2$d.&/string&
浏览 10577
lanyan_lan
浏览: 226284 次
来自: 上海
非常感谢,正在做https的
赞一个,十分感谢![项目实践-进阶篇] Android 项目中使用Ant + Groovy能干什么? - 推酷
[项目实践-进阶篇] Android 项目中使用Ant + Groovy能干什么?
提出问题:
使用Ant + Groovy 编译生成不同环境的APK包 (例如,prod、uat、qa、dev)
问题描述:
默 认情况下,项目的package为 ”com.vmn.app.crm”,我们需要在编译的时候同时生成package 为”com.vmn.app.crm.uat”、”com.vmn.app.crm.qa”、”com.vmn.app.crm.dev”的APK,如此 我们在同一个测试机器上就能同时安装prod、uat、qa、dev四个环境的APK。
问题分析:
要实 现上面提出的问题,我们需要在编译前,需要动态修改AndroidManifest.xml里面的package值,由于package值改变了,那么编 译后生成的R的路径也就随之改变了,因此我们还需要动态修改*.java文件中R的package路径,与此同时,为了便于区分不同环境的APK,我们还 需要动态修改res/values/strings.xml中的app_name值。
此处实际上 我们只是动态修改了AndroidManifest.xml里面的package值,而实际上项目工程中的package没有变动,因此在 AndroidManifest.xml文件里面,我们指定application、activity、provider、service等时,不能使用 相对路径(相对AndroidManifest.xml里面的package值),而需要使用绝对路径。
使用 Ant + Groovy 编译时根据项目配置文件信息确定应用日志显示等级以及是否Debug
问题描述:
项 目中,我们可能有引入config.xml文件,该文件中包含了一些项目相关的配置信息,比如,该项目的log level、运行环境env (prod/uat/qa/dev)、supported features等信息,编译时我们根据log level信息确定应用日志显示等级,根据env确定应用是否能够Debug。
问题分析:
我们可以自定 义一个Logger类,config.xml中的log level用于控制Logger显示等级。根据env我们可以在编译前动态修改AndroidManifest.xml的 &application&的android:debuggable属性值。
使用Ant + Groovy 编译时根据不同的环境,动态引入library
问题描述:
项目中我们使用到的Chart使用到了Adobe AIR技术,由于Adobe AIR运行需要而外的运行环境,即在运行我们项目的Chart时,需要该设备上存在Adobe AIR运行环境。
问题分析:
如 此我们提供了两种方案:一、将Adobe AIR的运行环境包在我们项目中;二、不将Adobe AIR的运行环境包在我们的项目中,提示用户去下载安装Adobe AIR运行环境。第二种方案的提出原因有很多,比如Adobe AIR包在我们项目中后,项目从size上变得很庞大,另一方面可以涉及到版权问题。
项目实践:
根据上面提出的问题,下面我将从代码角度出发,具体展示Ant + Groovy是如何实现的。这篇文章中没有涉及到Ant和Groovy细节的讲解,如果有不明白的地方,可以从官网上获取帮助。
项目准备:
& |- values
&&& |- strings.xml
&&& |- config.xml
|- AndroidManifest.xml
|- build.xml
|- env-process.groovy
各文件内容清单如下:
strings.xml
&string name=&app_name&&ACRM&/string&
config.xml
&!-- VERBOSE|DEBUG|INFO|WARN|ERROR|FATAL --&
&log level=&DEBUG&/&
&env type=&prod&/&
&supported-features&
&feature name=&chart&/&
&/supported-features&
AndroidManifest.xml
&manifest xmlns:android=&/apk/res/android&
package=&com.vmn.app.crm&
android:versionCode=&1&
android:versionName=&1.0& &
android:minSdkVersion=&9&
android:targetSdkVersion=&17& /&
&application
android:name=&com.vmn.app.crm.CrmAPP&
android:debuggable=&true&
android:icon=&@drawable/crm_app_icon&
android:label=&@string/crm_app_title& &
android:name=&com.vmn.app.crm.activity.MainViewActivity&
android:label=&@string/cv_string_app_name&&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/activity&
&/application&
&/manifest&
代码展示(核心代码)
在build.xml脚本中调用env-process.groovy脚本
&target name=&replace-android-resources& depends=&resolve&&
&groovy src=&${basedir}/env-process.groovy&&&/groovy&
env-process.groovy
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见安卓开发中修改了strings.xml中的app_name的值,可是APP名称还是原来的,为什么?_百度知道
安卓开发中修改了strings.xml中的app_name的值,可是APP名称还是原来的,为什么?
label=&quot.app_name&@string&#47那你看看清单文件这里是否引用了strings下面的appname
其他类似问题
为您推荐:
安卓的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 安卓color.xml 的文章

 

随机推荐