Android控件属性集锦_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android控件属性集锦

Android控件属性集锦

 2014/4/23 23:28:31  奇文共欣赏,疑义相与析  博客园  我要评论(0)
  • 摘要:第一类:属性值true或者falseandroid:layout_centerHrizontal水平居中android:layout_centerVertical垂直居中android:layout_centerInparent相对于父元素完全居中android:layout_alignParentBottom元素下边缘贴紧父元素的下边缘android:layout_alignParentLeft元素左边缘贴紧父元素的左边缘android
  • 标签:android 控件 Android控件

class="p0">第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中

android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中

android:layout_alignParentBottom 元素下边缘贴紧父元素的下边缘

android:layout_alignParentLeft 元素左边缘贴紧父元素的左边缘

android:layout_alignParentRight 元素右贴紧父元素的右边缘

android:layout_alignParentTop 元素上贴紧父元素的上边缘

android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

android:layout_alignParentStart紧贴父元素结束位置开始

android:layout_alignParentEnd紧贴父元素结束位置结束

android:animateLayoutChanges布局改变时是否有动画效果

android:clipChildren定义子布局是否一定要在限定的区域内

android:clipToPadding定义布局间是否有间距

android:animationCache定义子布局也有动画效果

android:alwaysDrawnWithCache定义子布局是否应用绘图的高速缓存

android:addStatesFromChildren定义布局是否应用子布局的背景

android:splitMotionEvents定义布局是否传递touch事件到子布局

android:focusableInTouchMode定义是否可以通过touch获取到焦点

android:isScrollContainer定义布局是否作为一个滚动容器 可以调整整个窗体

android:fadeScrollbars滚动条自动隐藏

android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)

android:visibility定义布局是否可见

android:requiresFadingEdge定义滚动时边缘是否褪色

android:clickable定义是否可点击

android:longClickable定义是否可长点击

android:saveEnabled设置是否在窗口冻结时(如旋转屏幕)保存View的数据

android:filterTouchesWhenObscured所在窗口被其它可见窗口遮住时,是否过滤触摸事件

android:keepScreenOn设置屏幕常亮

android:duplicateParentState是否从父容器中获取绘图状态(光标,按下等)

android:soundEffectsEnabled点击或触摸是否有声音效果

android:hapticFeedbackEnabled设置触感反馈

 


 

第二类:属性值必须为id的引用名“@id/id-name

android:layout_alignBaseline 本元素的文本下边缘与某元素文本下边缘水平对齐

android:layout_below 在某元素的下方

android:layout_above 在某元素的的上方

android:layout_toLeftOf 在某元素的左边

android:layout_toRightOf 在某元素的右边

android:layout_toStartOf本元素从某个元素开始

android:layout_toEndOf本元素在某个元素结束

android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

android:layout_alignStart本元素与某元素开始位置对齐

android:layout_alignEnd本元素与某元素结束位置对齐

android:ignoreGravity 指定元素不受重力的影响

android:layoutAnimation定义布局显示时候的动画

android:id 为布局添加ID方便查找

android:tag为布局添加tag方便查找与类似

android:scrollbarThumbHorizontal设置水平滚动条的颜色drawable

android:scrollbarThumbVertical设置垂直滚动条的颜色drawable

android:scrollbarTrackHorizontal设置水平滚动条背景(轨迹)的颜色drawable

android:scrollbarTrackVertical设置垂直滚动条背景(轨迹)的颜色drawable

android:scrollbarAlwaysDrawHorizontalTrack 设置水平滚动条是否始终显示

android:scrollbarAlwaysDrawVerticalTrack 设置垂直滚动条是否始终显示

android:scrollbarDefaultDelayBeforeFade设置N毫秒后开始淡化,以毫秒为单位。

android:scrollbarFadeDuration设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位

android:scrollbarSize设置滚动条的宽度。

android:scrollbarStyle设置滚动条的风格和位置。

android:nextFocusLeft 设置左边指定视图获得下一个焦点

android:nextFocusRight设置右边指定视图获得下一个焦点

android:nextFocusUp设置上边指定视图获得下一个焦点

android:nextFocusDown设置下边指定视图获得下一个焦点

