结构图

mainfests文件夹下面有一个AndroidMainfest.xml文件,类似web开发中的web.xml文件负责整个项目的配置,每当我们新建一个activity,都要在这个文件中进行配置。

java文件夹类似src。下面存放源代码。

res文件夹放资源文件 layout是布局文件文件夹,mipmap存放图标,values存放键值。

新建Layout resource file

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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="Hello blue" /> <Button
android:id="@+id/btn_start_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动第二个界面"/>
</LinearLayout>

activity_my.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello second"/> <Button
android:id="@+id/btn_finish_self"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
</LinearLayout>

activity_second.xml

新建class

package com.ouc.wkp.activitylesson1;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; /**
* Created by wkp on 2016/8/19.
*/
public class MyActivity extends Activity { Button btnStart; //创建activity时调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("MyActivity","MyActivity_oncreate");
setContentView(R.layout.activity_my); btnStart = (Button) findViewById(R.id.btn_start_second);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//在这里启动第二个activity //显示启动的第一种写法
// Intent intent=new Intent();
// intent.setClass(MyActivity.this,SecondActivity.class);
// startActivity(intent); //显示启动的第二种写法
// Intent intent1=new Intent();
// intent1.setClassName(MyActivity.this,"com.ouc.wkp.activitylesson1.SecondActivity");
// startActivity(intent1); //显示启动的第三种写法
// Intent intent2=new Intent();
// ComponentName componentName=new ComponentName(MyActivity.this,SecondActivity.class);
// intent2.setComponent(componentName);
// startActivity(intent2); //隐试启动 第一种写法
// Intent intent3=new Intent("abcd.SecondActivity");
// startActivity(intent3); //隐试启动 第二种写法
Intent intent4=new Intent();
intent4.setAction("abcd.SecondActivity");
startActivity(intent4);
}
});
} //当activity界面变为用户可见时调用
@Override
protected void onStart() {
super.onStart();
Log.e("MyActivity","MyActivity_onstart");
} //当activity界面获取到焦点时调用(界面按钮可点击,文本框可输入)
@Override
protected void onResume() {
super.onResume();
Log.e("MyActivity","MyActivity_onresume");
} //当activity失去焦点(按钮不可点,文本框不能输入)
@Override
protected void onPause() {
super.onPause();
Log.e("MyActivity","MyActivity_onpause");
} //当activity变为不可见时调用
@Override
protected void onStop() {
super.onStop();
Log.e("MyActivity","MyActivity_onstop");
} //当activity被销毁时调用
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("MyActivity","MyActivity_ondestroy");
}
}

MyActivity.java

配置一下AndroidMainfest.xml文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ouc.wkp.activitylesson1"> <!--icon应用程序图标 label应用程序名称 theme主题-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"> <activity
android:name=".MyActivity"
android:label="ppp"
android:theme="@style/AlertDialog.AppCompat">
<intent-filter>
<!--主activity-->
<action android:name="android.intent.action.MAIN" />
<!--启动策略-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- 四种启动模式standard singleTop singleTask-->
<activity
android:name=".SecondActivity"
android:label="第二个activity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="abcd.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity> <activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="abcd.ThirdActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application> </manifest>

AndroidMainfest.xml

我们通过设置MAIN和LAUNCHER吧MyActivity定义为主显示窗口
<intent-filter>
<!--主activity-->
<action android:name="android.intent.action.MAIN" />
<!--启动策略-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

我们重写onCreate()方法,

btnStart = (Button) findViewById(R.id.btn_start_second);

获取资源文件中定义的Button,为这个按钮添加点击事件,

btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
  //这里添加点击事件
}
});

我们看到MyActivity.java中有五种启动方式。运行程序点击按钮后会跳转到SecondActivity.

如果有两个activity的action name相同,比如都是

<intent-filter>
<action android:name="abcd.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
那么点击按钮后会提供两个选择给用户 我们可以给SecondActivity添加点击事件
SecondActivity.this.finish();来返回MyActivity.

Activity的生命周期有6个函数

onCreate 创建activity时调用

onStart   当activity界面变为用户可见时调用

onResume当activity界面获取到焦点时调用(界面按钮可点击,文本框可输入)

onPause  当activity失去焦点(按钮不可点,文本框不能输入)

onStop   当activity变为不可见时调用

onDestroy当activity销毁时调用

运行程序后执行顺序为

myactivity->oncreate onstart onresume

点击跳转按钮  myactivity->onpause   secondactivity->oncreate onstart onresume   myactivity->onstop

