Android学习之路——Android四大组件之activity(一)

一、什么是Activity?

Activity简单的说就是一个界面,我们在Android手机上看到的每一个界面就是一个activity。

二、Activity的创建

1.定义一个类继承activity,然后在清单文件manifest.xml文件的application节点下注册activity,这个activity就创建成功了。

public class MyActivity extends Activity {

}

2.清单文件注册activity

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.study.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.yang.study.MyActivity" >
        </activity>
    </application>

其中MainActivity就是程序启动的activity,这点可以从intent-filter的action可以看出

我们自己定义的activity就是下面的MyActivity

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

特别说明的一点:每一个应用程序其实可以在launcher也就是android手机的启动器中创建多个图标,只需要在activity中配置上面这个intent-filter即可,当然一般没人这么干,多个应用图标容易引起用户的困扰。

三、Activity的启动

既然应用程序只有一个启动的入口,那么其他activity如何启动呢?

activity的启动也有两种方式,第一种是显示启动,第二种是隐式启动

a.activity的显示启动

显示启动就是在创建意图(intent)的时候指定要启动的类

1.创建意图

2.startActivity(intent)

可以用setclass方法指定类

Intent intent = new Intent();
intent.setClass(MainActivity.this, MyActivity.class);
startActivity(intent);

或setclassname 指定类名

Intent intent = new Intent();
intent.setClassName(MainActivity.this, "com.yang.study.MyActivity");
startActivity(intent);

也可以直接构造intent的时候指定类

Intent intent = new Intent(MainActivity.this, MyActivity.class);
startActivity(intent);

这三种形式都可以显示启动activity

tips:如果想在一个应用程序中启动其他应用程序的activity,可以做得到吗?

答案是可以的,只要被启动的activity在清单文件的配置中的export属性设置为true,那么在其他应用程序中就可以启动它,方法如下:

Intent intent = new Intent();
intent.setClassName("com.yang.demo", "com.yang.demo.MainActivity");
startActivity(intent);

setClassName方法第一个参数是要启动的应用程序的包名,第二个参数是要启动的类名

b.activity的隐式启动

隐式意图就是在启动的时候不指定要启动的类,而是通过动作action和数据data的匹配来启动activity

eg.隐式启动打电话界面

Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel://18888009988"));
startActivity(intent);

隐式启动浏览器:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
<span style="font-family: Arial, Helvetica, sans-serif;">startActivity(intent);</span>

上面的两个例子都是启动系统自带的一些界面,关于系统默认界面,还有很多,可以去参考网上的资料,由于篇幅所限,这里就不一一列举了。

如果我们的activity是一个浏览器工具,当我们使用上面的隐式启动浏览器的时候,我们也希望自己的activity被启动,该如何处理呢?

这个时候,我们只需在avtivity清单文件中设置intent-filter意图过滤器,当我们使用上面的隐式启动浏览器的方法,我们自己定义的activity也将同时被启动。

例子如下:

<activity
            android:name="com.yang.study.MyActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <data android:scheme="http" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

在清单文件中设置intent-filter  scheme参数限定为http 这样就可以拦截所有动作为android.intent.action.VIEW data为http开头的意图了。

当我们通过隐式意图启动activity的时候,我们自己的activity也会被启动

	Intent intent = new Intent();
	intent.setAction(Intent.ACTION_VIEW);
	intent.setData(Uri.parse("http://www.baidu.com"));
	startActivity(intent);

四、activity的显示

activity是一个个用户看到的界面,那么我们怎么定义要看到的内容的,很简单,在activity的oncreat()方法,在里面就可以设置我们要显示的内容

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

setContentView()方法设置用户要显示的界面,其中放入要显示的ayout布局文件即可

五、activity的关闭

acitivty关闭直接调用activity的finish()方法即可

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

这篇文章简单的介绍了下activity的启动与关闭,重点内容就是显示和隐式两种启动方式了,实际使用中出现的频率也很高,很有必要掌握。

Android学习之路——Android四大组件之activity(一)

时间: 2024-10-05 04:58:41

Android学习之路——Android四大组件之activity(一)的相关文章

Android学习之路——Android四大组件之activity(二)

上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据类型的数据.还有一种数据类型是parcelable和serialable 用bundle 传递数据有两种情况,这篇文章就分别从两个方面说明一下. 一.利用bundle传递基本数据类型 1.启动时传递数据,使用intent的put方法,将数据写入bundle中,然后startActivity(inte

Android 学习之路--android基础(三)

Android 学习之路--android基础(三) | Talent?C 盒子 盒子 博客 友链 关于 Posts List 作者Talent?C转载请注明出处 前言 上一篇文章我们介绍了 活动(Activity) 的作用及相关用法,我们知道活动是用来给用户展示 UI界面 的,那么在Android中都有哪些UI控件呢?今天就让我们来简单学习几种常见的 UI控件. 如何编写UI界面? Android Studio中为我们提供两种UI界面的编辑方式, 第一种是通过Android Studio 提供

Android学习之路——Android四大组件之activity(二)数据的传递

上一篇讲了activity的创建和启动,这一篇,我们来讲讲activity的数据传递 activity之间的数据传递,这里主要介绍的是activity之间简单数据的传递,直接用bundle传递基本数据类型的数据.另一种数据类型是parcelable和serialable 用bundle 传递数据有两种情况,这篇文章就分别从两个方面说明一下. 一.利用bundle传递基本数据类型 1.启动时传递数据,使用intent的put方法,将数据写入bundle中,然后startActivity(inten

android 学习教程六之----四大组件之一——BroadcastReciever

博客好长时间没有更新了,做个基础总结,继续之前的,温故而知新!该系列为入门篇,大神可以绕道! 大家好,今天给大家详解一下Android中的BroadcastReceiver.在Android中,在Android中,Broadcast是一种广 泛运用的在应用程序之间传输信息的机制是一种广泛运用的在应用程序之间传输信息的机制,本质上是一种全局的监 听器,用于监听系统全局的广播消息. BroadcastReceiver 有两种注册方式:一:静态注册方式 :二:动态注册方式 一:静态注册方式就是在Anr

Android 学习之路 1:如何在Activity之间传递数据

传递数据 新建 Activity 在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity. 此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用. 用Intent 发送数据 在主布局文件中新建一个 Button 控件,并在主类中定义它,然后为它设置 Click 的监听事件. Button button; @Override protected void onCreate(B

Android学习之路(转载)

原文地址:http://stormzhang.github.io/android/2014/07/07/learn-android-from-rookie/ 硬件 电脑–推荐Mac 首先声明我不是果粉,个人Windows,Linux,Mac OX系统均用过, 只能说Windows上面的开发工具简直难以恭维,尤其命令行超级难用,而Linux自己必须得花不少时间在折腾中,更是不适合新手了,Max OS是我认为迄今为止最好用的系统,没有之一, 所以如果你不差钱的话,强烈建议入手一台Mac,推荐Pro系

Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

            如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:[email protected]       [Android四大组件学习系列Activity篇]        1.Android四大组件之——Activity(一)定义.状态和后退栈(图文详解) 2.Android四大组件之——Activity的生命周期(图文详解) 3.Android四大组件之——Activity的开启StartActivit

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似.当然,这种相似性主要体现在设计思想上.在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程.文件数据等本地资源. 一.Activity 的生命周期 Activity 的生命周期是被以下的函数控制的. 1 public class Activity

Android学习之路——简易版微信为例(二)

1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以