android:nextFocusForward设置指定视图获得下一个焦点

android:contentDescription 说明

android:OnClick 点击时从上下文中调用指定的方法

 


 

第三类:属性值为具体的像素值,如30dip40px,50dp

px:实际像素;dp(dip)屏幕的物理尺寸(常用);spdp相似,可以自动调整字体大小

android:layout_width定义本元素的宽度

android:layout_height定义本元素的高度

android:layout_margin 本元素离上下左右间的距离

android:layout_marginLeft 本元素左边缘离某元素左边缘的距离(当设置本元素为toRightOf某元素时,为本元素左边缘离某元素右边缘的距离)

android:layout_marginRight 本元素右边缘离某元素右边缘的距离(当设置本元素为toLeftOf某元素时,为本元素右边缘离某元素左边缘的距离)

android:layout_marginTop 本元素上边缘离某元素上边缘的距离(当设置本元素为layout_bellow某元素时,为本元素上边缘离某元素底边缘的距离)

android:layout_marginBottom 本元素底边缘离某元素底边缘的距离(当设置本元素为layout_above某元素时,为本元素底边缘离某元素上边缘的距离)

android:layout_marginStart本元素离开始的位置的距离

android:layout_marginEnd本元素离结束位置的距离

android:scrollX水平初始滚动偏移

android:scrollY垂直初始滚动偏移

android:background本元素的背景

android:padding指定本布局(如buttontext文本)与父元素(如button)的间距

android:paddingLeft指定本布局(如buttontext文本左边缘)与父元素(如button)的左边缘间距(下同)

android:paddingTop指定本布局上边缘与父元素上边缘间距

android:paddingRight指定本布局右边缘与父元素右边缘间距

android:paddingBottom指定本布局底边缘与父元素底边缘间距

android:paddingStart指定布局左边与子布局的间距与android:paddingLeft相同

android:paddingEnd指定布局右边与子布局的间距与android:paddingRight相同

android:fadingEdgeLength 设置边框渐变的长度

android:minHeight最小高度

android:minWidth最小宽度

android:translationX 水平方向的移动距离

android:translationY垂直方向的移动距离

android:transformPivotX相对于一点的水平方向偏转量

android:transformPivotY相对于一点的垂直方向偏转量

 


 

第四类:属性值问Android内置值的

android:gravity控件内(如文本)布局方式,可选top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

android:layout_gravity控件相对父元素布局方式,可选同上

android:persistentDrawingCachehua定义绘图的高速缓存的持久性 

android:descendantFocusability控制子布局焦点获取方式 常用于listViewitem中包含多个控件 点击无效

android:scrollbars设置滚动条的状态

android:scrollbarStyle设置滚动条的样式

android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)

android:scrollbarFadeDuration设置滚动条淡入淡出时间

android:scrollbarDefaultDelayBeforeFade设置滚动条N毫秒后开始淡化,以毫秒为单位。

android:scrollbarSize设置滚动调大小

android:fadingEdge 设置拉滚动条时 ,边框渐变的放向

android:drawingCacheQuality设置绘图时半透明质量

android:OverScrollMode滑动到边界时样式

android:alpha设置透明度

android:rotation旋转度数

android:rotationX水平旋转度数

android:rotationY垂直旋转度数

android:scaleX设置X轴缩放

android:scaleY设置Y轴缩放

android:verticalScrollbarPosition摄者垂直滚动条的位置

android:layerType设定支持

android:layoutDirection定义布局图纸的方向

android:textDirection定义文字方向

android:textAlignment文字对齐方式

android:importantForAccessibility设置可达性的重要行

android:labelFor添加标签

android:layout_weight View中很重要的属性,按比例划分空间

android:hint 设置EditText为空时输入框内的提示信息

android:LinearLayout它确定了LinearLayout的方向,其值可以为vertical, 表示垂直布局horizontal, 表示水平布局

 


 

TextView属性汇总

android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) 

android:linksClickable设置链接是否点击连接,即使设置了autoLink。

android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。 

android:bufferType指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见这里1、这里2。

android:capitalize设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见EditView此属性说明。 

android:cursorVisible设定光标为显示/隐藏,默认显示。

