Android 自定义Toast:轻松实现深度可定制化的Toast

前言

用过系统自带的Toast的都知道,android自带的吐司比较难看,而且样式单一,最重要的是不能自由选择动画,这样的吐司很难用在一个精美的应用上,因此,我们来自行实现一个自定义的Toast:XToast,来取代系统自带的Toast。当然了,以下实现的自定义Toast是与系统Toast有区别的,下面会提到。

使用方式&预览

我们来看看怎么使用XToast,通过提供的一系列的set方法,可自行设置XToast的各种属性、样式等:

XToast.create(MainActivity.this)
        .setText("Testing:This is a XToast....")
        .setAnimation(AnimationUtils.ANIMATION_DRAWER) //抽屉式效果
        .setDuration(XToast.XTOAST_SHORT)
        .setOnDisappearListener(new XToast.OnDisappearListener() {
            @Override
            public void onDisappear(XToast xToast) {
                Log.d("cylog","The XToast has disappeared..");
            }
        }).show();

接着这是实现的效果:
首先这是一个抽屉式效果的Toast:
抽屉式
这是一个缩放效果的Toast:

缩放式

原理简述

其实实现原理很简单,是通过添加View来实现的,因为Toast实际上就是一个View,通过控制、修改View的不同属性,然后通过不同的动画效果使其更加生动绚丽地展现出来。

实现

首先,我们新建名为XToast.java文件,这也是我们的主要的类,

public class XToast  {
   

    private Context mContext;
    private View mView;
    private ViewGroup mViewGroup;
    private ViewGroup mViewRoot;
    private GradientDrawable mToastBackgound;
    private LayoutInflater mInflater;
    private TextView mTextView;
    private String message;
    private AnimatorSet mShowAnimatorSet;
    private AnimatorSet mHideAnimatorSet;
    private int mShowAnimationType;
    private int mHideAnimationType;
    private int mDuration;
    private int mBackgroundColor;
    private OnDisappearListener mOnDisappearListener;

    public static final int XTOAST_LONG = 3500;
    public static final int XTOAST_SHORT = 2000;

    public interface OnDisappearListener{
   
        void onDisappear(XToast xToast);
    }

    public XToast(Context context)
    {
        this.mContext = context;
        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值