2019-08-01 自定义Toast弹窗

2019-08-02  本文已影响0人  xiaohuage

系统自带Toast效果分析:系统自带的弹窗效果,一个空白框和文字。

系統Toast的局限性:当频繁点击按钮调用系统弹窗时,由于上一个弹窗还没有结束,便点击了下一次弹窗,此时存在一个弹窗次数的队列,所以会看到弹窗长时间不消失的效果,所以能够自定义弹窗的显示时间控制便于解决这一bug,我們正常的需求應該是:单次点击,能够显示自定的时长;频繁点击,能够实现下一次点击时,不管上一次的点击显示时长有没有达到,都应该消失。

系统弹窗效果:

系统弹窗效果实现code:

Toast.makeText(context,"弹窗文字",Toast.LENGTH_LONG).show();

自定义弹窗效果:

自定义弹窗效果实现(包括功能:弹窗自定义图片、文字、显示位置、多长时间后显示弹窗)code:

private void custTost(Context context, String tost_content, int tost_wait_time, final int tost_long_time) {

//tost_wait_time 多长时间后显示弹窗

//tost_content显示文字内容

//tost_long_time显示弹窗时长,尚未实现该功能

LayoutInflater inflater = getLayoutInflater();

        View layout = inflater.inflate(R.layout.toast_custom_styles,

                (ViewGroup) findViewById(R.id.ll_Toast));

        ImageView image = layout.findViewById(R.id.iv_ImageToast);

        image.setImageResource(R.mipmap.ic_launcher);

        TextView text = layout.findViewById(R.id.tv_TextToast);

        text.setText(tost_content);

        final Toast toast =new Toast(context);

        toast.setGravity(Gravity.RIGHT | Gravity.BOTTOM, 20, 50);

        toast.setDuration(Toast.LENGTH_LONG);

        toast.setView(layout);

        final Timer timer =new Timer();

        timer.schedule(new TimerTask() {

@Override

            public void run() {

           toast.show();

            }

}, tost_wait_time);//10表示点击按钮之后,Toast延迟10ms后显示

    }

xml布局:toast_custom_styles.xml

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

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

    android:id="@+id/ll_Toast"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:background="#ffffffff"

    android:orientation="vertical">

        android:id="@+id/ll_ToastContent"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginLeft="1dp"

        android:layout_marginRight="1dp"

        android:layout_marginBottom="1dp"

        android:background="#44000000"

        android:orientation="vertical"

        android:padding="15dip">

            android:id="@+id/iv_ImageToast"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center" />

            android:id="@+id/tv_TextToast"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:gravity="center"

            android:paddingLeft="10dp"

            android:paddingRight="10dp"

            android:textColor="#ff000000" />

上一篇下一篇

猜你喜欢

热点阅读