android:digits设置允许输入哪些字符。如“1234567890.+-*/% ()”

android:drawableBottom在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。

android:drawableLeft在text的左边输出一个drawable,如图片。 

android:drawablePadding设置text与drawable(图片)的间隔,与drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。

android:drawableRight在text的右边输出一个drawable。

android:drawableTop在text的正上方输出一个drawable

android:editable设置是否可编辑。

android:editorExtras设置文本的额外的输入数据。

android:ellipsize设置当文字过长时,该控件该如何显示。有如下值设置:”start”—-省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)

android:freezesText设置保存文本的内容以及光标的位置。

android:gravity设置文本位置,如设置成“center”,文本将居中显示。

android:hintText为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在 EditView中使用,但是这里也可以用。

android:imeOptions附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。 

android:imeActionId设置IME动作ID。

android:imeActionLabel设置IME动作标签。 

android:includeFontPadding设置文本是否包含顶部和底部额外空白,默认为true。 

android:inputMethod为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是这里报错找不到。 

android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。 

 android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。

android:ems设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度

android:maxEms设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。

android:minEms设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。

android:maxLength限制显示的文本长度,超出部分不显示。

android:lines设置文本的行数,设置两行就显示两行,即使第二行没有数据。

android:maxLines设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。

android:minLines设置文本的最小行数,与lines类似。

android:lineSpacingExtra设置行间距。

android:lineSpacingMultiplier设置行间距的倍数。如”1.2”

android:numeric如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。

android:password以小点”.”显示文本

android:phoneNumber设置为电话号码的输入方式。

android:privateImeOptions设置输入法选项,此处无用,在EditText将进一步讨论。

android:scrollHorizontally设置文本超出TextView的宽度的情况下,是否出现横拉条。

android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 TextView中设置后无效果。

android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用。

android:shadowDx设置阴影横向坐标开始位置。

 

android:shadowDy设置阴影纵向坐标开始位置。

android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好

android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_ singleLine "

android:singleLine="true" android:layout_width="20dp"将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行

android:text设置显示文本.

android:textAppearance设置文字外观。如 “?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。可textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse

android:textColor设置文本颜色

android:textColorHighlight被选中文字的底色,默认为蓝色

android:textColorHint设置提示信息文字的颜色,默认为灰色。与hint一起使用。 

android:textColorLink文字链接的颜色. 

android:textScaleX设置文字之间间隔,默认为1.0f。 

android:textSize设置文字大小,推荐度量单位”sp”,如”15sp” 

android:textStyle设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开 

android:typeface设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3] 

android:height设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米) 

android:maxHeight设置文本区域的最大高度 

android:minHeight设置文本区域的最小高度 

android:width设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width 的区别看这里。

android:maxWidth设置文本区域的最大宽度

android:minWidth设置文本区域的最小宽度

 


 

Android EditText 属性汇总

android:layout_gravity="center_vertical"设置控件显示的位置:默认top,这里居中显示,还有bottom 

android:hint="请输入数字!"设置显示在空间上的提示信息

android:numeric="integer"设置只能输入整数,如果是小数则是:decimal

android:singleLine="true"设置单行输入,一旦设置为true,则文字不会自动换行。 

android:password="true" 设置只能输入密码

android:textColor = "#ff8c00"字体颜色

android:textStyle="bold"字体,bold, italic, bolditalic

 

android:textSize="20dip" 大小 

android:capitalize = "characters" 以大写字母写 

android:textAlign="center" EditText没有这个属性,但TextView有

android:textColorHighlight="#cccccc" 被选中文字的底色,默认为蓝色

android:textColorHint="#ffff00"设置提示信息文字的颜色,默认为灰色

android:textScaleX="1.5"控制字与字之间的间距 

android:typeface="monospace"字型,normal, sans, serif, monospace 

android:background="@null"空间背景,这里没有,指透明 

android:layout_weight="1" 权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。 

android:textAppearance="?android:attr/textAppearanceLargeInverse" 文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对? 

 

