Android学习记录(7)—Intent中显示意图和隐式意图的用法

Intent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)
为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。
对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
通常来说:
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
显示意图非常常用也非常简单一般用于应用程序内之间Activity的相互调用转换,就不多说了,这里我介绍一下隐式意图:
简单概括就是: 意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子,说白了意图就是启动一个组件的的完整的动作信息,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏指的类型,只有这些信息全了才能执行一个完整的意图,当然还有一些信息,比如scheme就是URI类型的数据的前缀,就像这个例子当中的sms:,还有host主机名,path路径等。
这里我给大家举一个调用系统短信的例子,使用隐式意图启动系统短信,并给10086发送信息的例子。代码如下:

/**
	 * 隐式意图的方法启动系统短信
	 * 
	 * 简单概括就是: 意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子,
	 * 说白了意图就是启动一个组件的的完整的动作信息
	 * ,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏指的类型
	 * ,只有这些信息全了才能执行一个完整的意图
	 * ,当然还有一些信息,比如scheme就是URI类型的数据的前缀,就像这个例子当中的sms:,还有host主机名,path路径等
	 * 
	 * @param view
	 */
	public void startOne(View view) {
		Intent intent = new Intent();
		intent.setAction("android.intent.action.SENDTO");// 发送信息的动作
		intent.addCategory("android.intent.category.DEFAULT");// 附加信息
		intent.setData(Uri.parse("sms:10086"));// 具体的数据,发送给10086
		startActivity(intent);
	}
上边的这个例子是调用系统的东西,下边我们来看看自定义的隐式意图是怎么调用的。
首先是先在清单文件中进行注册,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.loonggg.intent"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.loonggg.intent.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="net.loonggg.intent.SecondActivity" >
            <intent-filter>

                <!-- 自定义的动作 -->
                <action android:name="net.loonggg.xxx" />
                <!-- 自定义的scheme和host -->
                <data
                    android:host="www.baidu.com"
                    android:path="/person"
                    android:scheme="loonggg" />
                <!-- 自定义的类型 -->
                <data android:mimeType="person/people" />
                <!-- 附加信息 -->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>
第二个Activity里的东西就是我们自定义设置的,就是下边的这段代码:

 <activity android:name="net.loonggg.intent.SecondActivity" >
            <intent-filter>

                <!-- 自定义的动作 -->
                <action android:name="net.loonggg.xxx" />
                <!-- 自定义的scheme和host -->
                <data
                    android:host="www.baidu.com"
                    android:path="/person"
                    android:scheme="loonggg" />
                <!-- 自定义的类型 -->
                <data android:mimeType="person/people" />
                <!-- 附加信息 -->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

那在代码中怎么调用自定义的呢?其实跟调用系统短信一样,只不过调用系统短信里的那些动作和数据,系统已经给我们配置好了,我们直接用就行,而自定义的就是我们自己写的,调用方法和系统其实是一样的。方法如下:

/**
	 * 通过自定义的隐式意图启动
	 * 
	 * @param view
	 */
	public void startTwo(View view) {
		Intent intent = new Intent();
		intent.setAction("net.loonggg.xxx");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.setDataAndType(Uri.parse("loonggg://www.baidu.com/person"),
				"person/people");
		startActivity(intent);
	}
特别注意的一点是:intent.setData(data)和intent.setType(type)注意这两个方法会互相清除,意思就是:如果先设置setData(data)后设置setType(type),那么后设置的setType(type)会把前面setData(data)设置的内容清除掉,而且会报错,反之一样,所以如果既要设置类型与数据,那么使用setDataAndType(data,type)这个方法。
转载注明出处:http://blog.csdn.net/loongggdroid/article/details/17887975
<think>好的,我现在需要帮用户了解荣耀平板的分屏操作教程。首先,用户提到他们参考了三个引用内容,其中引用[1]是关于将平板作为笔记本电脑分屏的教程,引用[2][3]是关于荣耀平板2的评测对比。用户的问题是如何在荣耀平板上进行分屏操作,而是作为外接分屏设备使用。所以需要先确定用户是想知道平板自身应用分屏,还是作为笔记本的副屏。过根据用户的问题“荣耀平板分屏操作方法”,应该是指平板本身的多任务分屏功能。 接下来,我需要回忆一下华为/荣耀平板的分屏操作步骤。通常安卓平板的分屏方法有两种:通过最近任务视图启动分屏,或者通过手势操作。例如,在支持多窗口的系统中,用户可以长按应用卡片选择分屏,或者使用三指上滑等手势。但同型号系统版本可能操作略有同,比如EMUI或Magic UI的同版本。 根据引用[1],用户提到的教程是将平板作为笔记本的分屏,这需要软件如Spacedesk或Splashtop,但用户现在的问题是关于平板自身分屏,所以需要排除这部分,专注于平板内部分屏功能。引用[2][3]提到荣耀平板2的发布信息,可能系统版本较旧,所以需要考虑当时的系统是否支持分屏,以及现在可能的更新情况。 可能需要指出分屏操作的具体步骤,例如:1. 打开第一个应用;2. 进入多任务视图;3. 选择分屏;4. 选择第二个应用。同时,需要注意是否有特定手势,如侧边栏滑动打开第二个应用。此外,有些应用可能支持分屏,需要提醒用户注意这一点。 另外,需要确认荣耀平板的系统是否基于EMUI,以及同版本的分屏操作是否有差异。例如,EMUI 10可能支持智慧分屏,而更早的版本可能通过长按多任务键。由于引用中提到的是荣耀平板2,发布时间是2016年,可能搭载的是EMUI 4.x或5.x,这时候的分屏操作可能与现在同。但考虑到用户可能现在使用的较新型号,所以可能需要覆盖通用步骤可能的版本差异。 最后,需要以清晰的结构分步骤说明,并指出可能的注意事项,比如应用兼容性,调整分屏比例等。如果有引用相关内容,需要正确标注,但根据提供的引用内容,引用[1]是关于外接分屏,引用[2][3]是产品介绍,可能没有直接的分屏操作步骤,因此可能无法直接引用,但需要确保回答准确。</think>### 荣耀平板分屏操作教程 荣耀平板的分屏功能允许用户同时使用两个应用,提升多任务处理效率。以下是详细操作步骤(以EMUI或Magic UI系统为例): #### **方法一:手势分屏** 1. **打开第一个应用** 正常启动需要使用的第一个应用(如浏览器、文档编辑器等)。 2. **激活分屏模** - 从屏幕左/右侧边缘向**内滑动并停顿**,调出侧边栏[^2]。 - 在侧边栏中选择第二个应用,拖动到屏幕空白区域即可实现分屏。 3. **调整分屏比例** 按住中间的**分界线**上下滑动,可调整两个应用的显示比例。 #### **方法二:最近任务分屏** 1. **进入多任务视图** 点击屏幕底部的**方形虚拟按键**(或上滑悬停)进入最近任务界面。 2. **选择分屏应用** - 长按需要分屏的**应用卡片**,点击弹出的「分屏」图标[^3]。 - 随后选择第二个应用,系统会自动分屏显示。 #### **注意事项** - **兼容性**:部分应用支持分屏模,需根据系统提示操作。 - **退出分屏**:拖动分界线至屏幕顶部或底部可关闭对应应用的分屏。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值