Android Activity第四讲 整点能动的,安卓开发指南、教程

看完前几个章节,我们已经会写带颜色的到此一游了,接下来我们需要让文字动起来。按钮是我们最常见的交互控件,下面的例子是利用按钮切换当前布局,与之类似的效果是HTML里利用DIV的Display属性进行交替显示,这样的设计带来最大的好处是元素、变量都在一个Activity里,属于内部调用,但缺点是变化的内容只限于Layout。
projects\helloworld\src\net\himagic\helloworld\HelloWorld.java


package net.himagic.helloworld;

import android.app.Activity;
import android.os.Bundle;

import android.view.View;
import android.widget.Button;
import android.content.res.Resources;

public class HelloWorld extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        showPage(1);
    }

    public void showPage(int index)
    {
    	Button btn;
    	switch (index)
	    {
	        case 2:
	        	setContentView(R.layout.sub);
	        	btn = (Button) findViewById(R.id.button2);
		        btn.setOnClickListener(new Button.OnClickListener()
		        {
		        	public void onClick(View v)
		        	{
		        		showPage(1);
		        	}
		        });
	        	break;
	        default :
	        	setContentView(R.layout.main);
	        	btn = (Button) findViewById(R.id.button1);
		        btn.setOnClickListener(new Button.OnClickListener()
		        {
		        	public void onClick(View v)
		        	{
		        		showPage(2);
		        	}
		        });
	        	break;
	     }

    }
}

projects\helloworld\res\layout\main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF00"
    >
<TextView  
	android:id="@+id/text1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/str_hi"
    />
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/str_btn_howdy" 
    />
</LinearLayout>

projects\helloworld\res\layout\sub.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF00FFFF"
    >
<TextView  
	android:id="@+id/text2"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/str_howdy"
    />
<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/str_btn_hi" 
    />
</LinearLayout>

projects\helloworld\res\layout\strings.xml


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="str_hi">Hi Magic!</string>
    <string name="str_howdy">Howdy Magic!</string>
    <string name="str_btn_hi">Hi Magic!</string>
    <string name="str_btn_howdy">Howdy Magic!</string>
    <string name="app_name">HelloWorld</string>
</resources>

例子中需要注意的是setContentView同时只能设置一个布局XML,你不能findViewById一个不在当前视图的控件,否则程序会在运行时报错。此外,每次setContentView之后都需要再次绑定button的setOnClickListener。

发表评论

电子邮件地址不会被公开。

CAPTCHA image
*