一: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) :对应按键松开事件
1).定义一个类继承自android.app.Activity或者其 子类;
2).在res/layout目录中创建一个xml文件,用于创建Activity 的布局;
3).在AndroidManifest.xml文件中 注册Activity;
4). 重写Activity的onCreate()方法,并在该方法中使用setContentView()
加载指定的布局文件;
三:Activity 的生命周期
生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态。
• 运行状态:当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界面