通过EditText的layout xml文件中的相关属性来实现: 

  1. 密码框属性 android:password="true"  这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。

  2. 纯数字 android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

  3. 仅允许 android:capitalize="cwj1987" 这样仅允许接受输入cwj1987,一般用于密码验证

  下面是一些扩展的风格属性

  android:editable="false" 设置EditText不可编辑

  android:singleLine="true" 强制输入的内容在单行

  android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

 


 

Android activity属性汇总

android:allowTaskReparenting是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务。 

android:alwaysRetainTaskState是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态 

android:clearTaskOnLanunch 比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 从新启动 P,是否显示 Q

android:configChanges当配置list发生修改时,是否调用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".

android:enabled  activity 是否可以被实例化,

android:excludeFromRecents 是否可被显示在最近打开的activity列表里

android:exported 是否允许activity被其它程序调用

android:finishOnTaskLaunch是否关闭已打开的activity当用户重新启动这个任务的时候

 

android.icon

android:label

android:launchMode  activity启动方式, "standard" "singleTop" "singleTask" "singleInstance"其中前两个为一组, 后两个为一组 

android:multiprocess允许多进程

android:name  activity的类名, 必须指定

androidnHistory 是否需要移除这个activity当用户切换到其他屏幕时。这个属性是 API level 3 中引入的 

android:permission 

android:process一 个activity运行时所在的进程名,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。中的元素process属性能够为所有组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。 如果这个属性被分配的名字以:开头,当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。如果这个进程名以小写字母开头,这个activity将会运行在全局的进程中,被它的许可所提供。

android:screenOrientation  activity显示的模式, "unspecified" 默认值 "landscape" 风景画模式,宽度比高度大一些 "portrait" 肖像模式, 高度比宽度大。 "user" 用户的设置 "behind" "sensor" "nosensor" 

android:stateNotNeeded是否 activity被销毁和成功重启并不保存状态

android:taskAffinity  activity的亲属关系, 默认情况同一个应用程序下的activity有相同的关系 

android:theme   activity的样式主题, 如果没有设置,则activity的主题样式从属于应用程序,参见元素的theme属性 

android:windowSoftInputMode  activity主窗口与软键盘的交互模式, 自从API level 3 被引入。活动的主窗口如何与包含屏幕上的软键盘窗口交互。这个属性的设置将会影响两件事情: 

1>  软键盘的状态——是否它是隐藏或显示——当活动(Activity)成为用户关注的焦点。

2>  活动的主窗口调整——是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被软键盘覆盖时它的内容的当前焦点是可见的。 

它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。在任一组设置多个值——多个”state…”values,例如&mdash有未定义的结果。各个值之间用|分开。例如: <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >

在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的

值 描述"stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置"stateUnchanged" 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。

 "stateHidden" 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。 "stateAlwaysHidden" 软键盘总是被隐藏的,当该Activity主窗口获取焦点时。

 

 "stateVisible" 软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。

 "stateAlwaysVisible" 当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。

"adjustUnspecified" 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。

"adjustResize" 该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。 

"adjustPan" 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。

 


 

 Android开发基础】应用界面主题Theme使用方法 

主题Theme就是用来设置界面UI风格,可以设置整个应用或者某个活动Activity的界面风格。在Android SDK中内置了下面的Theme,可以按标题栏Title Bar和状态栏Status Bar是否可见来分类:

 

  • 1 •android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式 
  • 2 •android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏 
  • 3 •android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏 
  • 4 •android:theme="Theme.Light" 背景为白色 
  • 5 •android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏 
  • 6 •android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏 
  • 7 •android:theme="Theme.Black" 背景黑色 
  • 8 •android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏 
  • 9 •android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏 
  • 10 •android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景 
  • 11 •android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏 
  • 12 •android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏 
  • 13 •android:theme="Translucent" 半透明 
  • 14 •android:theme="Theme.Translucent.NoTitleBar" 半透明、无标题栏 
  • 15 •android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 半透明、无标题栏、全屏 
  • 16 •android:theme="Theme.Panel" 
  • 17 •android:theme="Theme.Light.Panel" 

这些主题可以应用到整个应用Application范围或者某个活动Activity范围中。

应用Application范围 :在AndroidManifest.xml中的application节点中设置theme属性,主题theme应用到整个应用程序中。 <application  Android:icon=@drawable/icon  Android:icon=@string/app_name  Android:icon=@android:style/ Theme.Black.NoTitleBar>

