Activity组件
- Activity的跳转
- Activity的生命周期
- Activity的启动模式
- Activity的方向与样式
- Activity的状态的保存
- 系统Activity的跳转
01-Activity的跳转
注:从非Activity中启动其他Activity,intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
1.显式跳转 - 指定类名,适用于同一APP页面的跳转
public void skip2Second(View view) {
// 创建一个Intent 对象,并传递当前对象(Context 对象)和要跳转的Activity 类字节码
Intent intent = new Intent(this, SecondActivity.class);
// Intent 同时也是数据的载体,在跳转的时候可以携带数据
// 通过intent 的putExtra(key,value)方法可以设置数据
// Intent 支持所有基本数据类型及其数组形式
intent.putExtra("name", "张三");
// 启动第二个Activity
startActivity(intent);
}
// SecondActivity的实现,获得数据
public class SecondActivity extends Activity {
protected void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
/**
* 获取Intent 对象,该对象是启动了当前Activity 的对象
*/
Intent intent = getIntent();
if (intent != null) {
// 从Intent 中获取设置的数据,如果获取不到返回null
// 获取FirstActivity 中设置的数据
String name = intent.getStringExtra("name");
if (name != null) {
Toast.makeText(this, "name=" + name, Toast.LENGTH_LONG).show();
}
}
};
}
//Android-AndroidManifest的文件注册
<activity
android:name="com.itheima.activitySkip.FirstActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2.隐式跳转 - 指定动作,适用于不同APP之间的页面跳转
public void sendData2Second(View view) {
// 创建一个Intent 对象
Intent intent = new Intent();
// 设置Action
intent.setAction("com.itheima.activitySkip.SecondActivity");
// 对于android.intent.category.DEFAULT 类型的信息为Android 系统默认的信息,省略也可以
intent.addCategory("android.intent.category.DEFAULT");
// 这里必须调用setDataAndType 方法同时将data 和type 设置出来
intent.setDataAndType(Uri.parse("money:转账100 元。"), "data/mymime");
// 启动Activity
startActivity(intent);
}
// 跳转第二个页面获得的数据
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
if (intent != null) {
Uri data = intent.getData();
String type = intent.getType();
String scheme = data.getScheme();
}
}
}
//Android-AndroidManifest的文件注册
<activity
android:name=".MainActivity"
android:icon="@drawable/ic_launcher"
android:label="这是第一个页面" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:icon="@drawable/tomcat"
android:label="这是第二个页面" >
<intent-filter>
<action android:name="com.example.newactivity.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="data/mime"
android:scheme="money" />
</intent-filter>
</activity>
3.Activity获取跳转后返回数据startActivityForResult()
startActivityForResult(new Intent(this, SelectNumActivity.class), REQUEST_NUM);
setResult(resultCode, intent);
onActivityResult(int requestCode, int resultCode, Intent data);
4.页面的跳转动画
- 需求 : 为页面跳转增加动画
实现 : 动画需要复写overridePendingTransition(int enterAnim, int exitAnim)方法.
// 下一步进入动画