Android实例-手机安全卫士(十七)-自定义按钮背景样式

一、目标。

  按钮(button)默认、按下、获取焦点等状态下,其背景均显示自定的图片。

          

二、代码实现。

  1、在res文件夹下新建drawable文件夹,在新建的drawable文件夹下新建一个文件(右键-new-file),取名button.xml。

  2、在新建的文件(button.xml)中

    ①.指定xml版本为1.0,编码格式为utf-8(即第一行为:<?xml version="1.0" encoding="utf-8"?>)。

    ②.新建<selector> </selector>标签,在其属性中指定命名空间为xmlns:android="http://schemas.android.com/apk/res/android"。

    ③.在新建的<selector> </selector>标签中新增<item>标签,在其属性中制定各种状态和在该状态下显示的图片资源。如属性为state_pressed为true时,显示的图片为@drawable/btn_default_pressed。当属性值只有android:drawable的值时,表示这是默认状态下显示的图片。

button.xml文件的代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 3
 4     <item android:state_pressed="true"
 5         android:drawable="@drawable/btn_default_pressed" ></item>  <!-- press -->
 6
 7     <item android:state_enabled="true"
 8         android:drawable="@drawable/btn_default_selected" /> <!-- focused -->
 9
10     <item android:drawable="@drawable/btn_default_normal_disable"/> <!-- default -->
11
12 </selector>

  3、在需要使用该背景样式的button按钮中的background属性中引用在样式资源文件即可。

button组件代码;

1   <Button
2             android:layout_width="wrap_content"
3             android:layout_height="wrap_content"
4             android:layout_alignParentBottom="true"
5             android:layout_alignParentRight="true"
6             android:layout_marginBottom="5dip"
7             android:layout_marginRight="5dip"
8             android:background="@drawable/button"
9             android:text="下一步" />

三、以上按钮背景样式的实现可参考源代码。

  在android-19\data\res\values文件夹中的styles.xml文件中,找到name="Widget.Button"的<style>标签,其background的item标签就是指定android:drawable/btn_default的样式,在drawable文件夹下的btn_default.xml文件中的代码就是指定button的背景样式,可根其进行自定义button背景样式更改。

styles.xml中Widget.Button标签的代码:

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:textAppearance">?android:attr/textAppearanceSmallInverse</item>
6         <item name="android:textColor">@android:color/primary_text_light</item>
7         <item name="android:gravity">center_vertical|center_horizontal</item>
8     </style>

btn_default.xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2
 3 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 4     <item android:state_window_focused="false" android:state_enabled="true"
 5         android:drawable="@drawable/btn_default_normal" />
 6     <item android:state_window_focused="false" android:state_enabled="false"
 7         android:drawable="@drawable/btn_default_normal_disable" />
 8     <item android:state_pressed="true"
 9         android:drawable="@drawable/btn_default_pressed" />
10     <item android:state_focused="true" android:state_enabled="true"
11         android:drawable="@drawable/btn_default_selected" />
12     <item android:state_enabled="true"
13         android:drawable="@drawable/btn_default_normal" />
14     <item android:state_focused="true"
15         android:drawable="@drawable/btn_default_normal_disable_focused" />
16     <item
17          android:drawable="@drawable/btn_default_normal_disable" />
18 </selector>

<style name="Widget.Button">        <item name="android:background">@android:drawable/btn_default</item>        <item name="android:focusable">true</item>        <item name="android:clickable">true</item>        <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>        <item name="android:textColor">@android:color/primary_text_light</item>        <item name="android:gravity">center_vertical|center_horizontal</item>    </style>

时间: 2024-08-29 07:23:15

Android实例-手机安全卫士(十七)-自定义按钮背景样式的相关文章

Android实例-手机安全卫士(十八)-完成设置向导的4个UI和跳转事件

一.目标. 制作向导设置里面每一步的UI布局及点击事件控制. 1.使用自定义button背景.自定义组合控件.自定义文本样式等. 2.利用SharedPreferences对象,设置应用程序配置信息(向导设置完成后就不再进入)           二.代码实现. 1.在程序包下新建另外3个UI的类(分别为SetupWizard_ui_2.java.SetupWizard_ui_3.java.SetupWizard_ui_4.java),并在配置文件中注册Activity. 2.根据UI设计,在设

Android实例-手机安全卫士(三)-设计主页面UI

