Android各种好看吐司设计
16lz
2021-01-26
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
共勉:不要把太多的时间留给迷茫。
更多相关文章
- Android卸载程序之后跳转到指定的反馈页面
- 【原创】Android(安卓)判断默认数据网络是否为开,若关则跳转到网
- make update-api 提示。
- Android(安卓)自定义确认提示框,选择确认
- android 刷新activity(在本页面刷新)
- AsyncTask的使用 (二)图片下载,进度条
- Android自定义viewpager且高度自适应
- Android中如何移动图片
- Android端实现图标带提示数字功能