Android UI简介

本文深入探讨了Android SDK中控件的应用及如何构建用户界面,介绍了使用代码、XML布局和结合使用的方法,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    Android SDK包含许多控件,可以使用它们来为应用程序构建用户界面。Android SDK提供了文本字段、按钮、列表、网格等控件。此外,Android还提供了一组适合移动设备的控件。Android应用的绝大部分组件都放在android.widget包及其子包、android.view包及其子包中。常见控件的核心是两个类:android.view.View和android.view.ViewGroup。

View类表示一份通用的View对象。Android中的常见控件最终都会扩展View类。一个视图(View)在屏幕上占据了一块矩形区域,它负责渲染这块矩形区域,也可以处理这块矩形区域发生的事件,并且可以设置这块区域是否可见,是否可以获取焦点等。

    ViewGroup也是一个视图,但它还包含其他视图,作用就是View的容器,负责对添加进ViewGroup的这些View进行布局。ViewGroup是一些布局类的基类。像Swing一样,Android使用布局的概念来管理控件在容器视图中的摆放。当然,一个ViewGroup也可以加入到另一个ViewGroup里边,因为ViewGroup也是继承于View.Viewgroup类,它是一个抽象类,也是其他容器类的基类。

    要在Android中构建用户界面,有多种方法可供选择。可以完全用代码来构造用户界面;也可以在XML中定义用户界面。甚至可以结合使用两种方法:在XML中定义用户界面,然后在代码中引用和修改它。

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

    当在文件中添加多个UI组件时,都可以为该UI组件指定android:id属性,该属性的属性值代表该组件的唯一标识。如果希望在Java代码中访问指定UI组件,可通过如下代码访问:findViewById(R.id.<android:id属性值>)。

 

1.完全利用代码来构建UI

    可在*Activity.java中写入以下代码:

public class CodeStyleActivity extends Activity {

	private LinearLayout nameContainer;

	/** Called when the activity is first created */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		 createNameContainer();
		 
		 setContentView(nameContainer);
	}
	
	 private void createNameContainer() {
	 // TODO Auto-generated method stub
	 nameContainer = new LinearLayout(this);
	 //FILL_PARENT:铺满;WRAP_CONTENT:标示视图仅占据它在该方向上需要的空间,而不能占据更多,具体取决于包含视图所允许的空间范围
	 nameContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
	 nameContainer.setOrientation(LinearLayout.HORIZONTAL); //水平放置
	
	 TextView nameLb1 = new TextView(this);
	 nameLb1.setText("Name:");
	
	 TextView nameValue = new TextView(this);
	 nameValue.setText("vjudge");
	
	 nameContainer.addView(nameLb1);
	 nameContainer.addView(nameValue);
	 }
}


2.完全使用XML构建UI

    XML文件存储在资源目录(/res)下的layout文件夹中。

(1)在XML文件中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    	
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name: "/>
    
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="vjudge"/>

</LinearLayout>

(2)在相应的*Activity.java文件中:

public class XmlStyleActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_xml_style);

	}
}


3.使用XML和代码构建UI

    完全使用Java代码来控制UI界面不仅烦琐、而且不利于解耦;而完全利用XML布局文件来控制UI界面虽然方便、便捷,但难免有失灵活。

    理想情况下,我们应该在XML中设计用户界面,然后从代码中引用这些控件。此方法支持将动态数据绑定到设计时定义的控件。实际上,这是推荐的做法。在XML中构建布局,然后使用代码填充动态数据非常简单。

    当混合使用XML布局文件和代码来控制UI界面时,习惯上把变化小,行为比较固定的组件放在XML布局文件中管理,而那些变化比较多、行为控制比较复杂的组件则交给Java代码来管理。

(1)在XML文件中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
    	
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/txtname" />
    
    <TextView android:id="@+id/nameValue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

(2)在strings.xml文件中添加:

<string name="txtname">Name: </string>

(3)在相应的*Activity.java文件中:

public class MixStyleActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_mix_style);
		
		TextView nameValue = (TextView)findViewById(R.id.nameValue);
		nameValue.setText("vjudge");

	}
}

注:在调用findViewById()之前先通过setContentView(R.layout.activity_mix_style);加载了资源。如果未加载视图,将无法获得对视图的引用。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值