android入门——Activity(1)

结构图

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栈顶弹出。

时间: 2024-10-25 07:23:46

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

android入门——Activity(2)

主要内容:一.IntentFlag  二.简单复杂数据传递  三.数据回传  四.打开系统界面  五.IntentFilter匹配 一.IntentFlag 复制一段内容    来源 http://ivoter.iteye.com/blog/1596397 首先简单说下Task和Activity的关系. Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最上面.从Task中取出东西(Activ

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

首先是布局文件,如下: activity_main.xml <?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="

android 入门-Activity及 字体

private Button sButton; private TextView mTextView; private Button fButton; private int[] sArray={13,25,38,34,42}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ex0

Android入门:Activity四种启动模式

Android入门:Activity四种启动模式 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.singleTask.singleInstance: 讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity

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

引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layou

Android入门教程之我见

真正的从安卓入门学习到实际工作也差不多一年时间了,也做了几个项目.在这期间经历了一开始学习Android的基本知识后仍旧无从下手,不知道如何开始开发一个app,到现在也开始学会注意Android架构的设计优化,学会开始阅读源码,渐渐地向Android更高级的知识进阶. 首先要感谢一下Google把Android开源了,加上Android开发人员十分活跃且富有分享精神,这才让网上关于Android的资料十分丰富,往往遇到一个问题都能从网上找到答案,这对于初学者特别是靠自学没有人带的情况下提供很多的

小猪的Android入门之路 Day 8 part 4

小猪的Android入门之路 Day 8 part 4 Android网络编程浅析--Android网络数据的上传 --转载请注明出处:coder-pig 本节引言: 在part 3中我们已经学习了Android网络数据的下载,难点是多线程断点续传下载; 有下载,当然也有上传啦,本节就来研究下Android中的网络数据的上传! 1.使用GET或者Post方式上传数据给服务器 2.使用开源框架HttpClient上传数据到服务区 3.发送xml数据给服务器 4.通过Http协议上传文件 5.Web

小猪的Android入门之路 Day 4 - part 4

小猪的Android入门之路 Day 4 - part 4 Android事件处理机制之--事件处理机制拾遗 ------------转载请注明出处--coder-pig 本节引言: 在前面三个部分中,对于android的事件处理机制的学习已经学得七七八八了, 基于监听与回调的时间处理机制,以及使用Handler传递信息的机制都已经学了; 在最后这个部分中会对一些小的知识点进行补充,比如触摸事件的两种形式, Configuration类以及异步任务AsyncTask进行讲解,好了,开始本节的课程

Android的Activity屏幕切换动画(一)-左右滑动切换

这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法: public void overridePendingTransition (int enterAnim, int exitAnim) 其中: enterAnim 定义A