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

一、目标。

  将多个系统控件(TextView、Button、CheckBox等)组合成一个自定义的控件,并像系统控件一样使用。如图所示第1个自动更新控件是根据相对布局放置而成的,第2个自动更新控件即为自定义组合控件,它可以想一般的TextView等系统控件一样重复使用。

自定义控件如图:

二、代码实现。

  1、在layout文件夹下新建一个xml文件(取名model_setting_item.xml),用于保存自定义控件的布局。

  2、在新建的xml文件(model_setting_item.xml)中根据设计将各个系统控件组织排列。这里可以将第六讲中的“设置中心”的布局文件(activity_setting.xml)里面的相对布局中的代码拷贝至新建的xml文件中,主要拷贝时要保留新建xml文件中相对布局的头。

新建xml文件(model_setting_item.xml)代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="wrap_content"
 4     android:layout_height="wrap_content"
 5     android:layout_marginLeft="10dip"
 6     android:layout_marginRight="10dip" >
 7
 8     <TextView
 9         android:id="@+id/setting_update_title"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:layout_marginTop="10dip"
13         android:text="自动更新"
14         android:textColor="#000000"
15         android:textSize="22dip" />
16
17     <TextView
18         android:id="@+id/setting_update_content"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_below="@id/setting_update_title"
22         android:text="允许软件联网时自动更新"
23         android:textColor="#88000000"
24         android:textSize="18dip" />
25
26     <CheckBox
27         android:id="@+id/setting_update_checkbox"
28         android:layout_width="wrap_content"
29         android:layout_height="wrap_content"
30         android:layout_alignParentRight="true"
31         android:layout_centerVertical="true" />
32
33     <View
34         android:layout_width="match_parent"
35         android:layout_height="0.1dip"
36         android:layout_below="@id/setting_update_content"
37         android:layout_marginTop="2dip"
38         android:background="#70000000" />
39
40 </RelativeLayout>

  3、类似于创建跑马灯控件(见第四讲)的方式在自定义工具类包(com.example.mobilesafe.ui)下新建一个继承相对布局的类(取名SettingItemView)。在新建类(SettingItemView)代码中:

    ①.定义三个构造方法(同“跑马灯”章节):菜单栏Source——Generate Constructors from Superclass,在弹出的对话框中点击OK。

代码如下:

 1 public class SettingItemView extends RelativeLayout {
 2
 3     public SettingItemView(Context context, AttributeSet attrs, int defStyle) {
 4         super(context, attrs, defStyle);
 5     }
 6
 7     public SettingItemView(Context context, AttributeSet attrs) {
 8         super(context, attrs);
 9     }
10
11     public SettingItemView(Context context) {
12         super(context);
13     }
14 }

    ②.创建初始化布局文件的方法(取名iniView(Context context)),传一个上下文作为该方法的参数。在方法iniView(Context context)中通过View对象的inflate(Context context, int resource, ViewGroup root)方法将一个资源文件resource(布局文件)转成View对象并加载至ViewGroup中,参数Context context是上下文,int resource是需要转化的资源文件(这里就是刚才新建的xml文件(model_setting_item.xml),ViewGroup root就是需要装载的父组件(这是就是SettingItemView.this)。

iniView方法代码(注意导入R包时为com.example.mobilesafe.R资源包):

1 private void iniView(Context context) {
2         View.inflate(context, R.layout.model_setting_item, SettingItemView.this);
3     }

    ③.在三个构造方法中均执行初始化布局文件的方法iniView(context)。

  4、使用自定义组合控件。

    在布局文件中(这里还是以”设置中心“布局文件activity_setting.xml为例)增加自定义组合控件,即在activity_setting.xml文件中的相对布局下创建一个以自定义控件全路径名称的控件,设置宽、高、id等属性。

代码如下:

1  <com.example.mobilesafe.ui.SettingItemView
2         android:id="@+id/setting_update"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content" >
5     </com.example.mobilesafe.ui.SettingItemView>

时间: 2024-10-24 16:16:18

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

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

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

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

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

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实例-手机安全卫士(十八)-完成设置向导的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】自定义组合控件PullToRefreshRecyeclerView

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

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

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

Android开发学习笔记-自定义组合控件的过程

自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需求,定义一些API方法: ----------------------------------4.根据需要,自定义控件的属性,可以参照TextView属性: 5.自定义命名空间,例如: xmlns:itheima="http://schemas.android.com/apk/res/<包名&