Android Studio开发学习(七)——Toast

一、前提

Toast是一种简易的消息提示框,用来提示消息,我们可以知道在每次点击退出按钮时,总会有提醒说再点击一次退出,这个提示就是Toast

二、目标

Toast消息提示框

三、内容

在正式进行操作之前,我们首先写好布局代码,以便测试

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/bt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="默认"
        />
    <Button
        android:id="@+id/bt2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="改变位置"
        />
    <Button
        android:id="@+id/bt3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="带图片"
        />
    <Button
        android:id="@+id/bt4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="test"
        />
</LinearLayout>

在MainActivity中添加,都是基本的点击事件

package com.example.sunny.toast;

import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button button1,button2,button3,button4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1= (Button) findViewById(R.id.bt1);
        button2= (Button) findViewById(R.id.bt2);
        button3= (Button) findViewById(R.id.bt3);
        button4= (Button) findViewById(R.id.bt4);
        Onclick onclick=new Onclick();
        button1.setOnClickListener(onclick);
        button2.setOnClickListener(onclick);
        button3.setOnClickListener(onclick);
        button4.setOnClickListener(onclick);
    }
    class Onclick implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.bt1:
                    break;
                case R.id.bt2:
                    toast.show();
                    break;
                case R.id.bt3:
                    break;
                case R.id.bt4:
                    break;

            }
        }
    }
}

1、简单操作

首先我们先让它进行一次常规显示,在case R.id.btn1下添加

Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT).show();

这是最常规的一种显示,我们来理解一下,makeText()方法表示做一个只包含文本视图的标准toast,其中的三个参数分别是上下文对象,显示的内容,显示的时间(只有LONG和SHORT两种),一定不要忘记最后的show()方法,否则Toast不会显示

2、设置位置

对位置进行改变,在case R.id.btn2下添加

Toast toast=Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER,0,0);//改变位置
toast.show();

setGravity()方法表示设置通知应该出现在屏幕上的位置,其参数分别是位置,x的偏移以及y的偏移,将其居中显示,还可以其他设计

3、自定义

在进行自定义设置前,我们先需要为它写一个xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#99000000"
    android:gravity="center"
    >
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:orientation="vertical"
        android:gravity="center"
        >
        <ImageView
            android:id="@+id/iv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"
            />
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="#FFFFFF"
            android:layout_marginTop="5dp"
            />
    </LinearLayout>

</LinearLayout>

在case R.id.btn3下添加

Toast toast2=new Toast(MainActivity.this);
LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
View view=inflater.inflate(R.layout.toast, null);
ImageView imageview= (ImageView) view.findViewById(R.id.iv);
TextView textview= (TextView) view.findViewById(R.id.tv);
imageview.setImageResource(R.mipmap.ic_launcher);
textview.setText("hello");
toast2.setView(view);
toast2.setDuration(Toast.LENGTH_SHORT);//显示的时间长短
toast2.show();

在这段代码中,其实大多都是之前讲过的,通过LayoutInflate来找layout下的布局文件,找到其id进行匹配,为图片和文本框设置资源以及内容,将建立好的view添加到toast中,设置时间后进行显示

4、封装

我们可以发现,不管我们点击多少次他都会一直这样显示,浪费了很多时间,我们希望的是,不管点击多少次总以最后一次点击为主,这时我们可以将Toast进行封装使用

首先,为Toast写个java文件,为他写一个showMsg()方法,传入上下文对象以及消息,进行判断,若toast为空,也就是没有点击的时候,则创建一个toast,若存在toast,则调用setText()方法,此方法表示,更新之前使用makeText()方法创建的Toast中的文本,也就是无论点击多少次,永远都在更新

package com.example.sunny.toast;

import android.content.Context;
import android.widget.Toast;

/**
 * Created by Sunny on 2020/4/20.
 */
public class ToastUtil {
    public static Toast toast;
    public static void showMsg(Context context,String msg){
        if (toast==null){
            toast=Toast.makeText(context,msg,Toast.LENGTH_SHORT);
        }else{
            toast.setText(msg);
        }
        toast.show();
    }
}

在case R.id.btn4下添加,调用刚才写的方法

ToastUtil.showMsg(MainActivity.this,"hhh");

四、总结

Toast组件不难理解且操作较为简单,后续会更新

原创文章 30 获赞 5 访问量 1903

猜你喜欢

转载自blog.csdn.net/qq_41890177/article/details/105644465