Android中控件的继承 通用行为和属性

简介:

Android中控件的继承 通用行为和属性

本文主要给Android开发者讲解Android控件类的继承关系,通用行为以及属性,便于初级开发者学习和入门。

  1、控件类的继承结构

  android.view.View类(视图类)呈现了最基本的UI构造块。一个视图占据屏幕上的一个方形区域,并且负责绘制和事件处理。

  Android中控件类的扩展结构如图3-1所示。


▲图3-1 Android中控件类的扩展结构

  View有众多的扩展者,它们大部分是在android.widget包中,这些继承者实际上就是Android系统中的“控件”。View实际上就是各个控件的基类,创建交互式的图形用户界面的基础。

  View的直接继承者包括文本视图(TextView)、图像视图(ImageView)、进度条(ProgressBar)等。它们各自又有众多的继承者。每个控件除了继承父类功能之外,一般还具有自己的公有方法、保护方法、XML属性等。

  在Android中使用各种控件的一般情况是在布局文件中可以实现UI的外观,然后在Java文件中实现对各种控件的控制动作。控件类的名称也是它们在布局文件XML中使用的标签名称。

  2、控件通用行为和属性

  View是Android中所有控件类的基类,因此View中一些内容是所有控件类都具有的通用行为和属性。

  提示:由于Java语言不支持多重继承,因此Android控件不可能以基本功能的“排列组合”的方式实现。在这种情况下,为了实现功能的复用,基类的功能往往做得较强,作为控件的祖先类,View所实现的功能也是最多的。

  控件类经常在布局文件中使用,因此其可以使用XML属性(XMLAttributes),和Java代码经常具有对应关系。

  View作为各种控件的基类,其XML属性所有控件通用,几个重要的XML属性如表3-1所示。

  表3-1 View中几个重要XML属性及其对应的方法

 

  XML属性Java中的方法描 述

  android:idsetId(int) 控件的标识

  android:visibilitysetVisibility(int)控件的可见性

  android:backgroundsetBackgroundResource(int)控件的背景

  其中,android:id表示控件的标识,通常需要在布局文件中指定这个属性。View中与控件标识相关的几个方法如下所示:

  public int getId() // 获得控件的id(int类型)

  public void setId(int id) // 设置控件的id(int类型)

  public Object getTag() // 获得控件的tag(Object类型)

  public void setTag(Object tag) // 设置控件的tag(Object类型)

  对于一个控件,也就是View的继承者,整数类型id是其主要的标识。其中,getId()可以获得控件的id,而setId()可以将一个整数设置为控件的id,但是这个方法并不常用。View的id通常可以在布局文件中获得。

  Object类型的标识tag是控件的一个扩展标识,由于使用了Object类型,它可以接受大部分的Java类型。

  在一个View中根据id或者tag查找其孩子的方法如下所示:

  public final View findViewById(int id)

  public final View findViewWithTag(Object tag)

  findViewById()和findViewWithTag()的目的是返回这个View树中id和tag为某个数值的View的句柄。View树的含义是View及其所有的孩子。

  值得注意的是,id不是控件的唯一标识,例如布局文件中id是可以重复的,在这种重复的情况下,findViewById()的结果不能确保找到唯一的控件。

  提示:作为控件的标识的id和tag可以配合使用:当id有重复的时候,可以通过给控件设置不同的tag,对其进行区分。

  可见性的问题,android:visibility在布局文件中有三个数值:visible(可见,默认),invisible(不可见),gone(去除)。在Java代码中,setVisibility()能使用的枚举值与其对应,它们是:View.VISIBLE(0x0),View.INVISIBLE(0x4),View.GONE(0x8)。

  参考示例程序:Visibility(ApiDemo=>Views)

  源代码:com/example/android/apis/view/ visibility_1.java

  布局文件:visibility_1.xml

  对于文字为View B的文本框,分别使用了visible、invisible和gone设置。invisible和gone的区别在于invisible只是不可见,但是依然占位,gone表示将控件去除,显示的效果就像没有这个控件存在。

  和View形态相关的几个方法如下所示:

  public void invalidate () // 使无效(重新绘制)

  public void requestLayout () // 申请重新布局

  public final boolean requestFocus () // 申请聚焦

  这几个方法都和View的显示形态有关:invalidate()方法的功能是使得无效,用于重新绘制当前的View;requestLayout()用于更新View树,也就是由当前View的大小位置变化更新与其相关的View;requestFocus()用于申请当前的聚焦。

  查找聚焦的View的方法如下所示:

  public View findFocus () // 找到聚焦的View

  在布局文件中,如果在一个控件的标签中使用标签,表示指定它在默认情况下被聚焦。当使用上、下、左、右按键的时候,各个控件有着默认的聚焦顺序。其他聚焦的问题可以在布局文件中进一步处理,一个处理的方法如下所示:

<LinearLayout android:orientation="vertical">
    <Button android:id="@+id/top"     android:nextFocusUp="@+id/bottom" />
    <Button android:id="@+id/bottom" android:nextFocusDown="@+id/top" />
</LinearLayout>
这里android:nextFocusUp和android:nextFocusDown分别是上下按键的时候,下一个聚焦的控件的id。








本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/792711,如需转载请自行联系原作者
目录
相关文章
|
Shell API Android开发
android queries属性
android queries属性
880 2
|
4月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
4月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
258 2
|
4月前
|
Android开发
Android控件样式的抽取(小提及快捷方式)
在Android开发中,若多个控件样式重复,可抽取公共部分以简化代码。例如对EditText提取样式,通过编辑`styles.xml`实现复用。为提高效率,Android Studio提供自动提取Style功能:右键点击控件样式选项,选择“Style...”,勾选需要提取的属性后确认,即可快速生成样式代码,显著提升开发便利性。
124 2
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
145 3
|
11月前
|
XML 存储 Java
浅谈Android的TextView控件
浅谈Android的TextView控件
106 0
|
前端开发 Android开发 开发者
安卓开发中的自定义视图:构建你的第一个控件
【8月更文挑战第26天】在安卓开发的浩瀚海洋中,自定义视图是一块充满魔力的乐土。它不仅是开发者展示创造力的舞台,更是实现独特用户体验的关键。本文将带你步入自定义视图的世界,从基础概念到实战应用,一步步教你如何打造自己的第一个控件。无论你是初学者还是有经验的开发者,这篇文章都将为你的开发之旅增添新的风景。
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
204 0
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
236 4
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
536 2