文档章节

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

谷飞
 谷飞
发布于 2012/11/05 22:23
字数 616
阅读 306
收藏 3

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

 

© 著作权归作者所有

谷飞
粉丝 0
博文 21
码字总数 23474
作品 0
苏州
程序员
私信 提问
.Net Core使用视图组件(ViewComponent)封装表单文本框控件

实例程序的界面效果如下图所示: 在表单中的搜索条件有姓名,学号,成绩。他们在一行中按照水平三等分排列。 在cshtml中用html实现上述表单效果的的代码如下: 2 3 4 姓名 5 6...

枫叶456
02/23
0
0
MVC简单的认识

学习一个新知识,首先要了解的就是以下几个问题,它是什么?它能干什么?使用它有什么优点?这篇文章就环绕这几个问题来展开讨论。 mvc不是一种编程语言,严格来说。它都不算是一门技术。它是...

eddie小英俊
2017/11/21
0
0
MVC、MVP以及Model2[上篇]

对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合在一起,这些逻辑包括数据的...

长平狐
2012/09/04
165
0
WPF与Prism一并学习(一)

结合别人对Prism 4.0的文档翻译学习 http://www.cnblogs.com/Pray4U/tag/Prism/ 学习Prism的前提条件 使用Prism需要您拥有开发WPF或者Silverlight应用程序的经验。这样你会熟悉在Prism中大量...

andrewniu
2017/11/30
0
0
【Qt笔记】model/view 架构

有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中。早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如...

大道无名
2016/08/01
25
0

没有更多内容

加载失败,请刷新页面

加载更多

哨兵作用

https://www.cnblogs.com/kaleidoscope/p/9636496.html

Java搬砖工程师
21分钟前
1
0
好程序员web前端教程分享CSS技巧!

好程序员web前端教程分享CSS技巧!现在学web人越来越多,小白的问题也越来越多,那么今天就为大家分享一下CSS学习技巧!在web前端工作中离不开css的使用。为了帮助大家提高自己的css使用技巧...

好程序员IT
24分钟前
1
0
PhpStudy升级MySQL5.5到5.7记录

1.下载mysql 5.7 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-winx64.zip 2.备份目前的数据库数据,可以导出数据库文件,作为备份。 3.备份 PhpStudy 下的 MySQL 文件夹、以防升...

win_ball
25分钟前
1
0
Java8 JVM参数解读

摘要: 我们知道java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令。那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和...

xiaomin0322
27分钟前
1
0
maven中关于scope依赖范围

既然,Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用...

syso_Null
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部