`
Irving_wei
  • 浏览: 132590 次
  • 性别: Icon_minigender_1
  • 来自: Heaven
社区版块
存档分类
最新评论

Android笔记(六):Android中Activity的切换①

阅读更多
Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话、照相、发邮件或者是浏览地图等。每个activity会提供一个可视的窗口,一般情况下这个窗口会覆盖整个屏幕,但在某此情况下也会出现一些比屏幕小的窗口飘浮在另外一相窗口上面。类比Windows当中的概念,Activity相应于一个Dialog(MFC)或者是Form(C#),它为用户提供一个可视的界面。

下面是摘自android API的,关于android.app.Activity的介绍:
An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(int). While activities are often presented to the user as full-screen windows, they can also be used in other ways: as floating windows (via a theme with android.R.attr#windowIsFloating set) or embedded inside of another activity (using ActivityGroup).

关于Activity的生命周期,是非常重要的,这些将在以后的文章中介绍到。
今天我们将初步接触到的其实是一个小把戏,说它小把戏,其实是因为它只是单纯的Activity配置之间的切换,在实际中,这种切换是没有多大的意义的,而真正的Activity的切换,比这个要复杂。

但是要理解和运用Activity之间的切换,我觉得,先接触本文的这种方式将会很有裨益。

进入正题,本例中的代码运行效果如下图:



本例模拟的是一个安装程序,点击第一幅画面的“下一步”,进入的第二幅画面,为了以示区别,我们将第二幅画面的背景颜色变成了白色。点击“上一步”,又会回到上一个画面,在点击按钮的同时,Activity看上去在不断地切换着。

首先,我们在strings.xml中定义本例中所需要用到的字符串。
    <string name="hello">欢迎安装本程序,本程序采用安卓技术,保证\n更炫的体验,
    更稳定的操作环境,更优质的服务。\n\n\n请点击“下一步”继续\n\n</string>
    <string name="nextMessage">对不起,程序未开发完全,请等待新版本的发布\n\n\n点击"上一步"返回\n\n</string>
    <string name="app_name">AndroidWithViewChange</string>
    <string name="nextButtonText">下一步</string>
    <string name="preButtonText">上一步</string>
 

在第一篇笔记中,我们介绍到,layout文件夹中存放的xml都是和布局UI相关的,其实系统默认生成的main.xml就对应了我们程序默认的一个Activity配置,
     setContentView(R.layout.main);
这句将main.xml中设置的配置,和Activity的子类相关联。
在main.xml中,我们定义一个TextView和Button,配置如下:
<?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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
    
 <Button
 	android:id="@+id/nextButton"
 	android:layout_height="wrap_content"
 	android:layout_width="60px"
 	android:text="@string/nextButtonText"
 />   
</LinearLayout>



在main.xml对应的文件夹下,新建另外一个xml文件,命名:mylayout.xml,
定义一个TextView和一个Button
其配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/myLayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/nextMessage"
    />
    
 <Button
 	android:id="@+id/preButton"
 	android:layout_height="wrap_content"
 	android:layout_width="60px"
 	android:text="@string/preButtonText"
 />   
</LinearLayout>



此处,我们系统生成的Activity的子类是以main.xml的配置来生成Activity的,而mylayout的配置是另外要重新绘制布局的配置文件。
其代码如下所示:
package cn.irving;

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

public class Test extends Activity {
	private Button nextButton  ;
	private Button preButton   ;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //载入main.xml
        setContentView(R.layout.main);
        
        //以findById的方式找到nextButton对象,并且绑定事件
        nextButton = (Button)findViewById(R.id.nextButton);
        nextButton.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				goNextPage();
			}
		});
        
    }
    
    //跳转到下一页
    private void goNextPage(){
    	setContentView(R.layout.mylayout);
    	preButton = (Button)findViewById(R.id.preButton);
    	preButton.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				goPrePage();
			}
    	});
    }
    
    //跳转到上一页
    private void goPrePage(){
    	setContentView(R.layout.main);
    	nextButton = (Button)findViewById(R.id.nextButton);
    	nextButton.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				goNextPage();
			}
    	});
    }
    
    
}



从上面的分析,我们可以发现,其实并不是在Activity之间进行的切换,我们只有一个Activity类,但是却有两套不同的Activity的配置文件,在点击按钮的同时,给Activity设置上不同的ContentView,这样就造成了不同Activity切换的现象。

下一节我们将真正体会不同的Activity的切换,仅将此文作为下一节的引子吧。
  • 大小: 23.2 KB
  • 大小: 12.5 KB
分享到:
评论

相关推荐

    Android Activity学习笔记

    Android Activity学习笔记 Android Activity是Android系统中最基本的组件之一,它负责处理用户交互和显示用户界面。本文将深入讲解Activity的生命周期、Activity之间的数据交互、Activity启动模式、Task和BackStack...

    Android开发笔记之:Splash的实现详解

    在Android开发中,Splash屏幕,或称为启动页,是一个应用程序启动时短暂展示的界面,通常包含应用程序的标志、开发商信息、应用名称和版本等。它主要用于提升品牌形象,展示加载进度,或者进行一些初始化操作。虽然...

    Android学习笔记(三六):横屏竖屏的切换.doc

    本篇笔记主要讲述了如何在Android中实现横屏竖屏的切换以及在此过程中可能遇到的问题。 首先,对于模拟器而言,横屏和竖屏的切换非常方便,只需按下快捷键`Ctrl+F12`,即可快速在竖屏(portrait)和横屏(landscape...

    Android笔记之:onConfigurationChanged详解

    首先,`onConfigurationChanged` 方法是 `Activity` 类的一个回调方法,当设备的配置发生改变时,如屏幕方向的切换(横屏到竖屏或反之)、系统语言的更改、键盘的展开或收起等,系统会调用这个方法,而不是重新创建 ...

    Android学习笔记(三七):再谈屏幕切换.doc

    在`Android学习笔记(三六):横屏竖屏的切换`中,我们了解到可以通过在`layout-land`目录下创建针对横屏的布局文件,让应用在横屏模式下使用不同的UI设计。如果没有提供横屏布局,系统会自动调整竖屏布局以适应横屏...

    android生命周期管理:重启或停止一个Activity

    在Android应用开发中,Activity是用户界面的基本单元,它的生命周期管理是至关重要的,因为它直接影响到用户体验和应用性能。本文将详细探讨如何在Android中正确处理Activity的停止与重启。 Activity的生命周期包括...

    android初学者开发笔记

    ### Android初学者开发笔记知识点详解 #### 一、六大布局详解 在Android开发过程中,合理的布局设计对于用户体验至关重要。下面详细介绍六种常见的Android布局及其特点。 ##### 1. **FrameLayout(帧布局)** - *...

    Android开发笔记(3)-Activity生命周期

    本篇笔记将深入探讨Activity的生命周期,这是每个Android开发者必须掌握的核心概念。通过理解Activity生命周期,我们可以有效地管理资源,优化用户体验,并确保应用在各种场景下表现稳定。 Activity的生命周期由一...

    Android学霸学习笔记

    - 启动其他的Activity:解释如何在App中切换不同的屏幕。 - 添加ActionBar:讲解如何为应用添加顶部的导航栏。 - 自定义ActionBar的风格:展示如何个性化ActionBar的设计。 -ActionBar的覆盖层叠:讨论如何处理...

    Android自学笔记-16-任务栈

    在Android系统中,任务栈(Task Stack)是应用程序运行的核心组成部分,它关乎着应用的启动、切换以及用户界面的管理。本自学笔记将深入探讨Android的任务栈机制,以帮助开发者更好地理解和利用这一特性来优化用户...

    android 学习笔记7-页面跳转 Activity启动 生命周期 activity数据传递

    1、创建一个自己的Activity 2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 6、禁用掉横竖屏切换 7、开启activity获取返回值-...

    Android自学笔记-15-Activity的生命周期

    在本篇自学笔记中,我们将深入探讨Activity如何启动、运行、暂停、恢复以及销毁,以及在这些状态之间转换时应如何适当地管理资源。 首先,Activity的生命周期主要由七个关键回调方法组成: 1. **onCreate()**: 当...

    Android笔记(5)---Activity生命周期

    这篇笔记主要探讨了Activity的生命周期,这是每个Android开发者都需要深入理解的关键概念。Activity的生命周期包括了一系列的状态变化,这些状态反映了Activity在应用程序中的存活状态,以及如何响应系统资源的变化...

    Android基础笔记

    Android ViewPager 是 Android 应用中的一个重要控件,用于实现应用程序的滑动切换。ViewPager 可以使用多种适配器,例如 FragmentPagerAdapter 或者 PagerAdapter 等。 Android 基础笔记涵盖了 Android 开发的...

    android app笔记

    ### Android App笔记 #### 一、Android概述 **Android** 是一种基于Linux内核的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑。它由Google公司和开放手机联盟领导及开发。虽然没有统一的...

    Android笔记(3)---Activity和Intent

    在Android应用开发中,Activity和Intent是两个至关重要的概念,它们构成了Android应用程序的基本交互机制。这篇笔记将深入探讨这两个核心组件以及它们之间的关联。 Activity在Android系统中扮演着视图窗口的角色,...

    Android Studio 学习笔记-新手入门-(1)第一个案例

    这篇学习笔记将引导新手入门,通过创建第一个简单的案例来了解Android Studio的基本操作。 首先,让我们了解一下Android Studio的核心功能。它基于IntelliJ IDEA,具备代码自动补全、重构、调试等强大的开发特性。...

    android笔记安卓基础知识 四大组件、六大布局、五大存储

    例如,音乐播放器中的音乐播放功能就可以作为一个Service来实现,这样即使用户切换到了其他应用,音乐也能继续播放。 3. **ContentProvider**:内容提供者组件,它用于在不同的应用之间共享数据。比如,联系人列表...

    Android学习新手笔记

    - 类似Activity切换效果的实现,例如使用layout切换。 12. activityForResult的使用 - activityForResult的实现机制和使用方法,用于在Activity间进行结果返回。 整个笔记强调了在Android学习过程中,Java编程...

Global site tag (gtag.js) - Google Analytics