第一行代码安卓笔记之Activity01

一、新建活动以及如何设置主活动

新建Activity:

在这里插入图片描述
勾选Generate Layout File将会自动生成一个布局,勾选Launcher Activity表示会自动将该活动设置为当前主项目。

如何将活动设置为该项目的主活动:

        <activity
            android:name=".FirstActivity"  //通过name注册FirstActivity活动
            android:label="主页">		//设置标题,给主活动指定的label不仅会成为标题栏内的内容,还会成为启动器(Launcher)中应用程序显示的名称
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />		  //设置为主活动
                <category android:name="android.intent.category.LAUNCHER" /> //设置为主活动
            </intent-filter>
        </activity>

即:在< activity >标签的内部加入< intent-filter >标签,并在这个标签中加入
< action android:name=“android.intent.action.MAIN” />
< category android:name=“android.intent.category.LAUNCHER” />
这两句即可。

二、在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,这些提醒信息会在一段时间后自动消失,效果图如下:
在这里插入图片描述
首先需要定义一个弹出Toast的触发点,比如在界面上点击一个按钮,然后弹出Toast。在onCreate中添加以下代码:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.textview_layout);
        button4 = (Button) findViewById(R.id.button_4);
        button4.setOnClickListener(new View.OnClickListener() { //设置监听器setOnClickListener(new View.OnClickListener()
            @Override
            public void onClick(View v) {
                Toast.makeText(SecondActivity.this, "you clicked the button", Toast.LENGTH_SHORT).show();
            }
        });
    }

findViewById()方法是获取到在布局文件中定义的元素,这里我们传入R.id.button_4,来得到按钮实例。findViewById()返回一个view对象,需要向下进行类型转换。Toastt通过静态方法makeText()创建一个Toast对象,然后调用show()将Toast显示出来。Toast需要三个参数,第三个参数是Toast显示时长,有两个内置常量可以选择Toast.LENGTH_SHORT(2秒)和Toast.LENGTH_LONG(3.5秒)。

三、在活动中使用Menu

在res目录下新建一个menu文件夹res->New->Directory,然后在这个文件夹下再新建一个菜单文件file
(menu->New->Menu resource file),然后写入代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/add_item"
    android:title="Add"/>

<item
     android:id="@+id/remove_item"
     android:title="Remove"/>
</menu>
//<item>标签用来创建具体的某一个菜单项

效果图:
在这里插入图片描述

接着回到一个活动页面中来重写onCreateOptionsMenu()方法,重写方法可以使用Ctrl+O快捷键(win系统)。

    public boolean onCreateOptionsMenu(Menu menu)       //目录
    {
        getMenuInflater().inflate(R.menu.main,menu);// main为创建的menu文件
        return true;
    }

通过getMenuInflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。inflate()方法接收两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单。第二个参数用于指定我们的菜单项将添加到哪一个Menu对象中,这里直接使用onCreateOptionsMenu()方法中传入的menu参数。然后返回true,表示允许创建的菜单显示出来。
定义菜单响应事件,在该活动中重写onOptionsItemSelected()方法:

    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch(item.getItemId())
        {
            case R.id.add_item:
                Intent intent=new Intent(FirstActivity.this,radioButtonActivity.class); <!--使用intent显式-->
                startActivity(intent);
                break;
            case R.id.remove_item:
                Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show(); <!--使用Toast-->
                break;
        }
        return true;
    }

!在XML文件中注释为< !-- – >
在onOptionsItemSelected()方法中,通过调用item.getItenIfd()来判断点击,然后给每个菜单项加入知己的逻辑处理。

四、销毁活动

在活动中调用finish()方法:

button2.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
        finish();
   }
});

点击当前按钮和点击back效果一样。

五、使用Intent

Intent大致可以分为显式Itent和隐式Itent。

显式Itent

使用方法:因为意图明显所以称为显式
在这里插入图片描述

隐式Iten

相对于显式Itent,隐式Itent则含蓄很多,他并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象action和category等信息,然后交给系统去分析这个Itent,并帮我们找出合适的活动去启动。合适的活动就是可以响应我们这个隐式Itent的活动。
通过在< activity>标签下配置< intent-filter>的内容,可以指定当前活动能够响应的action和category,打开AndroidManifest.xml,添加以下代码:

      <activity android:name=".SecondActivity"
            android:label="TextView页面">
            <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>标签则包含一些附加信息,更精确地指出了当前活动能够响应的Itent中还可能带有的category。只有< action>和< category>中的内容同时能够匹配上Itent中指定的action和category时,这个活动才能响应该Itent。
修改点击事件:

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.example.activitytest.ACTION_START");
                startActivity(intent);
            }
        });

因为android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法时会自动将这个category添加到Itent中。所以这里不需要< action>和< category>同时匹配上。

使用隐式Itent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的功能共享成了可能。比如需要打开一个网页,我们可以调用系统的浏览器来打开,而不需要写一个浏览器。
修改点击事件:

        //隐式Itent访问浏览器
        button8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(Intent.ACTION_VIEW); //浏览网页
                intent.setData(Uri.parse("http://www.baidu.com"));
                //Intent intent=new Intent(Intent.ACTION_DIAL);  //打电话
                //intent.setData(Uri.parse("tel:10086"));//
                startActivity(intent);
            }
        });

Intent.ACTION_VIEW是内置的动作:显示指定数据
Uri.parse( )方法是将一个网址字符串解析成一个Uri对象。
setData接收一个Uri对象,主要用于指定当前Intent正在操作的数据,而这些数据通常都是以字符串的形式传入到Uri.parse( )方法中解析产生的。
Android中的Action和Category常量表

还可以在< intent-filter>标签中再配置一个< data>标签,用于更精确地指定当前活动能够响应什么类型的数据。
< data>标签中主要可以配置以下内容:
android:schme。用于指定数据的协议部分,如http
android:host。用于指定数据的主机名部分,如上例www.baidu.com部分
android:port。用于指定数据的端口部分,一般紧随在主机名之后
android:path。用于指定数据主机名和端口之后的部分,如一段网址中跟在域名之后的内容
android:mimeType。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
只有< data>标签中指定内容和Intent中携带的Data一致时,当前活动才能够响应该Intent。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值