码迷,mamicode.com
首页 > 移动开发 > 详细

Android实例-手机安全卫士(八)-自定义组合控件事件相应和改变状态

时间:2015-01-23 00:36:45      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

一、目标。

  实现自定义控件点击事件响应和内容状态变化。

  1、点击自定义控件内的任何区域时,CheckBox状态均会变化。

  2、自定义控件里面的内容会根据CheckBox的状态进行改变。

 效果图1:

技术分享    技术分享

二、代码实现。

  1、在自定义控件类(SettingItemView)中增加方法。

    ①.在自定义控件类对应的xml文件(SettingItemView)中设置各个控件的id,便于自定义控件类(SettingItemView)对它们进行操作。同时,设置CheckBox的clickable属性为false,这是为了让CheckBox失去可点击的属性。因为,CheckBox的点击事件相应比其他控件都高,所以当设置完成自定义控件点击事件后,点击自定义控件除CheckBox外的其他区域时,CheckBox状态和TextView内容都会改变,但特意点击CheckBox区域时,CheckBox状态会改变而TextView中的内容不会改变。

    ②.在自定义控件类(SettingItemView)的iniView方法中,通过this.findViewById(int id)方法找到自定义控件类对应的xml文件(SettingItemView)中的相应的三个控件。因为xml布局文件(SettingItemView)已经通过inflate方法装载至SettingItemView类中,所以可以采用this.find...方法。

代码:

技术分享
1 setting_update_checkbox = (CheckBox) this.findViewById(R.id.setting_update_checkbox);
2         setting_update_title = (TextView) this.findViewById(R.id.setting_update_title);
3         setting_update_content = (TextView) this.findViewById(R.id.setting_update_content);
View Code

    ③.在自定义控件类(SettingItemView)中新建boolean类型的方法(取名isChecked),用于判断自定义控件中的CheckBox是否被选中。该方法较简单,只需返回CheckBox的isChecked()方法即可。

代码如下:

技术分享
1 public boolean isChecked(){
2         return setting_update_checkbox.isChecked();
3     }
View Code

 

    ④.在自定义控件类(SettingItemView)中新建无返回值(void)的方法(取名setChecked(boolean checked)),参数为boolean checked,用于设置组合控件中CheckBox的状态。

代码如下:

技术分享
1 public void setChecked(boolean checked){
2         setting_update_checkbox.setChecked(checked);
3     }
View Code

 

    ⑤.在自定义控件类(SettingItemView)中新建无返回值(void)的方法(取名setContent(String text)),用于改变组合控件中相应文本控件的内容,传入String类型的参数作为新文本内容。

代码:

技术分享
1 public void setContent(String text){
2         setting_update_content.setText(text);
3     }
View Code

 

  2、在”设置中心“界面(SettingActivity)代码中。

    ①.创建自定义控件类(SettingItemView)的对象(取名siv_update),并通过findViewById方法找到”设置中心“界面(SettingActivity)布局文件(activity_setting.xml)中的SettingItemView控件。

    ②.为自定义控件类(SettingItemView)的对象(siv_update)设置setOnClickListener()方法,并在参数中new出OnClickListener()方法,自动复写onClick方法。在onClick方法中采用if...else..语句判断自定义控件对象(siv_update)是否被选中,判断条件为siv_update.isChecked()。如果siv_update被选中,则调用自定义控件对象(siv_update)的setChecked(false)方法并传入false,以取消选中,同时调用自定义控件对象(siv_update)的setContent(text)方法并传入想要写的文本(禁止软件联网时自动更新)。反之同样处理。

自定义控件设置点击事件监听器的代码如下:

技术分享
 1 siv_update.setOnClickListener(new OnClickListener() {
 2             
 3             @Override
 4             public void onClick(View v) {
 5                 //已经开启了自动升级
 6                 if(siv_update.isChecked()){
 7                     siv_update.setChecked(false);
 8                     siv_update.setContent("禁止软件联网时自动更新");
 9                 }else {
10                     //未开启自动升级
11                     siv_update.setChecked(true);
12                     siv_update.setContent("允许软件联网时自动更新");
13                 }
14             }
15         });
View Code

Android实例-手机安全卫士(八)-自定义组合控件事件相应和改变状态

标签:

原文地址:http://www.cnblogs.com/Red-Shark/p/4242987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!