(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