1、视图组件与容器组件

Android应用绝大部分UI组件都放在Android.widget包及其子包、android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白的矩形区域。

View类还有一个重要的子类:ViewGroup,它通常作为其他组件的容器使用。ViewGroup除了包含普通view组件外,还可包含ViewGroup组件。

所有组件都提供了两种方式来控制组件的行为:

a、在XML布局文件中通过XML属性进行控制。

b、在JAVA程序代码中通过调用方法进行控制。

提示:Drawable是Android提供的一个抽象基类,它代表了“可以被绘制出来的某种东西”,Drawable包括了大量子类,各种Drawable可用于定制UI组件的背景等外观。

ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。这两个内部类中都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性。指定子组件的布局高度和宽度分别是android:layout_height、Android:layout_width。其属性值有三个

fill_parent:指定子组件的高度、宽度与父容器的高度、宽度相同。

match_parent:与fill_parent相同。

wrap_content:指定子组件的大小恰好能包裹它的内容即可。

ViewGroup.MarginLayoutParams用于控制子组件周围的页边距(也就是组件四周的留白)。

2、使用XML布局文件控制UI界面

当我们在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后(R.java会自动收录该布局资源),java代码可通过如下方法在activity中显示该视图:

setContentView(R.layout.<资源文件名字>)

可以为UI组件指定android:id属性,该属性值代表该组件的唯一标识。在java代码中访问该组件:

findViewById(R.id.<android.id属性值>);

一旦在程序中获得了指定UI组件之后,就可以通过代码来控制各UI组件的外观行为,包括为UI组件绑定事件监听器等。

3、在代码中控制UI界面

如果希望在代码中控制UI界面,那么所有的UI组件都将通过new关键字创建出来,然后以合适的方式“搭建”在一起即可。

代码:

a、在布局文件中定义一个简单的线性布局容器

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

<!--定义一个线性布局容器-->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/root"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

b、下面在程序中获取该线性布局容器,并往该容器中添加组件。

public class MixView extends Activity

{

//定义一个访问图片的数组

int[] images = new int[]{R.drawable.java,R.drawable.ee,R.drawable.classic,R.drawable.ajax,R.drawable.xml,};

};

int currentImg = 0;

public void onCreate(Bundle savedInstancestate)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//获取LinearLayout

LinearLayout main =(LinearLayout)findViewById(R.id.root);

//程序创建ImageView组件

final ImageView image = new ImageView(this);

//将ImageView组件添加到LinearLayout布局容器中

main.addView(image);

//初始化时显示第一张图片

image.setImageResource(images[0]);

image.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

//改变ImageView里面显示的图片

image.setImageResource(images[++currentImg%images.length]);

}

});

}

}

4、使用XML布局文件和Java代码混合控制UI界面。

习惯上把变化小、行为比较固定的组件放在XML布局文件中管理,而那些变化多、行为控制复杂的组件则交给java代码来管理。

5、开发自定义的view组件

当开发者打算派生出自己的UI组件时,首先定义一个继承View基类的子类,然后重写View类的一个或多个方法,通常可以被用户重写的方法如下:

界面编程与视图(View)组件的更多相关文章

  1. 关于Android界面编程与视图(View)组件

    UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在 ...

  2. 界面编程与视图(View)组件

    一.视图组件与容器组件 Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类. V ...

  3. 二、Android应用的界面编程(一)界面编程与视图(View)组件

    Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类.它代表一个空白的矩形区域.V ...

  4. android应用的界面编程----View与ViewGroup的概念

    1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel.为了界面布 ...

  5. Java AWT组件开发和Swing界面编程

    一.AWT组件开发 1.AWT AWT是抽象窗口工具箱的缩写,它为编写图形用户界面提供了用户接口,通过这个接口就可以继承很多方法,省去了很多工作.AWT还能使应用程序更好地同用户进行交互. AWT中的 ...

  6. Android编程动态创建视图View的方法

    在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layout ...

  7. React Native组件(二)View组件解析

    相关文章 React Native探索系列 React Native组件系列 前言 了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件.View组件是最基本的组件,也是首先要掌握的组件,这一 ...

  8. 二、Android应用的界面编程(七)ViewAnimator及其子类[ ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper ]

    ViewAnimator是一个基类,它继承了FrameLayout.因此它表现出FrameLayout的特征,可以将多个View组“叠”在一起. ViewAnimator可以在View切换时表现出动画 ...

  9. Android零基础入门第54节:视图切换组件ViewSwitcher

    原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...

随机推荐

  1. Oracle数据库导入导出(备份还原)

    一.数据库的导出 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中(全库导出) exp system/manager@TEST file=d:\ ...

  2. 关于 ThinkPHP5 使用 getBy 字段名方式获取数据

    关于 ThinkPHP5 使用 getBy 字段名方式获取数据 有小伙半说怎么全文搜索都没有搜索到 getByName 之类的函数. 其实是在这里.

  3. PHP 中的文本截取分析之效率

    PHP 中的文本截取分析之效率 在使用 ThinkPHP 或 Laravel 时都会有用到文本截取的帮助函数. 分别是 msubstr (ThinkPHP 3,ThinkPHP 5 没找到) mb_s ...

  4. PHPstorm配置PHPunit对composer引入的php代码进行单元测试

    1. 如何安装PHPunit,这里不展述(如需打断点debug测试,安装PHP的xdebug扩展方法也不展开说了 https://xdebug.org/) 2.如何进行配置 以 PHP设计模式的代码为 ...

  5. OneProxy常用参数说明

    5.2.OneProxy常用参数说明 OneProxy的所有可用参数可通过oneproxy --help-all查看.所有参数均可以写入文件中,由OneProxy启动时加载 5.2.1.基本参数 -- ...

  6. Tomcat 容器的设计和实现

    Tomcat 容器是对 Servlet 规范的实现,也称为 Servlet 引擎.在分析 Tomcat 容器的设计和实现之前,首先简单了解一下 Servlet 规范,弄清楚 Tomcat 究竟要实现什 ...

  7. postman全方位讲解(有空看下)

    Postman 接口测试神器 Postman 是一个接口测试和 http 请求的神器,非常好用. 官方 github 地址: https://github.com/postmanlabs Postma ...

  8. ROS多线接入和多线对外提供服务的完整做法,谁进谁出,电信进电信出,联通进联通出,移动进移动出

    1.网卡接入: 电信移动联通,三线接入,LAN是局域网. 5.从www.tcp5.com,下载联通和移动的路由表,并导入.这边简单说下导入步骤,下载rsc文件,上传到ROS的FTP上,然后用命令imp ...

  9. oracle link的创建过程

    下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 ...

  10. ubuntu,debian root密码忘记破解

    开机启动的时候在grub引导时,按住e进行启动项编辑,修改开头有linux字符及最后又ro字符的行,将ro字符改为rw single init=/bin/bash按F10键进行启动即可进入单用户模式, ...