一: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界面