Android各种吐司设计

这里給大家介绍一下,几种简单的吐司的设计,虽然设计不难,但是有某些app界面显示比较好看。
效果:

这里设计了五种不同时刻需要的吐司,分别是

1、普通吐司2、信息提示吐司3、成功提示吐司4、警告提示吐司5、成功提示吐司

还有一些其他功能的吐司,比如有些页面需要三秒内两次后退为退出页面等等的提示。

这里把几个吐司的的使用封装在一个工具类中,需要的可以拿来使用就可以了。

这个封装的吐司类,有几个优点:

1、吐司的样式好看2、调用方便3、吐司的时间可控,并且下一个吐司会直接覆盖上一个吐司,系统的吐司是等上一个吐司完成后在显示下一个吐司,这样如果多次点击吐司会弹很久的吐司4、退出程序吐司会关闭

一.这里給大家看看上面显示页面调用的代码:

使用工具类的方法就是,先注册,后使用就可以了。

package com.example.wenzhi.dialog;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //init Toast  ,最好是在Application中初始化,在所有Activity中都可以用!        //后面修改了一下,使用Activity对象获取了Application的上下文,所以任何一个页面注册,其他页面都是可以使用        RxToast.setContext(this);    }    //普通吐司    public void commonToast(View view) {        RxToast.normal("普通吐司");        //等同        //  RxToast.normal("普通吐司", Toast.LENGTH_SHORT);        //默认是没有图标的,如果想加图标也可以        //RxToast.normal("普通吐司", Toast.LENGTH_SHORT,getDrawable( R.mipmap.ic_launcher));    }    //信息提示吐司    public void infoToast(View view) {        RxToast.info("信息提示吐司");        //等同,第一个参数是显示的信息,第二个参数是显示的时间,第三个参数是是否显示图标。         //  RxToast.info("信息提示吐司", Toast.LENGTH_SHORT);          // RxToast.info("信息提示吐司",Toast.LENGTH_SHORT,true).show();    }    //成功提示吐司    public void successToast(View view) {        RxToast.success("成功提示吐司");        //等同        //  RxToast.successToast("成功提示吐司",Toast.LENGTH_SHORT);        //  RxToast.successToast("成功提示吐司",Toast.LENGTH_SHORT,true).show();    }    //警告提示吐司    public void warnToast(View view) {        RxToast.warning("警告提示吐司");        //等同        //  RxToast.warnToast("警告提示吐司",Toast.LENGTH_SHORT);        //  RxToast.warnToast("警告提示吐司",Toast.LENGTH_SHORT,true).show();    }    //错误提示吐司    public void errorToast(View view) {        RxToast.error("错误提示吐司");        //等同        //  RxToast.errorToast("错误提示吐司",Toast.LENGTH_SHORT);        //  RxToast.errorToast("错误提示吐司",Toast.LENGTH_SHORT,true).show();    }    //跳转到另一个页面    public void jumpActivity(View view) {        startActivity(new Intent(this, SecondActivity.class));    }    //提示两次返回退出程序    public void doubleClickToast(View view) {        boolean d = RxToast.doubleClickExit();        if (d) {            finish();        }    }}

二.吐司工具类的代码:

工具类的几个方法,看看几个public修饰的方法就知道有哪几个了。

