Android2.2 —— API 中文文档
[email protected]
目录:
( 1) —— TextView
( 2) —— EditText
( 3) —— AccessibilityService
( 4) —— Manifest
( 5) —— View
( 6) —— ImageView
( 7) —— ImageButton
( 8) —— QuickContactBadge
( 9) —— ZoomButton
( 10) —— CheckBox
( 11) —— RadioButton
( 12) —— Button
( 13) —— ToggleButton
( 14) —— ViewStub
( 15)—— GridView
一、 TextView
1 、结构
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
2 、已知直接子类:
Button, CheckedTextView, Chronometer, DigitalClock, EditText
3 、已知间接子类:
AutoCompleteTextView, CheckBox, CompoundButton, ExtractEditText,
MultiAutoCompleteTextView, RadioButton, ToggleButton
4 、 XML 属性
属性名称
描述
android:autoLink
设置是否当文本为 URL链接 /email/电话号码 /map时,文本显示为可点击的链接。可选值 (none/web/email/phone/map/all)
android:autoText
如果设置,将 自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。
android:bufferType
指定 getText() 方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,
也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见 这里1 、 这里2 。
android:capitalize
设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到,参见 EditView此属性说明。
android:cursorVisible
设定光标为显示/隐藏 ,默认显示。
android:digits
设置允许输入哪些字符。如“ 1234567890.+-*/%\n()”
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
设置是否可编辑。这里无效果,参见 EditView。
android:editorExtras
设置文本的额外的输入数据 。在 EditView再讨论。
android:ellipsize
设置当文字过长时 ,该控件该如何显示。有如下值设置: ”start”—–省略号显示在开头; ”end”——省略号显示在结尾; ”middle”—-省略号显示在中间; ”marquee” ——以 跑马灯 的方式显示 (动画横向移动 )
android:freezesText
设置保存文本的内容以及光标的位置。参见: 这里 。
android:gravity
设置文本位置,如设置成“ center”,文本将居中显示。
android:hint
Text为空时显示的文字提示信息,可通过 textColorHint设置提示信息的颜色。比较奇怪的是 TextView本来就相当于 Label,怎么会不设置 Text?!
android:imeOptions
附加功能,设置右下角 IME动作与编辑框相关的动作,如 actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在 EditView中再详细说明,此处无用。
android:imeActionId
设置 IME动作 ID。在 EditView再做说明,可以先看这篇帖子: 这里 。
android:imeActionLabel
设置 IME动作标签。在 EditView再做说明。
android:includeFontPadding
设置文本是否包含顶部和底部额外空白,默认为 true。
android:inputMethod
为文本指定输入法,需要完全限定名(完整的包名)。例如: com.google.android.inputmethod.pinyin,但是这里报错找不到。
android:inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型。在 EditView中再详细说明,这里无效果。
android:linksClickable
设置链接是否点击连接,即使设置了 autoLink。
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。分别设置 0.5f/1.0f/1.5f/2.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
设置文本区域的最小宽度
二、 EditText
1、结构
java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.EditText 已知直接子类: AutoCompleteTextView, ExtractEditText 已知间接子类: MultiAutoCompleteTextView
2、 xml属性
属性名称
描述
android:autoLink
设置是否当文本为 URL链接 /email/电话号码 /map时,文本显示为可点击的链接。可选值 (none/web/email/phone/map/all)。这里只有在同时设置 text时才自动识别链接,后来输入的无法自动识别。
android:autoText
自动拼写帮助。这里单独设置是没有效果的,可能需要其他输入法辅助才行,效果参见 视频 。
android:bufferType
指定getText()方式取得的文本类别。选项editable 类似于StringBuilder可追加字符,
也就是说getText后可调用append方法设置文本内容。spannable 则可在给定的字符区域使用样式,参见 这里1 、 这里2 。
android:capitalize
设置英文字母大写类型。设置如下值:sentences仅第一个字母大写;words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。在模拟器上用 PC键盘直接输入可以出效果,但是用软键盘无效果。
android:cursorVisible
设定光标为显示/隐藏,默认显示。如果设置 false,即使选中了也不显示光标栏。
android:digits
设置允许输入哪些字符。如“ 1234567890.+-*/%\n()”
android:drawableTop
在 text的正上方输出一个 drawable。在 EditView中的效果比较搞笑: ,居然在文本框里,而且删不了。
android:drawableBottom
在 text的下方输出一个 drawable,如图片。如果指定一个颜色的话会把 text的背景设为该颜色,并且同时和 background使用时覆盖后者。
android:drawableLeft
在 text的左边输出一个 drawable(如图片)。
android:drawablePadding
设置 text与 drawable(图片 )的间隔,与 drawableLeft、 drawableRight、 drawableTop、 drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:drawableRight
在 text的右边输出一个 drawable,如图片。
android:editable
设置是否可编辑。仍然可以获取光标,但是无法输入。
android:editorExtras
指定特定输入法的扩展,如 “com.mydomain.im.SOME_FIELD”。源码跟踪至EditorInfo.extras,暂无相关实现代码。
android:ellipsize
设置当文字过长时 ,该控件该如何显示。有如下值设置: ”start”—–省略号显示在开头; ”end”——省略号显示在结尾; ”middle”—-省略号显示在中间; ”marquee” ——以 跑马灯 的方式显示 (动画横向移动 )
android:freezesText
设置保存文本的内容以及光标的位置。参见: 这里 。
android:gravity
设置文本位置,如设置成“ center”,文本将居中显示。
android:hint
Text为空时显示的文字提示信息,可通过 textColorHint设置提示信息的颜色。
android:imeOptions
设置软键盘的 Enter键。有如下值可设置: normal, actionUnspecified, actionNone, actionGo
, actionSearch, actionSend, actionNext, actionDone
, flagNoExtractUi, flagNoAccessoryAction, flagNoEnterAction。可用 ’|’设置多个。这里仅设置显示图标之用,参见文章末尾例子。
android:imeActionId
设置 IME动作 ID,在 onEditorAction中捕获判断进行逻辑操作。
android:imeActionLabel
设置 IME动作标签。但是不能保证一定会使用,猜想在输入法扩展的时候应该有用。
android:includeFontPadding
设置文本是否包含顶部和底部额外空白,默认为 true。
android:inputMethod
为文本指定输入法,需要完全限定名(完整的包名)。例如: com.google.android.inputmethod.pinyin,但是这里报错找不到。关于自定义输入法参见 这里 。
android:inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型。有如下值设置: none、 text、 textCapCharacters字母大小、 textCapWords单词首字母大小、 textCapSentences仅第一个字母大小、 textAutoCorrect、 textAutoComplete自动完成、 textMultiLine多行输入、 textImeMultiLine输入法多行(如果支持)、 textNoSuggestions不提示、 textEmailAddress电子邮件地址、 textEmailSubject邮件主题、 textShortMessage短信息(会多一个表情按钮出来,点开如下图:
) 、 textLongMessage长讯息? 、 textPersonName人名、 textPostalAddress地址、 textPassword密码、 textVisiblePassword可见密码、 textWebEditText作为网页表单的文本、 textFilte文本筛选过滤、 textPhonetic拼音输入、 numberSigned有符号数字格式、 numberDecimal可带小数点的浮点格式、 phone电话号码、 datetime时间日期、 date日期、 time时间。部分参考 这里 。
android:marqueeRepeatLimit
在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever 时表示无限次。
android:ems
设置 TextView的宽度为 N个字符的宽度。参见 TextView中此属性的截图。
android:maxEms
设置 TextView的宽度为最长为 N个字符的宽度。与 ems同时使用时覆盖 ems选项。
android:minEms
设置 TextView的宽度为最短为 N个字符的宽度。与 ems同时使用时覆盖 ems选项。
android:maxLength
限制输入字符数。如设置为 5,那么仅可以输入 5个汉字 /数字 /英文字母。
android:lines
设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines
设置文本的最大显示行数,与 width或者 layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines
设置文本的最小行数,与 lines类似。
android:linksClickable
设置链接是否点击连接,即使设置了 autoLink。
android:lineSpacingExtra
设置行间距。
android:lineSpacingMultiplier
设置行间距的倍数。如 ”1.2”
android:numeric
如果被设置,该 TextView有一个数字输入法。有如下值设置: integer正整数、 signed带符号整数、 decimal带小数点浮点数。
android:password
以小点 ”.”显示文本
android:phoneNumber
设置为电话号码的输入方式。
android:privateImeOptions
提供额外的输入法选项 (字符串格式 )。依据输入法而决定是否提供,如 这里 所见。自定义输入法继承
InputMethodService。 这篇 文章也许有帮助。
android:scrollHorizontally
设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:selectAllOnFocus
如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 TextView中设置后无效果。
android:shadowColor
指定文本阴影的颜色,需要与 shadowRadius一起使用。参见 TextView中此属性的截图。
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。参见 TextView的截图。
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
设置文本区域的最小宽度
补充说明:
a). 由于是继承自 TextView,所以属性是一样的,但是这里重点补充了输入法相关的属性说明和研究,部分注释也做了相应的调整。
b). Word格式下载
http://download.csdn.net/source/2664164
3、例子
3.1 android:imeOptions例子
android:layout_width="100dp" android:layout_height="wrap_content">
((EditText)findViewById(R.id.txtTest)).setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) { Toast.makeText(TestActivity.this, "你点了 Go!", Toast.LENGTH_SHORT).show(); } return false; } });
三、 AccessibilityService
1、 结构
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Service
↳ android.accessibilityservice.AccessibilityService
public abstract class AccessibilityService extends Service
2、 类概述
当 AccessibilityEvent事件被启动后 AccessibilityService 会接收回调函数运行于后台,这些事件指的是在用户接口间的状态转换,比如 ,焦点变化,按钮被点击等。一些辅助服务继承于此类并且实现它的抽象方法,像这样的一个服务和其他服务一样在AndroidManifest.xml中被声明但它必须被指定操纵
android.accessibilityservice.AccessibilityService的意图,下面的是一段例子:
/>
辅助服务的声明周期只能被系统管理,启动或者停止这个服务必须由明确的用户通过启用或停用设备的设定,在系统通过呼叫 onServiceConnected()方法与服务绑定后,这个方法才能被想要执行装载的客户端所重载使用,一个辅助服务通过呼叫 setServiceInfo(AccessibilityServiceInfo)方法来设定 AccessibilityServiceInfo而配置。你可以在任何时候改变这个服务的配置但最好是在重载方法 onServiceConnected().中来使用。 一个辅助服务可以在特定的包中注册事件以提供特殊的反馈类型并且当最后一个关联的事件被解除的时候发出明确的超时提醒。
3、 通告策略
对于每个回馈类型只有一个辅助服务被通知,服务登记处按顺序被通知,因此,如果有两个服务为同一个包中的同一回馈类型注册那么第一个会被通知,然而有可能的是,可以为一个给定的回馈类型去把一个服务注册为默认的,这样的话如果没有其他的服务来取代这个事件这个服务就会被呼出使用,换句话说,默认的服务不会与其他的服务竞争并且不管注册的顺序而被通知。
4、 公共方法:
4.1 abstract void onAccessibilityEvent(AccessibilityEvent event)
Callback for AccessibilityEvents.
参数 event 一个事件
4.2 public final IBinder onBind (Intent intent)
实现返回一个内部的辅助接口的实现,子类不能被重写。
参数 intent 与服务相绑定的意图,注意其他任何包含在 Intent的外部意图将不能在此使用。
返回值 返回一个客户端可以在服务上访问的 IBinder。
4.3 public abstract void onInterrupt ()
打断辅助回馈内容时呼叫。
5、 保护方法:
5.1 protected void onServiceConnected ()
这个方法是 AccessibilityService 声明周期的一部分,在系统成功与服务绑定后才被呼叫,如果用来设定 AccessibilityServiceInfo. 这个方法更为方便。
四、Mainfest
1、结构
java.lang.Object ↳ android.Manifest
public final class Manifest extends Object
内部类
Manifest.permission
Manifest.permission_group
2、 Manifest.permission的常量
ACCESS_CHECKIN_PROPERTIES
允许在登入数据库的时候读写其中的属性表,并上传改变的值
ACCESS_COARSE_LOCATION
允许应用访问范围(如WIFI)性的定位
ACCESS_FINE_LOCATION
允许应用访问精确(如GPS)性的定位
ACCESS_LOCATION_EXTRA_COMMANDS
允许应访问额外的提供定位的指令
ACCESS_MOCK_LOCATION
允许应用创建用于测试的模拟定位提供者
ACCESS_NETWORK_STATE
允许应用访问网络上的信息
ACCESS_SURFACE_FLINGER
允许应用使用低版本视图的特征
ACCESS_WIFI_STATE
允许应用访问关羽Wi-Fi网络的信息
ACCOUNT_MANAGER
允许应用进入帐户认证
AUTHENTICATE_ACCOUNTS
允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统
BATTERY_STATS
允许应用去统计电源信息
BIND_APPWIDGET
允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据
BIND_DEVICE_ADMIN
必须通过关机接收者的请求来确保只有系统能够与之交互
BIND_INPUT_METHOD
必须通过InputMethodService的请求来确保只有系统能够与之绑定
BIND_WALLPAPER
必须通过WallpaperService的请求来确保只有系统能够与之绑定
BLUETOOTH
允许应用去连接蓝牙设备
BLUETOOTH_ADMIN
允许应用找到与之连接的蓝牙设备
BRICK
被请求废止设备(非常危险)
BROADCAST_PACKAGE_REMOVED
允许应用发出一个程序包被移除的广播消息
BROADCAST_SMS
允许应用发出一个收到短信的消息
BROADCAST_STICKY
允许应用发出一个与intent相连的消息
BROADCAST_WAP_PUSH
允许应用发出一个收到WAP PUSH的广播消息
CALL_PHONE
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序
CALL_PRIVILEGED
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码.
CAMERA
能够启动照相机设备的请求
CHANGE_COMPONENT_ENABLED_STATE
允许应用去改变一个应用是否是激活状态
CHANGE_CONFIGURATION
允许应用修改当前的配置,如本地设置
CHANGE_NETWORK_STATE
允许应用改变网络的连接状态
CHANGE_WIFI_MULTICAST_STATE
允许应用进入Wi-Fi的组播方式
CHANGE_WIFI_STATE
允许应用改变Wi-Fi的连接状态
CLEAR_APP_CACHE
允许应用清除所有安装在设备上的应用的缓存
CLEAR_APP_USER_DATA
允许应用清除使用者的信息资料
CONTROL_LOCATION_UPDATES
允许从广播设备来更新或不更新本地的消息
DELETE_CACHE_FILES
允许应用删除掉缓存文件
DELETE_PACKAGES
允许应用删除掉程序包
DEVICE_POWER
允许低权限的访问电源管理项
DIAGNOSTIC
允许应用诊断程序资源
DISABLE_KEYGUARD
允许应用禁用键盘锁
DUMP
允许应用从系统服务中恢复转储的信息
EXPAND_STATUS_BAR
允许应用扩大或缩小状态栏
FACTORY_TEST
如制造商测试的应用一样用终极权限用户运行
FLASHLIGHT
允许访问手电筒
FORCE_BACK
允许应用强制的返回操作而不论是不是最终的activity
GET_ACCOUNTS
允许应用访问账目服务中的统计清单
GET_PACKAGE_SIZE
允许应用查找出任何程序包使用的空间
GET_TASKS
允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行
GLOBAL_SEARCH
这个权限可以被内容提供者用来允许使用全程搜索他们的数据
HARDWARE_TEST
允许访问硬件及周边设备.
INJECT_EVENTS
允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口
INSTALL_LOCATION_PROVIDER
允许应用安装一个位置提供商到位置管理器中
INSTALL_PACKAGES
允许应用安装程序包.
INTERNAL_SYSTEM_WINDOW
允许应用打开被部分系统用户接口使用的窗口
INTERNET
允许应用打开网络套接口
KILL_BACKGROUND_PROCESSES
允许应用去呼叫killBackgroundProcesses(String).方法
MANAGE_ACCOUNTS
允许应用去管理帐户管理者中的重要清单
MANAGE_APP_TOKENS
允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用
MASTER_CLEAR
MODIFY_AUDIO_SETTINGS
允许应用修改全局音频设定
MODIFY_PHONE_STATE
允许改变拨打电话的状态-电源等
MOUNT_FORMAT_FILESYSTEMS
允许格式化可移除的存储仓库的文件系统
MOUNT_UNMOUNT_FILESYSTEMS
允许装备或解除可移除的存储仓库的文件系统
PERSISTENT_ACTIVITY
允许应用使它的activities更持久稳固
PROCESS_OUTGOING_CALLS
允许应用监督、限定或终止呼出的电话
READ_CALENDAR
允许应用读取用户的日历数据
READ_CONTACTS
允许应用读取用户的联系人数据
READ_FRAME_BUFFER
允许应用抓取屏幕和更多可获得的缓冲数据
READ_HISTORY_BOOKMARKS
允许应用去读取(非写)用户浏览历史和书签
READ_INPUT_STATE
允许应用去的当前键盘和控制的状态
READ_LOGS
允许应用读取低级别的系统日志文件
READ_OWNER_DATA
允许应用读取所有者的数据
READ_PHONE_STATE
允许读取电话的状态
READ_SMS
允许应用读取短信息.
READ_SYNC_SETTINGS
允许应用读取同步的设置
READ_SYNC_STATS
允许应用读取同步的统计数据
REBOOT
重新启动设备的请求
RECEIVE_BOOT_COMPLETED
允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息
RECEIVE_MMS
允许应用去监听多媒体信息并记录和对起进行处理
RECEIVE_SMS
允许应用去监听短消息并记录和对起进行处理
RECEIVE_WAP_PUSH
允许应用监听WAP push信息
RECORD_AUDIO
允许应用记录音频信息
REORDER_TASKS
允许应用改变任务的关系位置
RESTART_PACKAGES
已废弃使用
SEND_SMS
允许应用发送短消息.
SET_ACTIVITY_WATCHER
允许应用查看和控制activities是怎样在系统中运行的
SET_ALWAYS_FINISH
允许应用去控制当activities被覆盖后是否是立即接触结束
SET_ANIMATION_SCALE
改变动画的比例因子
SET_DEBUG_APP
设置一个应用为调试模式
SET_ORIENTATION
允许低级别的设置屏幕的方向
SET_PREFERRED_APPLICATIONS
已废弃
SET_PROCESS_LIMIT
允许应用设置可以运行的最大数的应用进程
SET_TIME
允许应用设置系统时间
SET_TIME_ZONE
允许应用设置系统时区时间
SET_WALLPAPER
允许应用设置壁纸
SET_WALLPAPER_HINTS
允许应用设置锁定的壁纸
SIGNAL_PERSISTENT_PROCESSES
允许应用发出一个给所有稳定进程信号的请求
STATUS_BAR
允许应用打开、关闭或使状态栏或图标失去作用
SUBSCRIBED_FEEDS_READ
允许应用访问内容提供者的签署认证
SUBSCRIBED_FEEDS_WRITE
SYSTEM_ALERT_WINDOW
允许应用使用TYPE_SYSTEM_ALERT来打开窗口,并将窗口显示于其他应用的顶端
UPDATE_DEVICE_STATS
允许应用更新设备资料信息
USE_CREDENTIALS
允许应用从管理器得到授权请求
VIBRATE
允许应用访问震动器
WAKE_LOCK
允许使用电源锁定管理以使进程休眠或屏幕变暗
WRITE_APN_SETTINGS
允许应用去写入接入点设置
WRITE_CALENDAR
允许应用写(非读)用户的日历数据
WRITE_CONTACTS
允许应用写(非读)用户的联系人数据
WRITE_EXTERNAL_STORAGE
允许应用写(非读)用户的外部存储器
WRITE_GSERVICES
允许应用修改Google服务地图
WRITE_HISTORY_BOOKMARKS
允许应用写(非读)用户的浏览器历史和书签
WRITE_OWNER_DATA
允许应用写(非读)用户的数据
WRITE_SECURE_SETTINGS
允许应用写或读当前系统设置
WRITE_SETTINGS
允许应用写或读系统设置
WRITE_SMS
允许应用写短消息信息
WRITE_SYNC_SETTINGS
允许应用写同步设置
3、 Manifest.permission_group的常量
ACCOUNTS
直接通过统计管理器访问管理的统计
COST_MONEY
可以用来让用户花钱但不需要通过与他们直接牵涉的权限
DEVELOPMENT_TOOLS
与开发联盟特征相连的权限组
HARDWARE_CONTROLS
被用来提供直接访问硬件设备的权限
LOCATION
用来允许访问用户的当前位置的权限
MESSAGES
用来允许应用发送用户收到的被拦截的信息
NETWORK
用来提供访问网络服务的权限
PERSONAL_INFO
用于提供访问用户私人数据如联系人、日历、电子邮件等的权限
PHONE_CALLS
用于跟访问和修改拨号状态如截取去话信息、读取和修改电话状态等的权限
STORAGE
与SD卡访问相关联的权限组
SYSTEM_TOOLS
与系统API有关联的权限组
五、 View
1、结构
java.lang.Object ↳ android.view.View
已知直接子类:
AnalogClock, ImageView, KeyboardView, ProgressBar, SurfaceView, TextView , ViewGroup, ViewStub
已知间接子类:
AbsListView, AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView, AppWidgetHostView, AutoCompleteTextView, Button, CheckBox, CheckedTextView, Chronometer, CompoundButton, DatePicker, DialerFilter, DigitalClock, EditText , ExpandableListView, ExtractEditText, FrameLayout, GLSurfaceView, Gallery, GestureOverlayView, GridView, HorizontalScrollView, ImageButton, ImageSwitcher, LinearLayout, ListView, MediaController, MultiAutoCompleteTextView, QuickContactBadge, RadioButton, RadioGroup, RatingBar, RelativeLayout, ScrollView, SeekBar, SlidingDrawer, Spinner, TabHost, TabWidget, TableLayout, TableRow, TextSwitcher, TimePicker, ToggleButton, TwoLineListItem, VideoView, ViewAnimator, ViewFlipper, ViewSwitcher, WebView, ZoomButton, ZoomControls
2、 xml属性
属性名称
描述
android:background
设置背景色 /背景图片。可以通过以下两种方法设置背景为透明: "@android:color/transparent"和 "@null"。注意 TextView默认是透明的,不用写此属性,但是 Buttom/ImageButton/ImageView想透明的话就得写这个属性了。
android:clickable
是否响应点击事件。
android:contentDescription
设置 View的备注说明,作为一种辅助功能提供,为一些没有文字描述的 View提供说明,如 ImageButton。这里在界面上不会有效果,自己在程序中控制,可临时放一点字符串数据。
android:drawingCacheQuality
设置绘图时半透明质量。有以下值可设置: auto(默认,由框架决定) /high(高质量,使用较高的颜色深度,消耗更多的内存 /low(低质量,使用较低的颜色深度,但是用更少的内存)。
android:duplicateParentState
如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 见下面代码部分,注意根据目前测试情况仅仅是获取绘图状态,而没有获取事件,也就是你点一下 LinearLayout时 Button有被点击的效果,但是不执行点击事件。
android:fadingEdge
设置拉滚动条时 ,边框渐变的放向。 none (边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。参照fadingEdgeLength的效果图
android:fadingEdgeLength
设置边框渐变的长度。
android:fitsSystemWindows
设置布局调整时是否考虑系统窗口(如状态栏)
android:focusable
设置是否获得焦点。若有requestFocus()被调用时,后者优先处理。注意在表单中想设置某一个如EditText获取焦点,光设置这个是不行的,需要将这个EditText前面的focusable都设置为false才行。在Touch模式下获取焦点需要设置focusableInTouchMode为true。
android:focusableInTouchMode
设置在 Touch模式下 View是否能取得焦点。
android:hapticFeedbackEnabled
设置长按时是否接受其他触摸反馈事件。这里模拟器没有试出效果,难道是多点触摸?找不到资料可以找找 performHapticFeedback或 HapticFeedback这个关键字的资料看看。
android:id
给当前 View设置一个在当前 layout.xml中的唯一编号,可以通过调用 View.findViewById() 或 Activity.findViewById()根据这个编号查找到对应的 View。不同的 layout.xml之间定义相同的 id不会冲突。格式如 ”@+id/btnName”
android:isScrollContainer
设置当前 View为滚动容器。这里没有测试出效果来, ListView/ GridView/ ScrollView根本就不用设置这个属性,而 EdidText设置 android:scrollbars也能出滚动条。
android:keepScreenOn
View在可见的情况下是否保持唤醒状态。常在 LinearLayout使用该属性,但是模拟器这里没有效果。
android:longClickable
设置是否响应长按事件 .
android:minHeight
设置视图最小高度
android:minWidth
设置视图最小宽度度
android:nextFocusDown
设置下方 指定视图获得下一个焦点。焦点移动是基于一个在给定方向 查找最近邻居的算法。如果指定视图不存在,移动焦点时将报运行时错误。可以设置 imeOptions= actionDone,这样输入完即跳到下一个焦点。
android:nextFocusLeft
设置左边 指定视图获得下一个焦点。
android:nextFocusRight
设置右边 指定视图获得下一个焦点。
android:nextFocusUp
设置上方 指定视图获得下一个焦点。
android:onClick
点击时从上下文中调用指定的方法。这里指定一个方法名称,一般在 Activity定义符合如下参数和返回值的函数并将方法名字符串指定为该值即可:
public void onClickButton(View view)
android:onClick=” onClickButton”
android:padding
设置上下左右的边距,以像素为单位填充空白。
android:paddingBottom
设置底部的边距,以像素为单位填充空白。
android:paddingLeft
设置左边的边距,以像素为单位填充空白。
android:paddingRight
设置右边的边距,以像素为单位填充空白。
android:paddingTop
设置上方的边距,以像素为单位填充空白。
android:saveEnabled
设置是否在窗口冻结时(如旋转屏幕)保存 View的数据,默认为 true,但是前提是你需要设置 id才能自动保存,参见 这里 。
android:scrollX
以像素为单位设置水平方向滚动的的偏移值,在 GridView中可看的这个效果。
android:scrollY
以像素为单位设置垂直方向滚动的的偏移值
android:scrollbarAlwaysDraw
HorizontalTrack
设置是否始终显示垂直滚动条。这里用 ScrollView、 ListView测试均没有效果。
android:scrollbarAlwaysDraw
VerticalTrack
设置是否始终显示垂直滚动条。这里用 ScrollView、 ListView测试均没有效果。
android:scrollbarDefault
DelayBeforeFade
设置 N毫秒后开始淡化,以毫秒为单位。
android:scrollbarFadeDuration
设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位。 Android2.2中滚动条滚动完之后会消失,再滚动又会出来,在 1.5、 1.6版本里面会一直显示着。
android:scrollbarSize
设置滚动条的宽度。
android:scrollbarStyle
设置滚动条的风格和位置。设置值: insideOverlay、 insideInset、 outsideOverlay、 outsideInset。这里没有试出太多效果,以下依次是 outsideOverlay与 outsideInset效果截图比较:
android:scrollbarThumbHorizontal
设置水平滚动条的 drawable。
android:scrollbarThumbVertical
设置垂直滚动条的 drawable.
android:scrollbarTrackHorizontal
设置水平滚动条背景(轨迹)的色 drawable
android:scrollbarTrackVertical
设置垂直滚动条背景(轨迹)的drawable注意直接 设置颜色值如”android:color/white”将得出很难看的效果, 甚至都不理解这个属性了,这里可以 参见ApiDemos里res/drawable/ scrollbar_vertical_thumb.xml 和 scrollbar_vertical_track.xml ,设置代码为: android:scrollbarTrackVertical ="@drawable/scrollbar_vertical_track"
android:scrollbars
设置滚动条显示。 none(隐藏), horizontal(水平), vertical(垂直)。见下列代码演示使用该属性让 EditText内有滚动条。但是其他容器如 LinearLayout设置了但是没有效果。
android:soundEffectsEnabled
设置点击或触摸时是否有声音效果
android:tag
设置一个文本标签。可以通过 View.getTag()或 for with
View.findViewWithTag()检索含有该标签字符串的 View。但
一般最好通过 ID来查询 View,因为它的速度更快,并且允
许编译时类型检查。
android:visibility
设置是否显示View。设置值:visible(默认值,显示),invisible(不显示,但是仍然占用空间),gone
(不显示,不占用空间)
3、公共方法(部分)
boolean awakenScrollBars() boolean awakenScrollBars(int startDelay, boolean invalidate) boolean awakenScrollBars(int startDelay) int computeHorizontalScrollExtent() int computeHorizontalScrollOffset() int computeHorizontalScrollRange() int computeVerticalScrollExtent() int computeVerticalScrollOffset() int computeVerticalScrollRange() void dispatchDraw(Canvas canvas) void dispatchRestoreInstanceState(SparseArray container) void dispatchSaveInstanceState(SparseArray container) void dispatchSetPressed(boolean pressed) void dispatchSetSelected(boolean selected) void dispatchVisibilityChanged(View changedView, int visibility) void drawableStateChanged() boolean fitSystemWindows(Rect insets) float getBottomFadingEdgeStrength() int getBottomPaddingOffset() ContextMenu.ContextMenuInfo getContextMenuInfo() int getHorizontalScrollbarHeight() float getLeftFadingEdgeStrength() int getLeftPaddingOffset() float getRightFadingEdgeStrength() int getRightPaddingOffset() int getSuggestedMinimumHeight() int getSuggestedMinimumWidth() float getTopFadingEdgeStrength() int getTopPaddingOffset() int getWindowAttachCount() void initializeFadingEdge(TypedArray a) void initializeScrollbars(TypedArray a) boolean isPaddingOffsetRequired() static int[] mergeDrawableStates(int[] baseState, int[] additionalState) void onAnimationEnd() void onAnimationStart() void onAttachedToWindow() void onConfigurationChanged(Configuration newConfig) void onCreateContextMenu(ContextMenu menu) int[] onCreateDrawableState(int extraSpace) void onDetachedFromWindow() void onDisplayHint(int hint) void onDraw(Canvas canvas) final void onDrawScrollBars(Canvas canvas) void onFinishInflate() void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) void onLayout(boolean changed, int left, int top, int right, int bottom) void onMeasure(int widthMeasureSpec, int heightMeasureSpec) void onRestoreInstanceState(Parcelable state) Parcelable onSaveInstanceState() void onScrollChanged(int l, int t, int oldl, int oldt) boolean onSetAlpha(int alpha) void onSizeChanged(int w, int h, int oldw, int oldh) void onVisibilityChanged(View changedView, int visibility) void onWindowVisibilityChanged(int visibility) final void setMeasuredDimension(int measuredWidth, int measuredHeight) boolean verifyDrawable(Drawable who)
4、代码
4.1 android:duplicateParentState
4.2 android:scrollbars
android:layout_height="wrap_content" android:minHeight="50dp" android:background="@android:drawable/editbox_background" android:scrollbars="vertical" android:maxLines="4">
5、遗留问题
5.1 以下几个属性翻遍了资料试了很多次都没有效果,只能暂时搁置,以后补上,也欢迎的大家提供意见和线索,分享大家的经验:
android:scrollbarAlwaysDrawHorizontalTrack
android:scrollbarAlwaysDrawVerticalTrack
android:isScrollContainer
六、 ImagesView
2、结构
java.lang.Object
↳ android.view.View
↳ android.widget.ImageView
已知直接子类:
ImageButton, QuickContactBadge
已知间接子类:
ZoomButton
2、 类概述
显示任意图像,例如图标。 ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色(渲染)各种显示选项。
3、 XML属性
属性名称
描述
android:adjustViewBounds
是否保持宽高比。需要与 maxWidth、 MaxHeight一起使用,否则单独使用没有效果。
android:cropToPadding
是否截取指定区域用空白代替。单独设置无效果,需要与 scrollY一起使用,效果如下,实现代码见代码部分:
android:maxHeight
设置 View的最大高度,单独使用无效,需要与 setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:
1) 设置 setAdjustViewBounds为 true;
2) 设置 maxWidth、 MaxHeight;
3) 设置设置 layout_width和 layout_height为 wrap_content。
android:maxWidth
设置 View的最大宽度。同上。
android:scaleType
设置图片的填充方式。
matrix
0
用矩阵来绘图
fitXY
1
拉伸图片(不按比例)以填充 View的宽高
layout_
height
:30px
layout_
width
:120px
fitStart
2
按比例拉伸图片,拉伸后图片的高度为 View的高度,且显示在 View的左边
fitCenter
3
按比例拉伸图片,拉伸后图片的高度为 View的高度,且显示在 View的中间
fitEnd
4
按比例拉伸图片,拉伸后图片的高度为 View的高度,且显示在 View的右边
center
5
按原图大小显示图片,但图片宽高大于 View的宽高时,截图图片中间部分显示
layout_
height
:60px
layout_
width
:80px
padding
:10px
centerCrop
6
按比例放大原图直至等于某边 View的宽高显示。
centerInside
7
当原图宽高或等于 View的宽高时,按原图大小居中显示;反之将原图缩放至 View的宽高居中显示。
android:src
设置 View的 drawable(如图片,也可以是颜色,但是需要指定 View的大小 )
android:tint
将图片渲染成指定的颜色。见下图:
左边为原图,右边为设置后的效果,见后面代码。
4、代码
4.1 android:tint
android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content">
4.2 android:cropToPadding
android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content">
七、 ImageButton
1、结构
java.lang.Object ↳ android.view.View ↳ android.widget.ImageView ↳ android.widget.ImageButton
已知直接子类:
ZoomButton
2、类摘要
显示一个可以被用户点击的图片按钮,默认情况下, ImageButton看起来像一个普通的按钮,在不同状态(如按下)下改变背景颜色。按钮的图片可用通过 XML元素的 android:src属性或 setImageResource(int)方法指定。
要删除按钮的背景,可以定义自己的背景图片或设置背景为透明。(注:请看
原图 和图片按钮 ,默认图片周围有按钮的背景,选中之后为黄色)
为了表示不同的按钮状态(焦点,选择等),你可以为各种状态定义不同的图片。例如,定义蓝色图片为默认图片,黄色图片为获取时焦点时显示的图片,黄色图片为按钮被按下时显示的图片。一个简单的方法可以做到这点——通过 XML的 "selector."配置,如下:
保存上面的 XML到 res/drawable/ 文件夹下( 注: 注意文件名大小写!),将该文件名作为一个参数设置到 ImageButton的 android:src属性(注:如 xml文件名为 myselector.xml,那么这里设置为 "@drawable/myselector",设置 android:background也是可以的,但效果不太一样)。 Android根据按钮的状态改变会自动的去 XML中查找相应的图片以显示。
元素的顺序很重要,因为是根据这个顺序判断是否适用于当前按钮状态,这也是为什么正常(默认)状态指定的图片放在最后,是因为它只会在 pressed和 focused都判断失败之后才会被采用。(注:例如按钮被按下时是同时获得焦点的,但是获得焦点并不一定按了按钮,所以这里会按顺序查找,找到合适的就不往下找了。这里按钮被点击了,那么第一个将被选中,且不再在后面查找其他状态。)
参见 Form Stuff tutorial 。
3、 继承自父类的方法
public void setAlpha (int alpha)
设置 ImageButton图片的透明度(注意不是背景图片的)。效果如图:
参数
alpha 透明值 0~255, 0为完全透明, 255为完全不透明
八、 QuickContactBadge
1、结构
java.lang.Object ↳ android.view.View ↳ android.widget.ImageView ↳ android.widget.QuickContactBadge
2、截图
说明: 在 andorid自带的 ApiDomos的例子中有这个的代码: App/Activity/QuickContacktsDemo。注意需要 android.permission.READ_CONTACTS权限,并且联系人里面有数据,并且联系人需要有手机号码,不然出来是一个空的(看代码可知)。
3、公共方法
public void assignContactFromEmail (String emailAddress, boolean lazyLookup)
指定联系人的电子邮箱地址。(注:它会先搜索这个号码,如果没有会提醒你是否添加到联系人,参见 文章1 )
参数
emailAddress 联系人的电子邮箱地址
lazyLookup 如果设置为 true,将不会立即查找这个邮箱地址,直到 View被点击时。(注:是否延迟匹配电子邮件)
public void assignContactFromPhone (String phoneNumber, boolean lazyLookup)
为联系人指定一个电话号码。(注:参见 文章1 )
参数
phoneNumber 联系人的电话号码
lazyLookup 如果设置为 true,将不会立即查找这个电话号码,直到 View被点击时。
public void assignContactUri (Uri contactUri)
指定和 QuickContactBadge关联的联系人 URI。注意,这里只是显示 QuickContact窗口,并不为你绑定联系人图片。
参数
contactUri CONTENT_URI或 CONTENT_LOOKUP_URI其中一种风格的 URI.
public void onClick (View v)
当 View被点击时调用。
参数
v 被点击的 View.
public void setExcludeMimes (String[] excludeMimes)
设置一组要排除不显示的 MIMI类型列表。例如,可以隐藏 Contacts.CONTENT_ITEM_TYPE类型的图标。(注:如果像如下设置:
setExcludeMimes(new String[] { Contacts.CONTENT_ITEM_TYPE })
即隐藏了上面截图的第二个,仅显示电话和短信两个图标)
public void setMode (int size)
设置 QuickContact的窗口模式。如下选项: MODE_SMALL、 MODE_MEDIUM、 MODE_LARGE。(注:默认为 QuickContact.MODE_MEDIUM,设置为 MODE_LARGE时会同时显示联系人名称)
九、 ZoomButton
1、类结构
java.lang.Object
↳ android.view.View
↳ android.widget.ImageView
↳ android.widget.ImageButton
↳ android.widget.ZoomButton
public class ZoomButton extends ImageButton implements View.OnLongClickListener
2、概述
缩放按钮,实际上是很普通的两个按钮,可以简单的理解为一个 ImageButton加上一张缩放的图标。如下代码:
3、公共方法
public boolean dispatchUnhandledMove (View focused, int direction)
对于获得焦点的 View,这个方法是捕获箭头事件最后的机会。这就是在获取焦点的 View没有在内部处理、系统在要求的方向也不能找到一个新的 View让其获得焦点时调用。
参数
focused 当前焦点 View
direction焦点移动的方向。其中之一 :FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT和 FOCUS_RIGHT.
返回值
如果为 true,将清除这个 View未处理的事件。
(注:从源码中可看出 ZoomButton覆盖了父类的该方法,在 super之前调用了一下 clearFocus,如下代码:
public boolean onKeyUp (int keyCode, KeyEvent event)
默认实现至 KeyEvent.Callback.onKeyMultiple() :当点击执行时 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER被释放。
参数
keyCode 按下按钮代表的键值,属于 KeyEvent (注: KeyEvent的静态属性 )。
event 该KeyEvent对象,定义按钮动作
返回值
如果您处理这一事件中,返回true。 如果你想允许事件被下一个接收器处理,返回false。
public boolean onLongClick (View v)
当一个 View被长按时调用。
参数
v 被长按的 View。
返回值
如果返回 true,这个回调在长按时被执行了,反之返回 false.
public boolean onTouchEvent (MotionEvent event)
实现这个方法处理触摸屏移动事件。
参数
event 该移动事件 .
返回值
如果是 true,该事件是触摸,反之返回 false。
public void setEnabled (boolean enabled)
设置这个 View启用状态。
参数
enabled 设置 true表示启用,反之表示禁用。
public void setZoomSpeed (long speed)
(注:单独使用无实际意义,可以用来存放临时数据)
十、 CheckBox
1、类结构
public class CheckBox extends CompoundButton
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.CheckBox
2、 概述
复选框是一种有双状态按钮的特殊类型,可以选中或者不选中。如下是一个在 activity中使用复选框的例子:
十一、 RadioButton
1、结构
public class RadioButton extends CompoundButton java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button ↳ android.widget.CompoundButton ↳ android.widget.RadioButton
2、概述
单选按钮是一种双状态的按钮,可以选择或不选中。在单选按钮没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中(译者注:可以通过代码来控制,界面上点击的效果是一旦选中之后就不能取消选中了)。
多个单选按钮通常与 RadioGroup同时使用。当一个单选组( RadioGroup)包含几个单选按钮时,选中其中一个的同时将取消其它选中的单选按钮。(译者注:示例参见 这里 )
3、公共方法
public void toggle ()
将单选按钮更改为与当前选中状态相反的状态。
如果这个单选按钮已经选中,这个方法将不切换单选按钮。(译者注:请看源码:
十二、 Button
1、结构
public class Button extends TextView java.lang.Object ↳ android.view.View ↳ android.widget.TextView ↳ android.widget.Button
已知直接子类 CompoundButton 已知间接子类 CheckBox , RadioButton , ToggleButton
2、概述
代表一个按钮部件。用户通过按下按钮,或者点击按钮来执行一个动作。以下是一个按钮在 activity中典型的应用:
然后,你能在 xml布局中通过 button的 android:onClick属性指定一个方法,以替代在 activity中为 button设置 OnClickListener。例如:
现在,当用户点击按钮时, Android系统调用 activity的 selfDestruct(View)方法。为了正确执行,这个方法必须是 public并且仅接受一个 View类型的参数。例如:
3、按钮样式
每个按钮的样式默认为系统按钮的背景 ,不同的设备、不同的平台版本有不同按钮风格。如你不满意默认的按钮样式,想对其定制以符合您应用程序的设计,那么你能用 state list drawable 替换按钮的背景图片。一个状态列表 drawable是一个在 XML中定义的 drawable资源,根据当前按钮的状态改变其图片。一旦你在 XML中定义了一个状态列表 drawable,你可以将它应用于你的 android:background属性。欲了解更多信息和示例,参见 State List Drawable .
实现一个按钮的例子可参见 Form Stuff tutorial
4、 XML属性
参见 Button、 TextView、 View的 XML属性。
十三、 ToggleButton
1、结构
public class ToggleButton extends CompoundButton
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.ToggleButton
2、 类概述
通过一个带有亮度指示同时默认文本为“ ON”或“ OFF”的按钮显示选中 /未选中状态。
3、 XML属性
属性名称
描述
android:disabledAlpha
设置按钮在禁用时透明度。
android:textOff
未选中时按钮的文本
android:textOn
选中时按钮的文本
4、公共方法
public CharSequence getTextOff ()
返回按钮未选中时的文本。
返回值
文本
public CharSequence getTextOn ()
返回按钮选中时的文本。
返回值
文本
public void setBackgroundDrawable (Drawable d)
设置指定的可绘制(译者注:如图片)为背景,或删除背景。如果让背景有边距,这个视图的边距就是背景的边距。然而,当背景被删除时,这个视图的边距不能被触摸。如果需要设置边距,请使用方法 setPadding(int, int, int, int)。
(译者注:如果设置删除背景整个就不显示了,此外设置背景后选中和被选中的图片也不显示了,如下图: ,实现代码:
)
参数
d 设置可绘制(译者注:如图片)为背景,或设置为空删除背景。
public void setChecked (boolean checked)
改变按钮的选中状态。
参数
checked true让按钮选中, false让按钮不选中
public void setTextOff (CharSequence textOff)
设置按钮未选中时显示的文本。
参数
textOff 文本
public void setTextOn (CharSequence textOn)
设置按钮选中时显示的文本。
参数
textOn 文本
5、受保护方法
protected void drawableStateChanged ()
在视图状态的变化影响到所显示可绘制的状态时调用这个方法。
确保在覆盖时中调用父类方法(译者注: super. drawableStateChanged ())。
protected void onFinishInflate ()
XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。
即使子类重写了 onFinishInflate方法,也应该始终确保调用父类方法(译者注: super. onFinishInflate()),使系统能够调用。
十四、 ViewStub
1、结构
public final class ViewStub extends View
java.lang.Object
↳ android.view.View
↳ android.view.ViewStub
2、类概述
ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewStub可见,或者调用 inflate()函数时,才会加载这个布局资源文件。 该 ViewStub在加载视图时在父容器中替换它本身。因此, ViewStub会一直存在于视图中,直到调用 setVisibility(int) 或者 inflate()为止。 ViewStub的布局参数会随着加载的视图数一同被添加到 ViewStub父容器。同样,你也可以通过使用 inflatedId属性来定义或重命名要加载的视图对象的 Id值。例如 :
通过 "stud"id可以找到被定义的 ViewStub对象。加载布局资源文件 "mySubTree "后, ViewStub对象从其父容器中移除。可以通过 id"subTree"找到由布局资源 "mySubTree"创建的 View。这个视图对象最后被指定为宽 120dip,高 40dip。执行加载布局资源文件的推荐方式如下:
当 inflate()被调用 , 这个 ViewStub被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行 findViewById()来获取加载视图的引用。 (译者注:这个类大概意思是用 ViewStub类和在 XML文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载 ,既可以加快程序的启动速度,又可以节省内存资源。)
3、嵌套类
接口 ViewStub.OnInflateListener 一个用于接收 ViewStub已经成功加载布局资源文件的通知的监听器。
4、 XML属性
属性名称
相关方法
描述
android:inflatedId
setInflatedId(int)
覆盖待加载视图的 id值。
android:layout
setLayoutResource(int)
为待加载的资源视图提供一个标识,在 ViewStub变为可见或获取焦点时使用它。(译者注:要引用的布局资源文件 id)
5、构造函数
ViewStub(Context context, int layoutResource)
创建一个与指定的布局资源文件关联的 ViewStub对象。
参数
layoutResource 要加载的布局资源文件的 id 值。
6、公共方法
public void draw (Canvas canvas)
手动在指定的画布绘制这个视图 (及所有其子视图 )。这个视图必须在调用这个函数之前做好了整体布局。当要自己实现一个视图时,不要重载这个方法;相反,你应该重载 onDraw(Canvas)方法。(译者注: 主要用于自定义的视图组件的方法。 )
参数
canvas 这个画布传到那个已渲染的视图对象。
public int getInflatedId ()
返回加载的布局资源文件的 ID,如果加载的布局资源文件的 id是 NO_ID,那么这个加载的 View将保留它原来的 id值。
相关 XML 属性
android:inflatedId
返回值
一个正整数来标识这个要加载的视图或者 NO_ID将保持加载视图原来的 id。
参见
setInflatedId(int)
public int getLayoutResource ()
返回加载的布局资源文件的 id值。
相关 XML 属性
android:layout
返回值
加载到视图对象的布局资源文件 id值。
参见
setLayoutResource(int)
setVisibility(int)
inflate()
public View inflate ()
加载 getLayoutResource()方法标识的布局资源,并通过加载布局资源替换父容器中它自己。
返回值
这个已加载的布局资源文件 .
public void setInflatedId (int inflatedId)
设置加载视图的 ID。如果这个 id为 NO_ID,这个加载视图保持它原来的 id不变。
相关 XML 属性
android:inflatedId
参数
inflatedId 一个正整数来标识这个加载视图或者 NO_ID将保持加载视图原来的 id。
参见
getInflatedId()
public void setLayoutResource (int layoutResource)
设置待加载的布局资源文件,当 ViewStub被设置为 visible或 invisible或调用 inflate()时使用。这个在加载布局资源文件时创建的视图用来在父容器中替换它自己。
相关 XML 属性
android:layout
参数
layoutResource 一个有效的布局资源文件 id值(不等于 0)。
参见
getLayoutResource()
setVisibility(int)
inflate()
public void setOnInflateListener (ViewStub.OnInflateListener inflateListener)
设置成功加载布局资源文件后事件通知的监听器。
参数
inflateListener 该 OnInflateListener在成功加载后得到事件通知。
参见
ViewStub.OnInflateListener
public void setVisibility (int visibility)
当可见性设置为 VISIBLE或 INVISIBLE, inflate()将被调用,并且加载视图资源在父容器中替换 ViewStub。
参数
visibility 设置为 VISIBLE(显示) , INVISIBLE(隐藏) , 或 GONE(完全隐藏,不暂用布局位置) .
参见
inflate()
7、受保护方法
protected void dispatchDraw (Canvas canvas)
调用这个函数去绘制这个控件的子视图。可以通过派生类重写在绘制子类之前获取控制(但是是在他自己的视图已经被绘制完之后)
参数
canvas 这个画布传到那个已渲染的视图对象。
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
测量这个视图以确定其内容的高度和宽度。通过 measure(int, int)来调用这个方法,并且应该由子类重写以提高内容测量的效率和精确度。
约定:当该方法被重写时,你必须调用 setMeasuredDimension(int, int)来存储已测量视图的高度和宽度。否则将通过 measure(int, int)抛出一个 IllegalStateException异常。调用父类的 onMeasure(int, int)方法是一个有效的办法。
父类的实现是以背景大小为默认大小,除非 MeasureSpec(测量细则)允许更大的背景。为了更好测量内容子类应该重写 onMeasure(int, int)。
如果这个方法被重写,子类有责任确保测量它的高度和宽度至少是视图的最小宽度和高度( getSuggestedMinimumHeight()和 getSuggestedMinimumWidth())。
参数
widthMeasureSpec 由于父类有横向空间要求,参见 View.MeasureSpec。
heightMeasureSpec 由于父类有纵向空间要求,参见 View.MeasureSpec 。
十五、 GridView
1、结构
public final class GridView extends AbsListView
java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.AdapterView ↳ android.widget.AbsListView ↳ android.widget.GridView
2、类概述
一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个 ListAdapter和该组件进行关联。比如 android手机中显示的应用:
比如实现九宫格图,用 GridView是首选,也是最简单的。
3、构造函数
public GridView (Context context) 创建一个默认属性的 GridView实例
public GridView (Context context, AttributeSet attrs)
创建一个带有 attrs属性的 GridView实例
public GridView (Context context, AttributeSet attrs, int defStyle)
创建一个带有 attrs属性,并且指定其默认样式的 GridView实例
4、 XML属性
属性名称
描述
android:columnWidth
设置列的宽度。关联的方法为: setColumnWidth(int)
android:gravity
设置此组件中的内容在组件中的位置。可选的值有: top、 bottom、 left、 right、 center_vertical、 fill_vertical、 center_horizontal、 fill_horizontal、 center、 fill、 clip_vertical 可以多选,用“ |”分开。关联方法: setGravity (int gravity)
android:horizontalSpacing
两列之间的间距。关联方法: setHorizontalSpacing(int)
android:numColumns
列数。关联方法: setNumColumns(int)
android:stretchMode
缩放模式。关联方法: setStretchMode(int)
android:verticalSpacing
两行之间的间距。关联方法: setVerticalSpacing(int)
5、公共方法
public ListAdapter getAdapter ()
获得与此组件相关的适配器 ..
返回值
ListAdapter适配器实例
public int getStretchMode ()
获得 GridView的缩放模式 ..
public boolean onKeyDown (int keyCode, KeyEvent event)
默认由 KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入 KEYCODE_DPAD_CENTER或 KEYCODE_ENTER值是执行的是按下视图操作。
参数
keyCode 一个表示按下操作的键值 .
event 表示按钮事件的对象 .
返回值
如果你认为已经完成事件处理 ,不想让让下一个处理器来处理此事件,则返回 true,否则返回 false。
public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
默认由 KeyEvent.Callback.onKeyMultiple()实现,总是返回 false(不处理此事件)。
参数
keyCode 键值 .
repeatCount 该动作发生的次数 .
event 事件对象 .
返回值
如果你认为已经完成事件处理 ,不想让让下一个处理器来处理此事件,则返回 true,否则返回 false。
public boolean onKeyUp (int keyCode, KeyEvent event)
默认由 KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入 KEYCODE_DPAD_CENTER或 KEYCODE_ENTER值是执行的是点击视图操作。
参数
keyCode 键值 .
event 事件对象 .
返回值
如果你认为已经完成事件处理 ,不想让让下一个处理器来处理此事件,则返回 true,否则返回 false。
public void setAdapter (ListAdapter adapter)
设置 GridView的数据。
参数
adapter 为 grid提供数据的适配器
public void setColumnWidth (int columnWidth)
设置 GridView的列宽 .
参数
columnWidth 列的宽度,以像素为单位
public void setGravity (int gravity)
设置控件内容的位置,默认值为: Gravity.LEFT.
参数
gravity 位置值
public void setHorizontalSpacing (int horizontalSpacing)
设置列间距 .
参数
horizontalSpacing 列间距值
public void setNumColumns (int numColumns)
设置 grid的列数
参数
numColumns 列数值 .
public void setSelection (int position)
设置选中的条目 .
参数
position . 数据条目在列表中的索引值(从 0开始),如果在可触摸的模式下,在该索引值下的条目将不会被选中,但是该索引值仍然指向该条目。
public void setStretchMode (int stretchMode)
设置 grid中的条目以什么缩放模式去填充空间。 .
参数
stretchMode 可选值: NO_STRETCH, STRETCH_SPACING, STRETCH_SPACING_UNIFORM,或 STRETCH_COLUMN_WIDTH
public void setVerticalSpacing (int verticalSpacing)
设置行间距 .
参数
verticalSpacing 间距值,以像素为单位
6、代码示例
下面给出一个小例子 , 先看效果:
a). GridView01.java
public class GridView01 extends Activity { private GridView gridview; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.gridview); //准备要添加的数据条目 List> items = new ArrayList>(); for (int i = 0; i < 10; i++) { Map item = new HashMap(); item.put("imageItem", R.drawable.icon); item.put("textItem", "text" + i); items.add(item); } //实例化一个适配器 SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.grid_item, new String[]{"imageItem", "textItem"}, new int[]{R.id.image_item, R.id.text_item}); //获得 GridView实例 gridview = (GridView)findViewById(R.id.mygridview); //gridview.setNumColumns(3);//可以在 xml中设置 //gridview.setGravity(Gravity.CENTER);//同上 //将 GridView和数据适配器关联 gridview.setAdapter(adapter); } }
b). gridview.xml
android:layout_width="wrap_content" android:layout_height="wrap_content"> android:numColumns="3" android:gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content">
c). grid_item.xml
android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> android:layout_width="wrap_content" android:layout_height="wrap_content"> android:layout_below="@+id/image_item" android:layout_height="wrap_content" android:layout_width="wrap_content">
参考资料:
农民伯伯: http://over140.cnblogs.com/