首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Android》Lesson03-监听器、Toast

《Android》Lesson03-监听器、Toast

作者头像
用户1733354
发布2018-05-22 14:33:42
5290
发布2018-05-22 14:33:42
举报

Week02    2016/09/22上午1-4节

一、复习:新建一个空的AS项目Chap2AsProj

MainActivity.java(在目录Chap2AsProj\app\src\main\java\com\kamin\dr\chap2asproj)

activity_main.xml(在目录Chap2AsProj\app\src\main\res\layout)

strings.xml(在目录Chap2AsProj\app\src\main\res\values)

R.java(Chap2AsProj\app\build\generated\source\r\debug\com\kamin\dr\chap2asproj中)

AndroidManifest.xml(在目录Chap2AsProj\app\src\main)

二、Hello World!使用String.xml表示

三、activity_main.xml增加一个Button

String.xml设置btnText

了解activity_main.xml<Button>元素的属性layout_width,layout_height

代码提示快捷键:Ctrl+Alt+Space(空格键)

四、Button的使用

API参考链接Package Index - Android SDK

Android学习优秀网站 - 简书

1,findViewById

2,setOnClickListener

Ctr+I快捷键可以添加接口中未实现的方法

Android控件系列之Button以及Android监听器 - 王焘 - 博客园

Android成长之路-实现监听器的三种方法 - 博客频道 - CSDN.NET

Android笔记Android基于事件监听器处理机制 - Android移动开发技术文章_手机开发 - 红黑联盟

android开发中监听器的三种实现方法(OnClickListener)

第18章、基于监听器的事件处理(从零开始学Android)

android三种方法实现监听事件

android studio for android learning (十八) android事件监听器绑定的方法详解

五、Toast使用

1,Toast作用:提示信息,一段时间会消失

2,makeText()方法,show()方法

六、综合以上知识点的代码及效果截图

1,项目结构图

项目结构图

2,AndroidManifest.xml代码(默认产生的,没有修改)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kamin.chap2asproj">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

3,string.xml代码:字符串常量尽量写在此文件中,易于修改和维护

<resources>
    <string name="app_name">Chap2AsProj</string>
    <string name="hello">上午好!</string>
    <string name="txBtnFirst">内部接口类监听器</string>
    <string name="txBtnSecond">匿名内部监听器</string>
    <string name="txBtnThird">类上实现监听器</string>
    <string name="hint1">my First button is Clicked!</string>
    <string name="hint2">my Second button is Clicked!</string>
    <string name="hint3">my Third button is Clicked!</string>
</resources>

4,activity_main.xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context="com.kamin.chap2asproj.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:id="@+id/tvHello" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/txBtnFirst"
        android:id="@+id/btnFirst"
        android:layout_below="@+id/tvHello"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="61dp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/txBtnSecond"
        android:id="@+id/btnSecond"
        android:layout_below="@+id/btnFirst"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="32dp" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/txBtnThird"
        android:id="@+id/btnThird"
        android:layout_below="@+id/btnSecond"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="44dp" />
</RelativeLayout>

5,MainActivity.java代码:分3种方式完成了监听器,以后写代码可以选择任何1种,建议使用第2中匿名监听器。不管哪种监听器都必须实现(1)注册(绑定)监听器(2)实现OnClick方法

第1种监听器:

//在onCreate方法内注册监听器//setOnClickListener的参数为自定义监听器类MyOnClickListener的对象btnFirst.setOnClickListener(new MyOnClickListener());//监听器1绑定监听器,可以理解成:把门铃装在你家大门上
//在类MainActivity内定义内部类MyOnClickListener 作为监听器/*自定义的监视器,可以理解成你的门铃*/
class MyOnClickListener implements View.OnClickListener{
    @Override
    public void onClick(View view) {
        System.out.println("按钮被单击!*****");
        Toast.makeText(MainActivity.this,R.string.hint1,Toast.LENGTH_LONG).show();
    }
}

第2种监听器:(推荐使用)

//在onCreate方法内注册监听器//setOnClickListener的参数为匿名监听器,注册监听器和监听器的实现用一条语句完成btnSecond.setOnClickListener(new View.OnClickListener(){//监听器2匿名监听器
    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this,R.string.hint2,Toast.LENGTH_SHORT).show();
    }
});

第3种监听器:

//本类必须实现接口View.OnClickListener,本类就是一个监听器public class MainActivity extends AppCompatActivity implements View.OnClickListener
//在onCreate方法内注册监听器//setOnClickListener的参数是this,由于本类就是监听器btnThird.setOnClickListener(this);//监听器3本类就是一个监听器
//由于本类MainActivity实现了接口View.OnClickListener,//所以必须在MainActivity类中实现接口OnClickListener的抽象方法public void onClick(View view)@Override
public void onClick(View view) {
    Toast.makeText(MainActivity.this,R.string.hint3,Toast.LENGTH_LONG).show();
}

含3种监听器的全部代码如下:

package com.kamin.chap2asproj;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btnFirst,btnSecond,btnThird;//定义Button
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnFirst=(Button)findViewById(R.id.btnFirst);//界面上的button
        btnFirst.setOnClickListener(new MyOnClickListener());//监听器1绑定监听器,可以理解成:把门铃装在你家大门上

        btnSecond=(Button)findViewById(R.id.btnSecond);
        btnSecond.setOnClickListener(new View.OnClickListener(){//监听器2匿名监听器
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,R.string.hint2,Toast.LENGTH_SHORT).show();
            }
        });

        btnThird=(Button)findViewById(R.id.btnThird);
        btnThird.setOnClickListener(this);//监听器3本类就是一个监听器

    }
    /*自定义的监视器,可以理解成你的门铃*/
    class MyOnClickListener implements View.OnClickListener{
        @Override
        public void onClick(View view) {
            System.out.println("按钮被单击!*****");
            Toast.makeText(MainActivity.this,R.string.hint1,Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this,R.string.hint3,Toast.LENGTH_LONG).show();
    }

}

6,运行效果图

运行效果图

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.09.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档