活动Activity范围: 使用java代码或者在AndroidManifest.xml中对活动Activity的主题进行设置,主题仅应用到当前活动中。AndroidMainifest.xml设置方法: <activity android:name=.About android:label=@string/app_name android:theme=@android:style/ Theme.Black.NoTitleBar” > 使用java代码进行设置,在当前活动ActivityonCreate中进行设置: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setTheme(android.R.style.Theme_Translucent_NoTitleBar); setContentView(R.layout.main); }

 


 

Android各种资源文件的定义

android里的资源可以是一个文件(mp3,视频、音频)或者是一个值(一个对话框中的一个标题),这些值被绑定到一个可执行的应用程序。  这些文件和值被绑定到应用程序,你可以修改它们,但是不需要重新编译和重新部署应用程序。  android是一个平台,一个框架,这个框架包含许多资源,string、color、bitmap、style等。android的AAPT 会自动为这些文件建立一个ID,在程序中就可以以使用这些ID来引用这些resources,如果你想改某个值,只需要修改这些resource而不需要 修改源代码。  resources的使用  resoureces就是res目录下的那些目录和文件,常用的有: 

res/drawable/ 用来存放图片文件  res/layout/ 用来存放布局定义文件  res/values/ 用来存放一些变量、参数等文件  android允许你定义多个string xml文件 这些resource位于/res/value目录下,文件名是任意的  这是一个普通的字符串资源文件 

Xml代码 


 

  • <?xml version="1.0" encoding="utf-8"?>  
  • <resources>  
  •     <string name="hello">Hello World, SendMessage!</string>  
  •     <string name="app_name">SMS</string>  
  • </resources>  <?xml version="1.0" encoding="utf-8"?<resources>    <string name="hello">Hello World, SendMessage!</string>
  •     <string name="app_name">SMS</string>
  • </resources>

 


 

当这个文件被创建或修改了,eclipse的adt插件会自动更新你源代码中一个叫R.java的文件  R.java  在R.java的注释部分, 有这样一段话:“AUTO-GENERATE FILE. DO NOT MODIFY”,这个文件是自动生成的,不要修改。  这个文件是在程序编译过程中由aapt(Android Asset Packaging Tool) 自动生成  这个文件中的属性都是public static final的,所以可以直接在Java代码中引用,每个属性都代表一个资源,看起来就像为每个资源都定义了一个ID,然后通过这个ID来访问资源  所有的资源文件都被编译进最后生成的二进制包中,这样能够带来很高的性能和效率  string的定义非常简单 

Xml代码 

<string name="key">value</string>  

<string name="key">value</string>

value可以只普通的字符串也可以是html代码,或者是包含单引号,双引号的字符串 

Xml代码 

  1. <string name="quoted_string">"quoted'string"</string>  
  2.    <string name="double_quoted_string">\"double quotes\"</string>  
  3.    <string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>  
  4.  <string name="quoted_string">"quoted'string"</string>
  5.     <string name="double_quoted_string">\"double quotes\"</string>
  6.     <string name="target_string">hello <b><i>android</i></b>,you are very younger!</string>

在其他的android xml文件中引用含有html标记的值和引用普通的string一样 

Xml代码 

  1. <TextView  android:text="@string/target_string"  
  2.     android:id="@+id/text3"   
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"></TextView>  <TextView  android:text="@string/target_string"
  5. android:id="@+id/text3" 
  6. android:layout_width="wrap_content" 
  7. android:layout_height="wrap_content"></TextView>

在java程序中应用这些值可以这样 

Java代码 

this.getResources().getString(R.string.target_string);  

this.getResources().getString(R.string.target_string);

dimension resources  android中定义的dimension单位有以下这些    px: pixel(像素)    in:inches(英寸)    mm:millimeter(毫米)    pt:point(点)    dp:density密度    sp:刻度  定义dimension可定义string一样 

Xml代码 

  • <resources>  
  •   <dimen name="mysize_in_pixels">1px</dimen>  
  •   <dimen name="mysize_in_dp">1dp</dimen>  
  •  <dimen name="medium_size">100sp</dimen>  
  • </resources>  
  • <resources>
  •   <dimen name="mysize_in_pixels">1px</dimen>
  •   <dimen name="mysize_in_dp">1dp</dimen>
  •   <dimen name="medium_size">100sp</dimen>
  •  
  • </resources>

