界面编程与视图(View)组件
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)组件的更多相关文章
- 关于Android界面编程与视图(View)组件
		UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在 ... 
- 界面编程与视图(View)组件
		一.视图组件与容器组件 Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类. V ... 
- 二、Android应用的界面编程(一)界面编程与视图(View)组件
		Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类.它代表一个空白的矩形区域.V ... 
- android应用的界面编程----View与ViewGroup的概念
		1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel.为了界面布 ... 
- Java AWT组件开发和Swing界面编程
		一.AWT组件开发 1.AWT AWT是抽象窗口工具箱的缩写,它为编写图形用户界面提供了用户接口,通过这个接口就可以继承很多方法,省去了很多工作.AWT还能使应用程序更好地同用户进行交互. AWT中的 ... 
- Android编程动态创建视图View的方法
		在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layout ... 
- React Native组件(二)View组件解析
		相关文章 React Native探索系列 React Native组件系列 前言 了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件.View组件是最基本的组件,也是首先要掌握的组件,这一 ... 
- 二、Android应用的界面编程(七)ViewAnimator及其子类[ ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper ]
		ViewAnimator是一个基类,它继承了FrameLayout.因此它表现出FrameLayout的特征,可以将多个View组“叠”在一起. ViewAnimator可以在View切换时表现出动画 ... 
- Android零基础入门第54节:视图切换组件ViewSwitcher
		原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ... 
随机推荐
- 每日一条 Git 命令:git merge remote master
			每日一条 Git 命令:git merge remote master 当远程的分支更新后,需要将自己的代码与远程的分支合并就用以下这个命令合并. git merge remote master 如果 ... 
- Mplayer1.0rc2移植到am335x开发板
			因项目需要媒体播放器,所以准备使用QT+Mplayer来做,但遇到了屏幕闪烁的问题,无法满足需求. 1.参考<mplayer 移植到 arm 心得> ,http://blog.csdn.n ... 
- myeclipse越来越卡了怎么回事啊?
			去掉拼写检查:windows->preferences->General->Editors->Text Editors->Spelling 将“Enable spell ... 
- Phonegap 工程项目介绍
			一.工程项目的路径在www下面,www下面的文件如下图 1. index.html <!DOCTYPE html> <!-- Licensed to the Apache Softw ... 
- Python download a image (or a file)
			http://stackoverflow.com/questions/13137817/how-to-download-image-using-requests import shutil impor ... 
- bzoj1811 mea
			Description 考虑一个非递减的整数序列 S1,....Sn+1(Si<=Si+1 1<=i<=n). 序列M1...Mn是定义在序列S的基础上,关系式为 Mi=( Si ... 
- OSG和ProLand 的海面仿真
			基于OSG的海面仿真 OSG中国官网 http://www.osgchina.org/ OSG-ocean的效果图如下 proland的效果图如下 下面为OSG和OCEAN的配置 配置方法转自 htt ... 
- 笔记本制作centos qcow2格式文件
			笔记本win7先通过vbox安装好centos6.5 然后打开cmd命令行在c:\Program Files\Oracle\VirtualBox下执行 vboxmanage clonehd --for ... 
- 记一次全站升级https引发的一系列问题
			中秋假期,闲来无事.花了一下午折腾了下https,说实话这年头还有网站不上https显然是折腾精神不够啊~ 1.SSL证书评估 看了市面上各种类型的证书,有收费的也有免费的,但是最终还是选择了腾讯云提 ... 
- Oracle 查询历史数据(转帖)
			回复误删除数据信息. 1.执行 alter table table_name enable row movement; 2.执行 FlashBack table table_name to times ... 
