Android|Activity类理论篇(附用户界面切换案例)

Activity继承自Context(上下文)。启动Activity、Service、发送广播、获取系统服务等,都需要Context的参与。

理论篇

Activity类的实现原理

每个Activity都有一个窗口,上面绘制了程序的用户界面。这个窗口通常会占满整个屏幕,但是也可以比屏幕小,或者悬浮在其他窗口上。一个程序一般会有多个Activity,并结合在一起。每个Activity为了执行不同的行为都能跳转到下一个Activity。
Activity是用栈进行管理的,当来到一个新的Activity后,将会入栈。一般会有四种状态:

  • 当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态
  • 当Activity失去了焦点但仍然对用户可见(如栈顶的Activity是透明的,或者栈顶Activity并不铺满整个手机屏幕),此时位于暂停状态
  • 当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,处于停止状态
  • 当Activity优于人为或系统原因(如低内存等)被销毁,此时处于销毁状态。

Activity类重写方法注意事项

一般在不同的状态,有不同的回调方法。我们仅仅对相应状态做到熟悉,并且学会重写方法。写回调方法注意以下方面:

  • Activity实例是由系统自动创建的,并在不同的状态期间回调相应的方法。一个是简单的完整的Activity生命周期会如下顺序回调:onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy().

在这里插入图片描述

  • 当执行onStart()回调方法时,Activity开始对用户可见(也就是说,执行onCreate()方法时用户是看不到此Activity的,用户看到的是此Activity之前的那个Activity),一直到执行onStop()方法之前,此阶段的Activity都是对用户可见的.
  • 当执行onResume()回调方法时,Activity可以响应用户交互,一直到onPause()方法之前。

实践–用户界面切换

测试效果

在这里插入图片描述
在这里插入图片描述
想到切换大家应该能明白的,点击第一个窗体按钮,跳转到第二个窗体。因此如何跳转就是java的事情,下面我们就具体谈谈如何实现

实现步骤

创建新的工程My fiveApplication

在这里插入图片描述
点进Project—>Empty Activity—>然后名字改下,finish即可。成功之后,点击箭头运行程序。
在这里插入图片描述
程序正常可以跑成功hello world字样,下面我们继续

设计布局文件activity_main.xml

下面有具体讲解

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这里是MainActivity"
        android:layout_marginTop="20px"
        android:layout_centerHorizontal="true"
        android:id="@+id/txt" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转到第二个类"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/txt"
        android:id="@+id/btn" />
</RelativeLayout>

RelativeLayout详解

之前都是用线性布局,线性布局用不惯,感觉盒子模型配相对布局,相对布局如果大家不清楚的话。可以参考这个博文,博主写的。
Android相对布局简单案例(附完整源码)
相对布局我设置了垂直方向,width与height其他不做设置

TextView详解

设置基本的width与height,id一定要设置不然不好安排布局。

		android:layout_marginTop="20px"
        android:layout_centerHorizontal="true"

其中这两句话是居中和外边距上面20单位像素。

ButtonView详解

基本设置之外,below就是在textView下方,这个要熟悉

扫描二维码关注公众号,回复: 11194425 查看本文章

再创建空类

在这里插入图片描述
右击app文件夹。箭头操作!一路默认下去直接finish

设计空类的布局文件

直接照抄之前的布局,把按钮那段代码删掉

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这里是MainActivity2"
        android:layout_marginTop="20px"
        android:layout_centerHorizontal="true"
        android:id="@+id/txt2" />

</RelativeLayout>

设计MainActivity.java文件

这是主窗体的java文件,大家要整明白。还有主窗体要干哪件事情?应该是点击按钮激活第二个窗体吧。那肯定有监听器的事情。所以代码如下:

package com.example.myfiveapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {
    Button btn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(this);
    }
    public void onClick(View view) {
        startActivity(new Intent(this,Main2Activity.class));
    }
}

设计第二个窗体MainActivity2.java

因为我们主要设置了是主窗体的事情,此窗体没他的事情。因此代码如下,没特殊情况不用修改:

package com.example.myfiveapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Main2Activity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }


}

下面基本上完成了

点击运行

运行起来应该没什么大问题

效果图

在这里插入图片描述
在这里插入图片描述

总结

  • 创建主窗体,跑成功hello world
  • 设计主窗体的布局,TextView类+按钮类
  • 创建此窗体空类
  • 设计此窗体的布局,仅仅TextView类一个
  • 修改主窗体java代码
  • 修改此窗体java代码
  • 点击运行,收获喜悦!

很高兴博文能帮助到大家!

原创文章 247 获赞 92 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/106104055
今日推荐