你可以在style中或者定位android UI 中使用这些dimension资源  如果在java中需要使用这些dimensions可以调用getResources方法 

Java代码 

this.getResources().getDimension(R.dimen.mysize_in_pixels);  

this.getResources().getDimension(R.dimen.mysize_in_pixels);

在ml文件中使用dimension 

Xml代码 

  • <TextView  android:text="@string/target_string"  
  •     android:id="@+id/text3"   
  •     android:layout_width="wrap_content"   
  •     android:textSize="@dimen/medium_size"   android:layout_height="wrap_content"></TextView>  
  • <TextView  android:text="@string/target_string"
  • android:id="@+id/text3" 
  • android:layout_width="wrap_content" 
  • android:textSize="@dimen/medium_size" android:layout_height="wrap_content"></TextView>

Image resource  android会为每个放置在res/drawable目录下的图片文件生成ID,ID就是这个图片的文件名,如果一个图片的名是sample.gif那么就会在R.java文件中的drawable下生成 

Java代码 

public static final int sample=0x7f020001;   public static final int sample=0x7f020001;

android支持的图片格式有:gif,jpg,png  在xml文件中使用image resource 

Xml代码       

  • <Button android:text="Button01"   
  •     android:id="@+id/Button01"   
  •     android:layout_width="wrap_content"   
  •     android:background="@drawable/sample"  
  •     android:layout_height="wrap_content"></Button>  
  • <Button android:text="Button01" 
  • android:id="@+id/Button01" 
  • android:layout_width="wrap_content" 
  • android:background="@drawable/sample"
  • android:layout_height="wrap_content"></Button>

在java文件中通过调用getResources的getDrawable方法 

Java代码 

  1. Drawable bitmap = this.getResources().getDrawable(R.drawable.sampe);  
  2.         Button button = (Button)findViewById(R.id.Button01);  
  3.        //给button设置一个背景图  
  4.         button.setBackgroundDrawable(bitmap);  
  5. Drawable bitmap = this.getResources().getDrawable(R.drawable.sampe);
  6.         Button button = (Button)findViewById(R.id.Button01);
  7.        //给button设置一个背景图
  8.         button.setBackgroundDrawable(bitmap);

在android中image是drawable资源的一种类型,android还支持其他的drawable  它叫color-drawable,它本质上是一个彩色矩形  它的定义如下 

Xml代码 

  • <resources>  
  •     <drawable name="red_rectangle">#f00</drawable>  
  •     <drawable name="blue_rectangle">#0000ff</drawable>  
  •     <drawable name="green_rectangle">#f0f0</drawable>  
  • </resources>  
  • <resources>
  •     <drawable name="red_rectangle">#f00</drawable>
  •     <drawable name="blue_rectangle">#0000ff</drawable>
  •     <drawable name="green_rectangle">#f0f0</drawable>
  • </resources>

Java中使用color-drawable 

Java代码 

  1. // 取得drawable  
  2. ColorDrawble redDrawable =   
  3. (ColorDrawable)getResources().getDrawable(R.drawable.red_rectnagle);  
  4. //设置textView的背景  
  5. textView.setBackground(redDrawable);  
  6. // 取得drawable
  7. ColorDrawble redDrawable = 
  8. (ColorDrawable)getResources().getDrawable(R.drawable.red_rectnagle);
  9. //设置textView的背景
  10. textView.setBackground(redDrawable);
  11. xml中使用color-drawable 
  12. Xml代码 
  13. <TextView android:layout_width="fill_parent"  
  14.           android:layout_height="wrap_content"  
  15.           android:textAlign="center"  
  16.           android:background="@drawable/red_rectangle"/>  

 


附:HashMap Hashtable LinkedHashMap 和TreeMap.详解

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. 

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列

HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。 

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。

在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。


<好东西不忘分享,与君共勉之!>第一次发博文,整理了这么多,顶一下吧!

 

 

 


 

发表评论
用户名: 匿名