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

一、目标。

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

  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);

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

代码如下:

1 public boolean isChecked(){
2         return setting_update_checkbox.isChecked();
3     }

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

代码如下:

1 public void setChecked(boolean checked){
2         setting_update_checkbox.setChecked(checked);
3     }

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

代码:

1 public void setContent(String text){
2         setting_update_content.setText(text);
3     }

  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         });

时间: 2024-08-07 08:24:27

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

Android自定义组合控件--底部多按钮切换

效果图: 现在市场上大多数软件都是类似于上面的结构,底部有几个按钮用于切换到不同的界面.基于OOP思想,我想把下面的一整块布局封装成一个类,也就是我们的自定义组合控件-底部多按钮切换布局,我把它叫做BottomLayout 看上面的布局,几个按钮横向排列,我们先看一下布局 最外面LinearLayout 方向 horizontal,然后5个weight相同的RelativeLayout,每个RelativeLayout里面有一个Button(用了显示选中状态)个ImageView(用来显示红点)

自定义组合控件和在自定义控件中使用自定义属性

今天,整理了一下我平时的笔记,写一个比较简单的自定义组合控件,仅供小白参考,大神请绕道,希望能够对大家有一些帮助 首先,得明白为什么我们需要自定义组合控件,它是因为原有控件并不能满足开发的需求,或者说并不能达到我们想要的一种效果,这个时候,就需要我们自己定义一些控件,以达到目的 ![先来看一下效果](http://img.blog.csdn.net/20160716224219109) 个人总结自定义控件的步骤: 1.先写一个布局,这里我用的是一个相对布局,我这里的相对布局就是根布局了 <?xm

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

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

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 手机卫士--自定义组合控件构件布局结构

由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. 自定义组合控件 1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象. 2.将组合控件的布局,抽取到单独的一个xml中 新建布局文件:setting_item_view.xml,将上篇文章中布局文件中的代码放进去 <?xml version=

Android 自定义组合控件小结

引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控件组成一个功能完整组合控件并将其封装为面向对象的类,而并非讨论如何继承自SDK提供的控件类(比如TextView),对其进行自定义扩展的问题. 进入正题前,我们先来看一组功能需求 假设在手机需求上,那么如上三个界面我们可以使用三个Activity,每个Activity一个布局文件,实现起来比较独立,但是假设在Android pad上要

Android自定义组合控件的实现

需求:在黑马做安全卫士的时候,功能9设置中心界面如下: 在点击item的时候,复选框会反转状态,同时"自动更新已经关闭"会变换内容和颜色. 可以发现这个界面类似ListView,但又不是ListView,因为它的item数量是固定的,且最后一 item和之前的都不一样.虽然这个看着像是标准的List结构,实则每个item不是完全一样,因为 每个item的提示文本(如"自动更新已经关闭")的内容并不完全一样. 假如用一般方式来布局的话,4个item就会有3*4 = 1

【android】自定义组合控件PullToRefreshRecyeclerView

场景:自从Android 5.0发布以来,越来越多的开发者开始接触RecyeclerView,但是RecyclerView如何实现下拉刷新,上拉加在更多.于是我就偷懒 写了一个,以供大家参考和学习,以待大家改进. 构思:想必大家对SwipeRefreshLayout这个控件有一定了解,没错本次自定义组合控件也就是SwipeRefreshLayout与RecyeclerView的组合. 那么我们一步一步来实现: 1.首先写一个组合布局如下:pulltorefreshrecyclerview.xml

Android自定义控件之自定义组合控件(三)

前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发成本,以及维护成本. 使用自定义组合控件的好处? 我们在项目开发中经常会遇见很多相似或者相同的布局,比如APP的标题栏,我们从三种方式实现标题栏来对比自定义组件带来的好处,毕竟好的东西还是以提高开发效率,降低开发成本为导向的. 1.)第一种方式:直接在每个xml布局中写相同的标题栏布局代码 <?xm