[Android]开发App,你得知道这些7——自定义控件(二)

0.前言

本文为上一篇文章的续篇,主要是内容过长,为了便于观看,分成了两篇文章

建议想系统学习的读者,先阅读上一篇文章:
[Android]开发App,你得知道这些6——自定义控件(一)

准备工作

在读本文前,你最好有以下准备:

  • (1)安装Android Stuido(以下简称AS
  • (2)有一定的Java基础
  • (3)有一台安卓机
    (可以用模拟器来代替,包括AS自带的以及网上的一些著名模拟器)
  • 若想要了解有关Java的文章等其他主要知识,可以去看前面的文章

(不会使用AS的读者可以参考下面这篇文章中的例子)
《[Java]开发安卓,你得掌握的Java知识2》

1.本文内容简介

  • 继承方式自定义控件(xml方式)


继承方式的控件

xml文件

第零步 建议先完成java代码方式的自定义控件方式

这里会简略地说一下,首先,准备好drawable资源,在MainActivity同一个文件夹下,创建一个类,继承一个Layout(本文继承的是RelativeLayout)取名为Title,然后ctrl+0(选择重写的函数),选择前三个函数

  • 如果想要观看详细过程的,去看:
    [Android]开发App,你得知道这些6——自定义控件(一)
    这里不再赘述

    xml用到的是后面两个构造方法

    一般情况下我们为了写代码方便,会把第二个代码中的内容,改成this(context,attrs,0)
    这样的话,无论有没有defStyleAttr,都会走最后一个构造方法,避免代码冗余
第一步 创建一个values的xml文件
  • 找到res->values
    右键->New->Values resource file



    起名字(其他不用动)


第二步 完成xml设置

输入"



name选择你要通过xml方式自定义的控件的类



  • 此时直接输入">"可以补全



  • 标签里面添加对应的属性


  • 这里的name表示参数名,就是xml添加控件的时候,可以设置的参数
  • format表示属性的数据类型,如果有多种可能,用"|"隔开(如backgroundRes)
  • 另外,这些参数的来源,可以参考java代码方法添加控件的时候,所需要的参数,因此这就是最好先要弄好java代码方式的原因(需要的去看上一篇文章)
    最后可以实现xml里面这么添加(现在还不行)

    代码:(用来复制)


    
        
        
        
        
    

第三步 在Title类的第三个中获取设置的属性

(后面会给全代码的)


  • 这里的if(attrs != null)用来判断是否有设置属性(如果有,则attrs不会是null)
  • 而TypeArray用来获取设置的属性所组成的数组



    先在外面声明好变量



    然后在下面获取

    最后通过之前java代码创建的时候使用的方法,对属性进行赋值(这些方法上一篇文章有)


第四步 在activity_main.xml中添加控件

选择第一个即可



设置对应的属性



效果:

总结

1.这次的两篇文章讲了自定义控件中的组合方式创建,由于使用的是系统自带的控件,因此其实更多的是考验编写者的逻辑思维
2.两篇文章中的代码书写逻辑我略微省去了一些(篇幅有限),如果有一定基础,其实并不难看懂
3.这次的这个标题,可以作为一个模板,以后再要使用类似的标题,可以直接用这次的自定义控件

你可能感兴趣的:([Android]开发App,你得知道这些7——自定义控件(二))