美文网首页
Intent种类

Intent种类

作者: MA木易YA | 来源:发表于2019-06-22 22:41 被阅读0次

过滤器

    在介绍Intent种类之前我们先了解一下过滤器,如同名字一样,这个组件就是用于筛选对象,在Activity启动另一个Activity时,可以在中间执行一遍过滤操作,通过筛选的才会被打开,通常在Manifest.xml中进行定义,包括之前接触到的将Activity设置为启动项(入口Activity)也是通过过滤器实现,我们可以在其中对Activity的Action、Category、Data进行设置,一般是Action分别与其他两项结合使用。
启动项过滤器

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

显式Intent:

通过组件名指定启动的目标组件,比如startActivity(new Intent(A.this,B.class)); 每次启动的组件只有一个

image.png

Intent intent = new Intent(Context packageContext, Class<?> cls)

例:
Intent intent = new Intent(MainActivity.this, DetailActivity.class)

隐式Intent:

不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时, 会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时, 会弹出一个让我们选择启动哪个的对话框~

image.png image.png

这里我们结合过滤器做一个隐式Intent的例子,我们通过Activity打开另一个Activity,但是我们并不直接添加Activity,而是通过过滤器进行打开方式的设置。

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="150dp"
        android:layout_centerHorizontal="true"
        android:scaleType="fitXY"
        android:src="@drawable/hehua"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/image"
        android:layout_centerHorizontal="true"
        android:text="查看大图"/>

</RelativeLayout>

activity_contacts.xml(显示图片)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ImageView
    android:id="@+id/image1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/hehua"
    android:scaleType="fitXY"/>
</RelativeLayout>

MainActivity

package com.example.asus.layout;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        Button button= (Button) findViewById(R.id.btn); //获取按钮组件
        //为按钮创建单击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(); //创建Intent对象
                intent.setAction(intent.ACTION_VIEW); //为Intent设置动作
                startActivity(intent); //启动Activity
            }
        });
    }

}

ContactsActivity

package com.example.asus.layout;

import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;

public class ContactsActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contacts);
        //设置全屏显示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}

去Manifest.xml中设置过滤器

<activity android:name=".ContactsActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
image.png image.png

区别

image.png

相关文章

网友评论

      本文标题:Intent种类

      本文链接:https://www.haomeiwen.com/subject/ojactctx.html