Android button原理
2010-05-31 14:45:00 来源:WEB开发网在Android中Button是非常常用的一个View控件, 原本以为Button实现的代码肯定很多,但是看了原来着实吃了一惊.Button的源码几乎仅仅对继承的TextView类做了一个小小的修改, 仅仅是加了一个Style. 一个Style就能够实现Button的显示效果样式么?Android的Style机制真的很强大.
首先来看一下ButtonView的实现代码:
1. * < p >< strong >XML attributes< /strong >< /p >
2. * < p >
3. * See {@link android.R.styleable#Button Button Attributes},
4. * {@link android.R.styleable#TextView TextView Attributes},
5. * {@link android.R.styleable#View View Attributes}
6. * < /p >
7. */
8. ublic class Button extends TextView {
9. public Button(Context context) {
10. this(context, null);
11. }
12.
13. public Button(Context context, AttributeSet attrs) {
14. this(context, attrs, com.android.internal.R.attr.buttonStyle);
15. }
16.
17. public Button(Context context, AttributeSet attrs, int defStyle) {
18. super(context, attrs, defStyle);
19. }
可以看到,Button继承了TextView之后,仅仅是添加了一个默认的Style —
com.android.internal.R.attr.buttonStyle
我们知道,button其实在TextView的基础之上增加了按钮的背景效果以及按钮按下去的press效果。这么一个Style文件可以搞定这件事情么?顺着这个style找下去,在Android的源码中找到style.xml,并找到相关的定义:
1. < style name="Widget.Button" >
2. < item name="android:background" >@android:drawable/btn_default< /item >
3. < item name="android:focusable" >true< /item >
4. < item name="android:clickable" >true< /item >
5. < item name="android:textSize" >20sp< /item >
6. < item name="android:textStyle" >normal< /item >
7. < item name="android:textColor" >@android:color/button_text<
更多精彩
赞助商链接