手把手简单封装Toasty

之前用了Toasty,确实挺不错的,也非常简单,但是实际使用中每用一次都要传好久几个参数还是过于麻烦,那么话不多说,封装呗。


第一步还是导入依赖,之前的文章有讲,就不说了。新建一个类,我取名为Tw,你自己随意。

我们先来封装一个success的Toast,

Toasty.success(MainActivity.this, "This is a success toast.", Toast.LENGTH_SHORT, true).show();

上面是直接使用时的方法,封装的过程无非就是把方法单独放置,统一给参数。那么我们来看,这里需要满足四个参数:context 内容 持续时间 是否带图标。第234个参数非常好解决,关键是第1个,你使用时肯定在不同的activity、fragment。关键就在于怎么获取使用时的context,我选择的是自定义application。

创建一个类,命名为MyApplication,继承Application。由于这里的作用就是获取context,需要定义一个context来储存

private static Context mAppContext;

然后onCreate方法,获得mAppContext

@Override
    public void onCreate() {
        super.onCreate();
        mAppContext = this;
    }

获取的有了,但在其他地方调用时,还需要一个方法来使获取的这个值返回,

public static Context getAppContext() {
        return mAppContext;
    }

最终这个类的全部代码就是

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application {
    private static Context mAppContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mAppContext = this;
    }

    public static Context getAppContext() {
        return mAppContext;
    }
}

先别着急用,还需要在manifest里声明才能用

ok,这就可以用了,再回到success的封装上,这就很清晰了呀。

参数1:context,解决了,调用时    你的自定义application类名.自定义获取值的方法名    就可以,以我为例

MyApplication.getAppContext()

参数2:内容,每次使用的时候传进来

参数3:持续时间,我个人的需求short就行了,你自己可以自定义

参数4:是否带图标,我的需求是true

那么在Tw的类里,success的方法就是

public static void success(String text) {
        Toasty.success(MyApplication.getAppContext(), text, Toast.LENGTH_SHORT, true).show();
    }

调用时    类名.方法名(传入的String内容)    就可以,以我为例

Tw.success("123456789");

而自定义Toasty的封装也以此类推

public static void info(String text) {
        Toasty.custom(MyApplication.getAppContext(), text, R.drawable.ic_toast_info, R.color.colorPrimary, Toast.LENGTH_SHORT, true, true).show();
    }

参数分别是:context 内容 自定义图标 Toast背景色 持续时间 是否带图标 是否自定义背景色

文字颜色的话,用Toasty的全局设置就ok。

效果图

最后惯例放上源码和demo,apk在Tosty\app\build\outputs\apk\debug里

蓝奏云(工程名和包名的Tosty不是失误打错了,而是因为名字重了故意打成Tosty的)

猜你喜欢

转载自www.cnblogs.com/bigcn/p/12360461.html