(10 Android)实验项目_Android UI与Activity组件(上)
一、实验目的
(1) 掌握常用的布局方法。
(2) 掌握Activity组件的生命周期。
二、实验内容及步骤
在Android Studio中,新建名为Example3的项目,然后在此项目中完成如下几个模块的设计:
1.掌握各种布局的特点、Android常用控件的使用
(1) 在项目里,新建名为example3_1的模块。
(2) 在默认的约束布局里,添加垂直线性布局并内嵌水平线性布局,然后依次添加文本框、下拉列表、单选按钮组和复选框等控件。
(3) 部署模块并做运行测试。
(4) 在文件夹res/layout 里新建一个布局文件,指定根标签为FrameLayout (帧布局)。在Design模式下,向该布局依次添加两个控件,查验后添加的控件对象会在前一控件对象上进行覆盖而形成遮挡。
2. 掌握Activity组件的生命周期
(1) 在项目里,新建名为example3_2的模块,在MainActivity程序的onCreate()方法里,使用Log.i()语句,打印一条Log信息。
(2) 在onCreate()方法体外的空白处,按【Ctrl+O】组合键,选择onRestart(),在该方法里也使用Log.i()语句打印一条Log信息,其Tag名与onCreate()方法里Log.i()语句指定的名称相同。依次重写组件的其他生命周期方法onStart()、onResume()、onPause()、onStop()和onDestory()。
(3) 部署本模块并运行,打开Logcat控制台,按照程序里使用的Tag名过滤,观察所执行的生命周期方法。
(4) 按返回键,观察所执行的生命周期方法。
(5) 再次运行,将手机切换成横屏,观察所执行的生命周期方法。查验在执行onDestory()后,再重新执行onCreate()等生命周期方法。
package com.example.example3_2;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*第一次安装运行或从任务栈激活,都将调用此方法*/
setContentView(R.layout.activity_main);
Log.i("mytest", "主Activity被创建了!—onCreate()");
}
@Override
protected void onStart() {
super.onStart();
/*Activity从不可见变为可见时调用;Activity第一次被创建时也调用*/
Log.i("wutest", "主Activity(从不可见变为)完全可见了!—onStart()");
}
@Override
protected void onResume() {
super.onResume();
/*Resume系重新开始之意*/
Log.i("wutest", "主Activity(重新)开始了!—onResume()");
}
@Override
protected void onPause() {
super.onPause();
/*当来电时,除了会调用方法onPause()外,还会调用方法onStop()*/
Log.i("wutest", "主Activity暂停了!—onPause()");
}
@Override
protected void onStop() {
super.onStop();
/*进入其它Activity时调用(导致当前Activity进入Activity栈而不可见);主Activity按返回键也调用*/
Log.i("wutest", "主Activity不可见了!—onStop()");
}
@Override
protected void onRestart() {
super.onRestart();
/*Activity由停止状态变为运行状态时调用。例如,从任务栈重新运行程序时*/
Log.i("wutest", "Activity restarted!—onRestart()");
}
@Override
protected void onDestroy() {
super.onDestroy();
//主Activity按返回键会执行此回调方法
Log.i("wutest", "主Activity被销毁了!—onDestroy()");
}
@Override
public void finish() { //不是生命周期方法,在按返回键会执行此回调方法,重写父类方法
super.finish(); //销毁Activity(super.必须),屏蔽此行代码,将不会销毁Activity
/*
页面跳转时finish()方法应用的业务场景:
场景1:在很多APP中,首次进入APP时需要登录才能进入到APP首页,但成功登录跳转到APP的首页后,再按返回键,
应该直接返回到手机主界面而不是登录界面。
场景2:在订单列表中,A activity 中点击新建订单进入新建订单 B activity 中,点击保存后,
跳转到订单详情 C activity 中(在 B activity 的跳转到 C activity 时加入finish()方法),
在 C activity 中点击返回键就可以直接返回到 A activity 中。
结论:跳转后在按返回键时,不需要返回到原Activity 就可以使用finish()方法*/
Log.i("wutest", "主Activity—finish()");
}
}
原文地址:https://www.cnblogs.com/chenhanhao/p/12536508.html