Activity 简介、创建、生命周期

一:Activity 简介
1).Activity是Android应用程序的 四大组件之一,它负责管理Android应用程序的 用户界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个用户界面的展现。
2). Activity是通过调用setContentView()方法来显示指定组件的。该方法既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管理的,下面列举几个Activity的常用事件。
• onKeyDown(int keyCode,KeyEvent event) :对应按键按下事件
• onKeyUp(int keyCode,KeyEvent event) :对应按键松开事件

• onTouchEvent(MotionEvent event) :对应点击屏幕事件   

在MainActivity.java 中代码如下

package com.example.yuekang.demo2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    @Override
    public boolean onTouchEvent(MotionEvent event) {//对应点击屏幕事件
        float x=event.getX();
        float y=event.getY();//获取x,与Y坐标
        Toast.makeText(this,"点击的坐标为:"+x+","+y,Toast.LENGTH_SHORT).show();
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {//对应按键松开事件
        Toast.makeText(this,"按键被松开",Toast.LENGTH_SHORT).show();
        return super.onKeyUp(keyCode, event);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {//对应按键按下事件
        Toast.makeText(this,"按键被按下",Toast.LENGTH_SHORT).show();
        return super.onKeyDown(keyCode, event);
    }
}

如下图:显示坐标,显示松开,显示按下


二:Activity 的创建

在Android应用中,可以创建一个或多个Activity,创建步骤如下所示:
1).定义一个类继承自android.app.Activity或者其 子类;
2).在res/layout目录中创建一个xml文件,用于创建Activity 的布局;
3).在AndroidManifest.xml文件中 注册Activity;
4). 重写Activity的onCreate()方法,并在该方法中使用setContentView()
加载指定的布局文件;
三:Activity 的生命周期
生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态。
• 运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。
• 暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。

• 停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。


分别在layout中建立两个activity01.xml,activity02.xml文件;两个activity01.java,activity02.java文件,在Manifest.xml中注册,五个文件中代码分别为

activity01.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="click"
        android:text="打开Activity02" />
</RelativeLayout>

activity02.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:text="我是Activity02" />
</RelativeLayout>

activity01.java代码:

package com.example.yuekang.demo2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class Activity01 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity01);
        Log.i("Activity01", "onCreate: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("Activity01", "onStart: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("Activity01", "onRestart: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("Activity01", "onResume: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("Activity01", "onPause: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("Activity01", "onStop: ");//在界面输出一些信息,方便观察
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("Activity01", "onDestroy: ");//在界面输出一些信息,方便观察
    }
    public void click(View view){
        Intent intent=new Intent(this,Activity02.class);
        startActivity(intent);
    }
}

activity02.java代码(类似于01代码):

package com.example.yuekang.demo2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class Activity02 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity02);
        Log.i("Activity02", "onCreate: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("Activity02", "onStart: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("Activity02", "onRestart: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("Activity02", "onResume: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("Activity02", "onPause: ");//在界面输出一些信息,方便观察
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("Activity02", "onStop: ");//在界面输出一些信息,方便观察
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("Activity02", "onDestroy: ");//在界面输出一些信息,方便观察
    }

}

Manifest.xml注册两个activity代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yuekang.demo2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Activity01">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.yuekang.demo2.Activity02"
            android:label="@string/app_name">

        </activity>
    </application>

</manifest>

此时运行结果如图所示:


再次返回到Activity01界面


猜你喜欢

转载自blog.csdn.net/huanhuan59/article/details/80093306