Android Button 原理
2010-11-05 00:56:20 来源: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<
赞助商链接