美文网首页
2019-08-01 自定义Toast弹窗

2019-08-01 自定义Toast弹窗

作者: xiaohuage | 来源:发表于2019-08-02 13:05 被阅读0次

    系统自带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" />

    相关文章

      网友评论

          本文标题:2019-08-01 自定义Toast弹窗

          本文链接:https://www.haomeiwen.com/subject/uqbfdctx.html