package com.example.wenzhi.dialog;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Color;import android.graphics.PorterDuff;import android.graphics.PorterDuffColorFilter;import android.graphics.Typeface;import android.graphics.drawable.Drawable;import android.graphics.drawable.NinePatchDrawable;import android.os.Build;import android.support.annotation.CheckResult;import android.support.annotation.ColorInt;import android.support.annotation.DrawableRes;import android.support.annotation.NonNull;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;/** * @author liwenzhi Toast Utils */@SuppressLint("InflateParams")public class RxToast {    @ColorInt    private static final int DEFAULT_TEXT_COLOR = Color.parseColor("#FFFFFF");    @ColorInt    private static final int ERROR_BACKGROUND_COLOR = Color.parseColor("#FD4C5B");    @ColorInt    private static final int INFO_BACKGROUND_COLOR = Color.parseColor("#3F51B5");    @ColorInt    private static final int SUCCESS_BACKGROUND_COLOR = Color.parseColor("#388E3C");    @ColorInt    private static final int WARNING_BACKGROUND_COLOR = Color.parseColor("#FFA900");    private static final String TOAST_TYPEFACE = "sans-serif-condensed";    private static Toast currentToast;    private static Toast mToast;    private static Context mContext;    private static long mExitTime;    private static Context getContext() {        return mContext;    }    public static void setContext(Context mContext) {        RxToast.mContext = mContext.getApplicationContext();    }    //normal    public static void normal(@NonNull String message) {        normal(getContext(), message, Toast.LENGTH_SHORT, null, false).show();    }    public static void normal(@NonNull String message, int duration) {        normal(getContext(), message, duration, null, false).show();    }    public static void normal(@NonNull String message, Drawable icon) {        normal(getContext(), message, Toast.LENGTH_SHORT, icon, true).show();    }    public static void normal(@NonNull String message, int duration, Drawable icon) {        normal(getContext(), message, duration, icon, true).show();    }    //warning    public static void warning(@NonNull String message) {        warning(getContext(), message, Toast.LENGTH_SHORT, true).show();    }    public static void warning(@NonNull String message, int duration) {        warning(getContext(), message, duration, true).show();    }    public static Toast warning(@NonNull String message, int duration, boolean withIcon) {        return custom(getContext(), message, getDrawable(getContext(), R.mipmap.ic_error_outline_white_48dp), DEFAULT_TEXT_COLOR, WARNING_BACKGROUND_COLOR, duration, withIcon, true);    }    //info    public static void info(@NonNull String message) {        info(getContext(), message, Toast.LENGTH_SHORT, true).show();    }    public static void info(@NonNull String message, int duration) {        info(getContext(), message, duration, true).show();    }    public static Toast info(@NonNull String message, int duration, boolean withIcon) {        return custom(getContext(), message, getDrawable(getContext(), R.mipmap.ic_info_outline_white_48dp), DEFAULT_TEXT_COLOR, INFO_BACKGROUND_COLOR, duration, withIcon, true);    }    //success    public static void success(@NonNull String message) {        success(getContext(), message, Toast.LENGTH_SHORT, true).show();    }    public static void success(@NonNull String message, int duration) {        success(getContext(), message, duration, true).show();    }    public static Toast success(@NonNull String message, int duration, boolean withIcon) {        return custom(getContext(), message, getDrawable(getContext(), R.mipmap.ic_check_white_48dp), DEFAULT_TEXT_COLOR, SUCCESS_BACKGROUND_COLOR, duration, withIcon, true);    }    //error    public static void error(@NonNull String message) {        error(getContext(), message, Toast.LENGTH_SHORT, true).show();    }    public static void error(@NonNull String message, int duration) {        error(getContext(), message, duration, true).show();    }    public static Toast error(@NonNull String message, int duration, boolean withIcon) {        return custom(getContext(), message, getDrawable(getContext(), R.mipmap.ic_clear_white_48dp), DEFAULT_TEXT_COLOR, ERROR_BACKGROUND_COLOR, duration, withIcon, true);    }    //******************************************simple Toast **************************************    /**     * simple Toast : need waiting     */    public static void showToastShort(String str) {        Toast.makeText(getContext(), str, Toast.LENGTH_SHORT).show();    }    public static void showToastLong(String str) {        Toast.makeText(getContext(), str, Toast.LENGTH_LONG).show();    }    /**     *simple Toast : show rightNow     */    public static void showToast(String msg) {        if (mToast == null) {            mToast = Toast.makeText(getContext(), msg, Toast.LENGTH_LONG);        } else {            mToast.setText(msg);        }        mToast.show();    }    /**     * click two time for exit     */    public static boolean doubleClickExit() {        if ((System.currentTimeMillis() - mExitTime) > 2000) {            RxToast.normal("再按一次退出");            mExitTime = System.currentTimeMillis();            return false;        }        return true;    }    //*******************************************private method start********************************************    @CheckResult    private static Toast normal(@NonNull Context context, @NonNull String message, int duration, Drawable icon, boolean withIcon) {        return custom(context, message, icon, DEFAULT_TEXT_COLOR, duration, withIcon);    }    @CheckResult    private static Toast warning(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, getDrawable(context, R.mipmap.ic_error_outline_white_48dp), DEFAULT_TEXT_COLOR, WARNING_BACKGROUND_COLOR, duration, withIcon, true);    }    @CheckResult    private static Toast info(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, getDrawable(context, R.mipmap.ic_info_outline_white_48dp), DEFAULT_TEXT_COLOR, INFO_BACKGROUND_COLOR, duration, withIcon, true);    }    @CheckResult    private static Toast success(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, getDrawable(context, R.mipmap.ic_check_white_48dp), DEFAULT_TEXT_COLOR, SUCCESS_BACKGROUND_COLOR, duration, withIcon, true);    }    @CheckResult    private static Toast error(@NonNull Context context, @NonNull String message, int duration, boolean withIcon) {        return custom(context, message, getDrawable(context, R.mipmap.ic_clear_white_48dp), DEFAULT_TEXT_COLOR, ERROR_BACKGROUND_COLOR, duration, withIcon, true);    }    @CheckResult    private static Toast custom(@NonNull Context context, @NonNull String message, Drawable icon, @ColorInt int textColor, int duration, boolean withIcon) {        return custom(context, message, icon, textColor, -1, duration, withIcon, false);    }    @CheckResult    private static Toast custom(@NonNull Context context, @NonNull String message, @DrawableRes int iconRes, @ColorInt int textColor, @ColorInt int tintColor, int duration, boolean withIcon, boolean shouldTint) {        return custom(context, message, getDrawable(context, iconRes), textColor, tintColor, duration, withIcon, shouldTint);    }    @CheckResult    private static Toast custom(@NonNull Context context, @NonNull String message, Drawable icon, @ColorInt int textColor, @ColorInt int tintColor, int duration, boolean withIcon, boolean shouldTint) {        if (currentToast == null) {            currentToast = new Toast(context);        }        final View toastLayout = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.toast_layout, null);        final ImageView toastIcon = (ImageView) toastLayout.findViewById(R.id.toast_icon);        final TextView toastTextView = (TextView) toastLayout.findViewById(R.id.toast_text);        Drawable drawableFrame;        if (shouldTint) {            drawableFrame = tint9PatchDrawableFrame(context, tintColor);        } else {            drawableFrame = getDrawable(context, R.mipmap.toast_frame);        }        setBackground(toastLayout, drawableFrame);        if (withIcon) {            if (icon == null)                throw new IllegalArgumentException("Avoid passing 'icon' as null if 'withIcon' is set to true");            setBackground(toastIcon, icon);        } else            toastIcon.setVisibility(View.GONE);        toastTextView.setTextColor(textColor);        toastTextView.setText(message);        toastTextView.setTypeface(Typeface.create(TOAST_TYPEFACE, Typeface.NORMAL));        currentToast.setView(toastLayout);        currentToast.setDuration(duration);        return currentToast;    }    private static final Drawable tint9PatchDrawableFrame(@NonNull Context context, @ColorInt int tintColor) {        final NinePatchDrawable toastDrawable = (NinePatchDrawable) getDrawable(context, R.mipmap.toast_frame);        toastDrawable.setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN));        return toastDrawable;    }    private static final void setBackground(@NonNull View view, Drawable drawable) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)            view.setBackground(drawable);        else            view.setBackgroundDrawable(drawable);    }    private static final Drawable getDrawable(@NonNull Context context, @DrawableRes int id) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)            return context.getDrawable(id);        else            return context.getResources().getDrawable(id);    }    //===========================================private method end============================================}

上面工具类的代码理解也是不难的,想用可以直接copy过去,但是这里是有几个小图标和一个背景图片的!

对于吐司工具类,不满意的可以进行适当修改,符合自己的使用习惯就好。

这个吐司示例的代码:https://download.csdn.net/download/wenzhi20102321/10528056

如果没有csdn积分,就在Git中下载:https://github.com/liwenzhi/WZToast/tree/master

共勉:不要把太多的时间留给迷茫。

更多相关文章

  1. Android卸载程序之后跳转到指定的反馈页面
  2. 【原创】Android(安卓)判断默认数据网络是否为开,若关则跳转到网
  3. make update-api 提示。
  4. Android(安卓)自定义确认提示框,选择确认
  5. android 刷新activity(在本页面刷新)
  6. AsyncTask的使用 (二)图片下载,进度条
  7. Android自定义viewpager且高度自适应
  8. Android中如何移动图片
  9. Android端实现图标带提示数字功能

随机推荐

  1. Android Android 导入Flutter模块(二)--
  2. 设置TextView文字居中,代码实现android:l
  3. 软件架构:基础概念总结
  4. Android中视频播放以及解码
  5. 关于ImageView的一些图片属性
  6. Android轻量级缓存框架ASimpleCache
  7. 如何查看无法导出的android数据库文件?
  8. Android(安卓)增强版百分比布局库 为了适
  9. android中Acitivity的启动方式启动模式讲
  10. Android本地数据存储之Sharedpreference