Android Activity切换教程:初学者指南
"这篇教程主要介绍了在Android平台上如何实现Activity之间的界面切换,特别适合初学者。文中通过具体的代码示例来展示如何操作。" 在Android应用开发中,Activity是构成应用程序的基本单元,它代表用户可以看到并与其交互的一个屏幕。Activity界面切换是Android应用中常见的功能,用于在不同的界面之间导航。以下将详细讲解如何实现这一功能。 首先,我们需要创建至少两个Activity。在提供的代码中,`MainActivity` 是一个扩展自 `ActivityGroup` 的类,这在较旧的Android版本中用于实现类似TabHost的效果,但现在通常我们不再使用 `ActivityGroup`,而是直接使用普通的 `Activity` 类。 ```java public class MainActivity extends Activity implements OnTouchListener { ``` 在 `onCreate()` 方法中,我们通常会设置布局并初始化控件。在这个例子中,可能会有多个 `LinearLayout` 对象,每个代表一个Activity界面: ```java private LinearLayout LinearLayout1, LinearLayout2, LinearLayout3, LinearLayout4, LinearLayout5; private LinearLayout container; ``` `container` 是用来承载各个界面的父布局,通常是一个 `LinearLayout` 或其他可滚动的容器。 接着,为了实现界面切换,我们需要处理用户点击事件,比如当用户点击某个按钮或布局时,启动新的Activity。在旧的实现方式中,可能使用 `LocalActivityManager` 来管理内部的Activity,但现代的Android开发中,我们更倾向于使用意图(Intent)来启动新的Activity: ```java Intent intent = new Intent(this, TargetActivity.class); startActivity(intent); ``` 在这里,`TargetActivity` 是你要切换到的目标Activity。 此外,为了提供良好的用户体验,我们还可以添加过渡动画来平滑地进行界面切换。这可以通过在 `Activity` 的 `overridePendingTransition()` 方法中指定动画资源来实现: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 切换回后的动画 overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right); } ``` 在 `slide_in_left.xml` 和 `slide_out_right.xml` 文件中定义了左右滑动的动画效果。 最后,对于菜单、选项或者触摸事件的处理,可以重写相应的回调方法,如 `onOptionsItemSelected(MenuItem item)` 和 `onTouchEvent(MotionEvent event)`。 总结来说,Android中的Activity界面切换主要涉及以下几个步骤: 1. 创建并设置布局。 2. 初始化控件并绑定事件监听器。 3. 使用Intent启动新的Activity。 4. 可选:添加动画效果以提升用户体验。 随着Android SDK的更新,现代的开发实践中,通常不再使用 `ActivityGroup`,而是使用更简洁、更易于理解和维护的 `Fragment` 来实现多界面的切换和管理。`Fragment` 可以在单个 `Activity` 内部动态添加、移除和替换,更加灵活且符合Android设计原则。对于初学者来说,理解Activity和Fragment的概念以及它们在界面切换中的作用至关重要。
<1>.先定义一个主界面,主界面分为上下两部分,上面存放切换显示的界面,下面存放五个点击事件的布局,当点击时,上面就会显示切换的Activity
<2>.定义五个点击事件的监听者,当点击事件被点击时,被点击事件的颜色改变,同时调用显示Activity界面的方法。
附源码:
<1>.主Activity代码
package com.example.mywanjuheng;
import com.example.mywanjuheng.R;
import android.app.Activity;
import android.app.ActivityGroup;
import android.app.LoaderManager;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
public class MainActivity extends ActivityGroup implements OnTouchListener {
private LinearLayout LinearLayout1,LinearLayout2,LinearLayout3,LinearLayout4,LinearLayout5;
private LinearLayout container;
private int tabPosition = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
findView();
setListener();
}
private void findView(){
LinearLayout1 = (LinearLayout) findViewById(R.id.main_layout_vidicon);
LinearLayout2 = (LinearLayout) findViewById(R.id.main_layout_alarm);
LinearLayout3 = (LinearLayout) findViewById(R.id.main_layout_pic);
LinearLayout4 = (LinearLayout) findViewById(R.id.main_layout_vid);
LinearLayout5 = (LinearLayout) findViewById(R.id.main_layout_about);
container = (LinearLayout) findViewById(R.id.container);
}
private void setListener(){
LinearLayout1.setOnTouchListener(this);
LinearLayout2.setOnTouchListener(this);
LinearLayout3.setOnTouchListener(this);
LinearLayout4.setOnTouchListener(this);
LinearLayout5.setOnTouchListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全