(10 Android)实验项目_Android UI与Activity组件(上)

(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