码迷,mamicode.com
首页 > 其他好文 > 详细

四大组件--Activity(一)

时间:2016-01-04 11:41:48      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

1.Activity简介(★★)
Activity是Android 四大组件之一,它用于展示界面。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过 setContentView(View)来显示指定控件。在一个android 应用中,一个 Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。


2.Activity之间的跳转(★★★★)
Activity之间的跳转分为2种:
(1)显式跳转:在可以引用到那个类, 并且可以引用到那个类的字节码时可以使用。一般用于自己程序的内部。显式跳转不可以跳转到其他程序的页面中。
(2)隐式跳转:可以在当前程序跳转到另一个程序的页面。隐式跳转不需要引用到那个类,但是必须得知道那个界面的动作(action)和信息(category)。
Activity之间通过Intent进行通信。Intent即意图,用于描述一个页面的信息,同时也是一个数据的载体。
案例-显式跳转:显式跳转必须知道并且能够使用要跳转的Activity的字节码,所以显式跳转一般只能用于自己程序的内部的跳转,而不能跳转到其他程序的Activity。
Tips:为了方便演示,我们创建一个新的 Android 工程《Activity 跳转》。然后创建两个Activity 类,分别为FirstActivity,和SecondActivity,并在Android 工程清单文件
中声明这两个Activity类。工程清单中添加Activity配置如下。

技术分享
<activity 
  android:name="com.itheima.activitySkip.FirstActivity"                
  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.itheima.activitySkip.SecondActivity"/>  
添加activity到清单文件中

修改 FirstActivity 布局文件(activity_first.xml),并将该布局文件复制并修改名字为

activity_second.xml作为SecondActivity的布局文件。

技术分享
 1 <LinearLayout
 2     xmlns:android=http://schemas.android.com/apk/res/android
 3     xmlns:tools=http://schemas.android.com/tools
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     tools:context=".FirstActivity" >
 8     <TextView
 9         android:layout_gravity="center_horizontal"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:textColor="#ff0000"
13         android:text=" 我是第一个 Activity" />
14     <Button
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text=" 跳转到第二个 Activity"
18         android:onClick="skip2Second" />
19 </LinearLayout>
activity_second.xml

 

2.1 显式跳转
编写FirstActivity类:

技术分享
package com.itheima.activitySkip;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class FirstActivity extends Activity {
    @Override protected void onCreate(Bundle     savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
    }
    public void skip2Second(View view){
        //创建一个 Intent 对象,并传递当前对象(Context 对象)和要跳转的 Activity 类字节码
        Intent intent = new Intent(this, SecondActivity.class);
        //启动第二个 Activity 
        startActivity(intent);
    }
}
FirstActivity

运行上面的工程,点击按钮,发现成功跳转到了第二个 Activity页面。


2.2 隐式跳转
隐式跳转可以跳转到其他程序的 Activity,只要知道Activity的动作(action)以及信息(category)。因此,能够被隐式跳转的Activity,在清单文件中声明时必须指定动作和信息这两个属性。
(1)修改工程清单文件中SecondActivity的配置信息。

技术分享
<activity android:name="com.itheima.activitySkip.SecondActivity">
    <!-- 配置意图过滤器 –>
    <intent-filter >
    <!-- 在意图过滤器中设置 action 和 category,当有匹配的 action 和 category 的时候启动该 Activity。这里使用 Android 提供的默认 category 即可 –>
        <action android:name="com.itheima.activitySkip.SecondActivity"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>
在清单文件中配置隐式意图

 

(2)修改在2.1章节中FirstActivity类

技术分享
//创建一个 Intent 对象
Intent intent = new Intent();
//设置 Action intent.setAction("com.itheima.activitySkip.SecondActivity");
//对于 android.intent.category.DEFAULT 类型的信息为 Android 系统 默认的信息,省略也可以
intent.addCategory("android.intent.category.DEFAULT");
//启动 Activity startActivity(intent);
隐式意图的跳转意图

执行上面的代码,发现实现了Activity的跳转。

Tips:若清单文件中的Activity声明为:

技术分享
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将Activity作为程序入口的意图过滤器

则此Activity将作为程序的入口,有几个作为入口的Activity,apk文件安装的时候就会生成几个图标。


3.案例-Activity隐式跳转(★★★)
Android 系统中本身存在很多的应用程序,打开系统源码,查看 packages 文件夹下
的apps文件夹,里面存放着Android系统的这些应用程序。
若想跳转到这些应用程序中,只需打开对应应用程序的清单文件,找到其动作和信息,
采用隐式跳转即可实现。


3.1 打开浏览器界面
自己将Android 应用的源码安装在:D:\AndroidSource_GB\AndroidSource_GB 中,
打开 D:\AndroidSource_GB\AndroidSource_GB\packages\apps\Browser 目录,然后
打开AndroidManifest.xml清单文件,找到用于启动浏览器的intent-filter。
Tips:intent-filter有多个,我们选择一个适合我们即可。

技术分享
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="http" />
    <data android:scheme="https" />
    <data android:scheme="about" />
    <data android:scheme="javascript" />
</intent-filter>
启动浏览器需要添加的意图过滤器

 

注意:为了方便演示我们直接修改本文档2.1 章节中创建的工程,在FirstActivity的
布局文件中添加一个按钮,点击该按钮打开一个浏览器。这里给出 FirstActivity 类核心方
法的代码清单:

技术分享
//跳转到浏览器界面
public void skip2Browser(View view){
    //创建一个 Intent 对象
    Intent intent = new Intent();
    //设置 Action
    intent.setAction("android.intent.action.VIEW");
    //设置 category
    intent.addCategory("android.intent.category.BROWSABLE");
    //设置参数
    intent.setData(Uri.parse("http://www.itheima.com"));
    //启动 Activity
    startActivity(intent);
}
跳转到浏览器界面

运行上面代码,发现成功跳转到了浏览器界面,并打开了指定的网页。


3.2 打开短信发送界面
打开Android应用源码,找到
D:\AndroidSource_GB\AndroidSource_GB\packages\apps\Mms目录,打开
AndroidManifest.xml清单文件,找到intent-filter。

技术分享
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <action android:name="android.intent.action.SENDTO" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="sms" />
    <data android:scheme="smsto" />
</intent-filter>
系统上层源码中发送短信的意图过滤器

 

在本文档2.1 章节中给FirstActivity布局文件添加一个按钮,并添加按钮事件。在该方法中实现核心业务逻辑。

技术分享
//跳转到发送短信界面
public void skip2Mms(View view){
    //创建一个 Intent 对象
    Intent intent = new Intent();
    //设置 Action
    intent.setAction("android.intent.action.VIEW");
    //设置 category
    intent.addCategory("android.intent.category.BROWSABLE");
    //设置参数
    intent.setData(Uri.parse("sms:10086"));
    //设置短信内容
    intent.putExtra("sms_body", "301");
    //启动 Activity
    startActivity(intent);
}
跳转到系统的发送短信界面

 

四大组件--Activity(一)

标签:

原文地址:http://www.cnblogs.com/zss2014/p/5087162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!