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

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

View类还有一个重要的子类ViewGroup,但ViewGroup一般做为其余组件的容器使用。 android

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

一、使用XML布局文件控制UI界面 编程

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

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

二、在代码中控制UI界面 app

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());
			}
		});
	}
}

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

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]);
			}
		});
	}
}
相关文章
相关标签/搜索