Android零基础开发专题六:android.view.View与android.view.ViewGroup

     在Android SDK当中,给我们提供了很多的控件,比如按钮、下拉列表等。有了这些控件我们可以很快速的来构建用户界面,在Android当中构建用户界面我们主要用来两个核心类:View和ViewGroup。下面小彬哥就来介绍下这两个核心类。

     1、android.view.View类:

          我们在专题五中介绍了Activity,一个Activity就相当于手机屏幕中的一屏,但是Activity无法显示,需要借助于UI类的基类View来进行显示。View类直接继承java.lang.Object类。它的直接子类包括ViewGroup以及显示文本信息的TextView类。间接子类包括比如按钮、编辑框等UI组件。一个View类就代表了屏幕上的一块特定的区域,我们可以利用View类在这块区域上绘图、处理焦点等,当然也可以利用View类处理这块区域对应的按键、手势等交互事件的处理。所以有了View类,我们就可以为Activity创建丰富的UI了。

     1.1 使用android.view.View类:

         在Android中使用View类有两种方法:

         1.1.1 在.java源代码文件中定义,设置相关属性,动态创建View;

         1.1.2 在XML中定义,我们可以将View定义在XML布局元素中,然后在源代码中将定义好的XML文件进行关联就OK了;

     第一种定义View方法比较灵活,不适合初学者进行学习,今天我们就先来介绍下在XML文件中定义View,在源代码文件中的定义小彬哥后面会跟大家详细介绍。谈到View,小彬哥就需要介绍View常见的几个属性。

     android:id:唯一标识;

     android:background:为当前的View设置一个背景色或背景图片;

     android:focusable:是否获得焦点;

     android:visibility:是否显示;

     android:text:当前view的文本值;

     android:layout_width、android:layout_height:宽度、高度,这两个是必须属性;

     说了这么多,下面小彬哥来创建一个实例程序:

     步骤如下:

     在res下的layout文件夹下面的main.xml文件中进行定义如下代码,main.xml文件是描述未来显示在手机屏幕中的显示效果:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@raw/index" >

    <Button
        android:id="@+buttonId/btnHaha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/btnHaha" />

    <Button
        android:id="@+buttonId/btncontinue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+buttonId/btnHaha"
        android:layout_centerInParent="true"
        android:text="@string/btnmsg" >
    </Button>

</RelativeLayout>

   小彬哥将默认的LinearLayout布局改成RelativeLayout(相对布局),RelativeLayout中添加android:background="@raw/index",这段代码表示未来显示在手机屏幕显示的背景图片,@代表引用资源文件,raw是res目录下的资源文件,index是图片名称。(注意是图片的名称,不含扩展名)。

    然后添加两个Button类型的View,其中android:id="@+buttonId/btnHaha"中的+号表示将在gen资源索引中的R.java文件中自动(注意是自动,无需我们自己设置)生成一个buttonId类以及在buttonId类中定义一个静态的btnHaha变量,这样做的目的就是可以在src下面的java源代码中轻松获得这个Button类型的View信息。

   android:layout_width="wrap_content":表示根据屏幕大小自动调整;

   android:layout_height="wrap_content":与上同理;

   android:layout_centerInParent="true":相对于未来手机屏幕,是否显示在屏幕中间。默认为false,表示不显示在中间;

   android:text="@string/btnHaha":引用常量。text属性是未来这个按钮上显示文本信息。在android当中,不建议我们直接在这里编写。而是建议我们将这些常量值存放到res下values文件夹下的strings.xml文件中。

   res目录下values下的strings.xml文件中定义如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">AndroidTest</string>
	<string name="btnHaha">开始</string>
	<string name="btnmsg">结束</string>
</resources>

  所以android:text="@string/btnHaha"代码中的@string表示引用strings.xml中的string标签,后面的/btnHaha表示找到name为btnHaha的标签值,并将其显示到Button按钮中。这样,小彬哥的View就编写好了。

   运行后效果如下图:

    

      2、android.view.ViewGroup类:

          下面我们再来介绍一下ViewGroup,ViewGroup继承至View,它是View的直接子类,它是View的容器控件,可以对其中的View进行管理,可以这么说,有了ViewGroup我们的UI元素就有了结构,ViewGroup就像家里的衣柜一样,我们可以将衣服根据类别进行分类摆放。需要注意的是,ViewGroup是一个抽象类,它是所有容器类控件的基类,从抽象类这三个字小彬哥就明白了,真正充当容器的是他的子类,它的直接子类包括我们刚刚说到的RelativeLayout相对布局控件等,它的间接子类比如ListView、RadioGroup等。

      View与ViewGroup的关系:

      根据我们刚刚创建的View代码,小彬哥发现,main.xml布局文件中的根节点就是一个ViewGroup,在这个ViewGroup下面包含了小彬哥刚刚说的View,因为main.xml是一个xml文档,小彬哥就把ViewGroup下面的View说成节点吧。你不介意吧?哈哈。小彬哥还得提醒你下,ViewGroup下面不光可以包含View,还可以包含ViewGroup呢,说的专业一点,叫什么来着...噢,对了,叫嵌套。呵呵。因为它是一个xml文档,所以整个布局文件就是一个以树形结构来定义的。程序加载这个main.xml文档时,先调用ViewGroup进行根的呈现,然后再调用下面的View子控件进行呈现,直到整个UI全部呈现为止。

      View与ViewGroup是我们以后开发Android的重点,各位要好好体会本专题的概念及技术点吧。

原文地址:https://www.cnblogs.com/brother/p/2560140.html