安卓四大组件之一-----活动

来源:互联网 发布:知止而有得 编辑:程序博客网 时间:2024/06/12 18:12

活动(Activity)

1)活动创建(onCreate方法)
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);//加载xml布局文件
           }

2)Toast使用方法

Toast:是安卓里面的一个提醒方式

用法:Toast.makeText(this, "Toast用法", Toast.LENGTH_SHORT).show();

3)Menu菜单的使用

我们经常使用一些APP,发现点击屏幕右上角将会出现一栏菜单栏。如下图所示


,今天我们就来学习一下如何使用Menu菜单。

 

首先在res目录下新建一个menu文件夹,右击menu文件夹,新建Menu resource file文件,完成创建。

添加以下代码

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <!--创建两个菜单项-->

    <item

    android:id="@+id/create_item"

    android:title="创建群聊"/>

    <item

        android:id="@+id/add_item"

        android:title="加好友/群"/>

    <item

        android:id="@+id/find_item"

        android:title="扫一扫"/>

    <item

        android:id="@+id/translate_item"

        android:title="面对面快传"/>

    <item

        android:id="@+id/pay_item"

        android:title="付款"/>

    <item

        android:id="@+id/camara_item"

        android:title="拍摄"/>

</menu>

然后在MainActivity.java文件里面添加以下代码

 /*

         创建菜单

         通过getMenuInflater()得到MenuInflater对象,再调用inflate方法 获取到menu.xml文件

         创建菜单

     */

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main,menu);//获取到menu.xml文件

        return true;//true 表示允许菜单显示出来 false则不允许菜单显示出来

    }

    /*

    重写onOptionsItemSelected()方法

    通过item.getItemId()来判断点击的是哪个菜单项

     */

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch(item.getItemId())

        {

            case R.id.create_item:

                Toast.makeText(MainActivity.this, "创建群聊成功!", Toast.LENGTH_SHORT).show();

                break;

            case R.id.add_item:

                Toast.makeText(MainActivity.this, "加好友/群", Toast.LENGTH_SHORT).show();

                break;

            case R.id.find_item:

                Toast.makeText(MainActivity.this, "你点了MENU的ADD键", Toast.LENGTH_SHORT).show();

                break;

            case R.id.translate_item:

                Toast.makeText(MainActivity.this, "你点了MENU的Remove键", Toast.LENGTH_SHORT).show();

                break;

            case R.id.pay_item:

                Toast.makeText(MainActivity.this, "你点了MENU的ADD键", Toast.LENGTH_SHORT).show();

                break;

            case R.id.camara_item:

                Toast.makeText(MainActivity.this, "你点了MENU的Remove键", Toast.LENGTH_SHORT).show();

                break;

            default:

        }

        return true;

    }

4)显示Intent使用(以安卓的启动界面为例)

Intent方法,可以创建一个活动并且自主跳转到另一个活动。而点开APP看到的启动界

 Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
            }
        });
首先新建一个Start_Activity工程。

新建一个StartActivity活动(在MainActivity同一目录的文件夹上,右键新建Empty Activity),android stdio会自动生成一个          activity_start.xml文件

activity_start.xml文件上做启动界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/red"
    android:weightSum="1">
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="167dp"
        android:text="这是一个启动界面,当然也可以使用ImageView加载图片"
        android:textSize="30sp"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="21dp" />
</RelativeLayout>

StartActivity.java文件使用onCreate方法,使用Handler方法(具体方法看消息处理机制一讲)延迟3秒,使用Intent方法进入主界面

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);
    /*
        延迟三秒跳转  MainActivity.class上
     */
    new Handler().postDelayed(new Runnable() {
        public void run() {
            /* Create an Intent that will start the Main WordPress Activity. */
            Intent mainIntent = new Intent(StartActivity.this, MainActivity.class);//使用Intent方法,跳转到MainActivity界面
            StartActivity.this.startActivity(mainIntent);//启动跳转
            StartActivity.this.finish();//销毁启动界面
        }
    }, 3000);
}

5)隐式Intent

隐式Inten不会明确指定我们要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个intent,并帮我们找出合适的活动去启动。

合适的活动:在AndroidManifest.xml文件中添加以下代码

<activity
    android:name=".SecondActivity"
    android:launchMode="singleInstance">
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

action的标签中,我们指明了当前活动可以响应com.example.activitytest.ACTION_START这个action,而<category>则包含了附加的信息,更能精确的指明当前的活动能够响应Intent中还可能带有的categoriy.注意:只有当<action>和<categoriy>中的内容同时能够匹配上指定的action和category时活动才能响应!

修改MainActivity中的跳转界面方法

  /*
        延迟三秒跳转  MainActivity.class上
     */
    new Handler().postDelayed(new Runnable() {
        public void run() {
            /* Create an Intent that will start the Main WordPress Activity. */
             Intent mainIntent = new Intent(“com.example.activitytest.ACTION_START”);//使用Intent方法,跳转到MainActivity界
             startActivity(mainIntent);

             StartActivity.this.finish();//销毁启动界面
        }
    }, 3000);
6)活动中传递数据方法

Context 一个类 data1、data2为要传入到Context类的数据

 public static void actionStart(Context context, String data1, String data2) {

        Intent intent = new Intent(context, NewsContentActivity.class);

        intent.putExtra("data1", data1);

        intent.putExtra("data2",data2);

        context.startActivity(intent);

    }

在进入的下一个界面

通过使用getIntent()方法获取到用于启动的SecondActivity的Intent,然后调用getStringExtra()方法,传入相应的键值即可以互相传递数据。

MainActivity.actionStart(FirstActivity.this,”data1”,”data2”);//向FirstActivity传递数据

FirstActivity里面取出数据

Intent intent = getIntent();

String data1 = intent.getStringExtra(“data1”," ");获取到上一界面传递过来的参数 最后一个“ ”是当没有找到这个数据时给它的默认的值

String data2 = intent.getStringExtra(“data2”," ");获取到上一界面传递过来的参数


1 0
原创粉丝点击