点击关闭按钮  secondActivity->onpause   myactivity->onstart onresume

secondactivity->stop destroy

上面的代码不断调试 可能有些地方和描述不符合

activity可以设置launchMode 有四种stardard singleTop singleTask singleInstance

singletop时,安卓系统会判断当前栈顶显示的activity是不是要打开的Activity,如果不是,那么系统会创建一个新的Activity,如果是就不会

singleTask时,和singletop的区别是系统判断的是栈中而不是栈顶

singleInstance时,新的taskId。

按下手机返回键时,原activity从task栈顶弹出。

android入门——Activity(1)的更多相关文章

  1. android入门——Activity(2)

    主要内容:一.IntentFlag  二.简单复杂数据传递  三.数据回传  四.打开系统界面  五.IntentFilter匹配 一.IntentFlag 复制一段内容    来源 http://i ...

  2. android入门,activity跳转,并传递message

    首先是布局文件,如下: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <L ...

  3. android 入门-Activity及 字体

    private Button sButton; private TextView mTextView; private Button fButton; ,,,,}; @Override protect ...

  4. android入门 — Activity启动模式

    1.standard模式 standard模式是系统的默认启动方式,每次激活Activity都会创建Activity,并放在任务栈中. 系统不会在乎活动是否已经存在于返回栈中,每次启动都会创建该活动的 ...

  5. android入门 — Activity生命周期

    Activity总共有7个回调方法,代表着不同的生命周期的环节. 1.onCreate() 在活动第一次被创建的时候调用.在这个方法中需要完成活动的初始化操作,比如说加载布局.绑定事件等. 2.onS ...

  6. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  7. android 入门-Service实时向Activity通过BroadcastReceiver传递数据

    引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...

  8. 【Android学习入门】Android中activity的启动模式

    启动模式简单地说就是Activity启动时的策略,在Androidmanifest.xml文件中的标签android:launchMode属性设置,在Android中Activity共有四种启动模式分 ...

  9. Android入门:Activity生命周期

    一.Activity生命周期介绍 我们在学Java Web时会学到Servlet的生命周期,因此对生命周期的概念已经有一定了解,简单地说就是某个事物从出生到死亡的过程. Activity也存在声明周期 ...

随机推荐

  1. VirtualBox详细教程

    转自:http://bbs.kafan.cn/thread-358294-1-1.html 1.Sun xVM VirtualBox简介 VirtualBox官方网站:http://www.virtu ...

  2. 测试中的代码分享~将可以合并的方法去合并Func不赖

    在面向对象的设计中,我们经常会谈到“重构”,而重构之中有个叫合并方法的,就是将多个方法干的事类似,或者说,方法体的长向很像,那么,我们需要去考虑,将它们进行抽象! 原来的代码: /// <sum ...

  3. C#语言小结

    数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体 一.数据类型:(一)内建类型整型(int short long byte uint ushort ulong ...

  4. leetcode Valid Sudoku python

    #数独(すうどく,Sūdoku)是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含1-9,不重复.#数独盘 ...

  5. 调整 CComboBox 控件的下拉列表的高度

    CComboBox 控件的下拉列表的高度默认很小,很难看.网上查来查去终于发现如何设置. 很巧妙,要在设计视图上单击下拉列表的小箭头.这时会发现出来的边框和点其它的位置是不同的. 这个高度就是下拉列表 ...

  6. 工作备份 build.gradle

    apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion '22.0.0' de ...

  7. IOS版新闻客户端应用源码项目

    IOS版新闻客户端应用源码,这个是一款简单的新闻客户端源码,该应用实现没采用任何第三方类库的 ,并且这个应用的UI做得很不错的,值得我们的参考和学习,希望大家可以更加完善这款新闻类的应用吧. 源码下载 ...

  8. struts2笔记05-ServletActionContext

    1.ServletActionContext ServletActionContext, 这个类继承自ActionContext, 所以它具有ActionContext的很多功能,不过更重要的是它提供 ...

  9. Xcode Coule not launch "aaa" press launch failed:timed out waiting for app launch

    遇见这个问题 可能是 由于 runapp 的时候设置里面 设置为release了. 解决办法是:见图 build configuration 设置成 debug 状态就OK了. 要是上面的不行就试一下 ...

  10. 走进C标准库(1)——assert.h,ctype.h

    默默觉得原来的阅读笔记的名字太土了,改了个名字,叫做走进C标准库. 自己就是菜鸟一只,第一次具体看C标准库,文章参杂了对<the standard C library>的阅读和对源码的一些 ...