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

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

View类还有一个重要的子类ViewGroup,但ViewGroup通常作为其他组件的容器使用。

Android的所有UI 组件都是建立在View、ViewGroup基础之上的,Android采用了“组合器”设计模式来设计View和ViewGroup:ViewGroup是View的子类,因此ViewGroup也可被当成View使用。对于一个Android应用的图形用户界面来说,ViewGroup作为容器来盛装其他组件,而ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGroup组件。 

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

setContentView(R.layout.<资源文件名字>);    //在Activity中显示该视图

findViewById(R.id.<android.id属性值>);   //在Java代码中访问指定UI组件

2、在代码中控制UI界面

package org.crazyit.codeview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * @author gufei  * @version  1.0
 */
public class CodeView extends Activity 
{
	//当第一次创建该Activity时回调该方法
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		//创建一个线性布局管理器
		LinearLayout layout = new LinearLayout(this);
		//设置该Activity显示layout
		super.setContentView(layout);
		layout.setOrientation(LinearLayout.VERTICAL);
		//创建一个TextView
		final TextView show = new TextView(this);
		//创建一个按钮
		Button bn = new Button(this);
		bn.setText(R.string.ok);
		bn.setLayoutParams(new ViewGroup.LayoutParams(
			ViewGroup.LayoutParams.WRAP_CONTENT
			, ViewGroup.LayoutParams.WRAP_CONTENT));
		//向Layout容器中添加TextView
		layout.addView(show);
		//向Layout容器中添加按钮
		layout.addView(bn);
        //为按钮绑定一个事件监听器
		bn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v) 
			{
				show.setText("Hello , Android , "
					+ new java.util.Date());
			}
		});
	}
}

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

main.xml代码

<?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" />
MixView.java
package org.crazyit.mixview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;

/**
 * @author  gufei
 * @version  1.0
 */
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;
	@Override
	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)
			{
				if (currentImg >= 4)
				{
					currentImg = -1;
				}
				//改变ImageView里显示的图片
				image.setImageResource(images[++currentImg]);
			}
		});
	}
}

 

你可能感兴趣的:(界面编程与视图(View)组件)