一.目标. 主界面UI如图所示: 方面是一个功能列表提示框(采用TextView),下面是功能列表(采用GridView). 二.代码实现. 1.在主界面布局文件(activity_home.xml)中增加组件.主界面布局文件(activity_home.xml)采用线性布局,上面一个TextView,根据UI设置相应属性:下面一个是GridView,通过android:numColumns属性设置该组件的列数,由于GridView还需要inflate单个布局文件,所以为其设置id. 主界面布局

Android实例-手机安全卫士(四十)-自定义吐司(二)(布局样式、背景)

一. 自定义Toast的布局.背景等 二.代码实现 1.在res文件夹下的layout文件夹中新建布局文件(Android xml file,取名phone_add_toast),用于定义要显示的Toast的布局方式: 2.根据设计要求自定义的Toast布局为左右的水平线性布局,宽高均为包裹内容,左边为图片,右边为归属地信息文本(由于归属地信息会根据号码不同而改变,因此可为其设置id(tv_phone_add_toast)): (1)图片采用<ImageView>组件,通过android:sr

Android实例-手机安全卫士(十)-自定义对话框

一.目标. 当点击“手机防盗”时弹出自定义的设置密码对话框.如果已经设置密码,则弹出自定义的输入密码对话框. 二.代码实现. 1.在layout文件夹下新建xml(取名setpwddialog.xml)文件用于设置自定义对话框的UI. 新建xml文件代码如下; 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.a

Android实例-手机安全卫士(十一)-自定义对话框点击事件处理

一.目标 在弹出的自定义对话框中,当点击“确认”时,保存密码,关闭对话框:当点击“取消”时关闭对话框.同时,如果不输入密码或输入密码错误则弹出相应的提示. 二.代码实现. 1.在主界面代码类(HomeActivity)中定义设置防盗密码对话框中的对应TextView.Button等成员变量,并在显示设置防盗密码对话框方法(showSetPwdDialog)中通过view.findViewById方法找到对应的组件: 2.为“取消”按钮设置取消操作的监听事件并进行处理.通过setOnClickLi

Android实例-手机安全卫士(二十)-使用shape形状,自定义组件边框、形状等

一.目标. 1.实现文本组件的点击事件. 2.实现组件(TextView等)以形状(圆角矩形.椭圆.圆环等)显示,也可为其增加自定义边框.渐变等属性.并可以与样式组合,可实现默认.按下等过程显示不同的形状. 默认:  按下: 二.代码实现. 1.TextView对象带有点击事件,需对clickable属性设为true,并取名点击事件名称,即onclick属性值为resetWizard. 2.在手机防盗界面实现点击事件处理,(即重新进入”设置向导“界面) 点击事件处理代码; //重新进入防盗设置向

Android实例-手机安全卫士(二十三)-自定义抽象类及使用

一.目标. 将二十二节中通过滑动切换Activity界面效果的代码提取出来做成一个自定义抽象类,并定义抽象方法,便于其他类的调用.也就是其他Activity(如设置向导2.3.4)通过继承自定义的类,再通过实现其未实现的方法来快速实现滑动切换. 二.代码实现. 1.在程序包下新建一个类(取名SlideActivity),继承Activity,指定其类型为抽象类(public abstract class SlideActivity extends Activity).在自定义的抽象类代码中,定义

Android实例-手机安全卫士(三十七)-显示去电号码的归属地

一. 目标  利用BroadcastReceive获取去电广播,并获取去电号码,再查询数据库获取归属信息: 二.代码实现: 1.在广播包(receiver)下新建一个类(取名OutCallReceiver)继承BroadcastReceive: 2.在清单文件中注册,意图过滤器(inter-filter)中监听的动作为去电(NEW_OUTGOING_CALL) 广播接受者注册代码: 1 <receiver android:name="com.example.mobilesafe.recei

Android实例-手机安全卫士(七)-自定义组合控件

一.目标. 将多个系统控件(TextView.Button.CheckBox等)组合成一个自定义的控件,并像系统控件一样使用.如图所示第1个自动更新控件是根据相对布局放置而成的,第2个自动更新控件即为自定义组合控件,它可以想一般的TextView等系统控件一样重复使用. 自定义控件如图: 二.代码实现. 1.在layout文件夹下新建一个xml文件(取名model_setting_item.xml),用于保存自定义控件的布局. 2.在新建的xml文件(model_setting_item.xml