package com.bw.aday04_toast; import android.content.Context; import android.os.CountDownTimer; import android.os.Handler; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.example.sharedpreferences.R; public class ToastUtil { private Toast mToast; private TextView mTextView; private TimeCount timeCount; private String message; private Handler mHandler = new Handler(); private boolean canceled = true; //1.构造方法 参数 第一个参数上下文对象,第二个参数toast要显示的布局,第三个第四个参数。。。是布局上的view显示的资源 public ToastUtil(Context context, int layoutId, String msg) { message = msg; //2.将一个布局转为一个view 需要使用布局加载器LayoutInflater LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //自定义布局 3.将布局转成View的对象 View view = inflater.inflate(layoutId, null); //自定义toast文本 4.从布局的view中拿到你要设置的Textview的对象 , mTextView = (TextView)view.findViewById(R.id.toast_msg); //5.为view设置内容 mTextView.setText(msg); Log.i("ToastUtil", "Toast start..."); if (mToast == null) { mToast = new Toast(context);//6.实例化Toast对象 Log.i("ToastUtil", "Toast create..."); } //设置toast居中显示 mToast.setGravity(Gravity.CENTER, 0, 0);//7.设置Toast位置 mToast.setDuration(Toast.LENGTH_LONG);//8.设置Toast显示时间 mToast.setView(view);//9.设置Toast显示的视图 } /** * 自定义居中显示toast */ public void show() { mToast.show();//10.让Toast显示调用show()方法 Log.i("ToastUtil", "Toast show..."); } /** * 自定义时长、居中显示toast * @param duration */ public void show(int duration) { timeCount = new TimeCount(duration, 1000); Log.i("ToastUtil", "Toast show..."); if (canceled) { timeCount.start(); canceled = false; showUntilCancel(); } } /** * 隐藏toast */ private void hide() { if (mToast != null) { mToast.cancel(); } canceled = true; Log.i("ToastUtil", "Toast that customed duration hide..."); } private void showUntilCancel() { if (canceled) { //如果已经取消显示,就直接return return; } mToast.show(); mHandler.postDelayed(new Runnable() { @Override public void run() { Log.i("ToastUtil", "Toast showUntilCancel..."); showUntilCancel(); } }, Toast.LENGTH_LONG); } /** * 自定义计时器 */ private class TimeCount extends CountDownTimer { public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); //millisInFuture总计时长,countDownInterval时间间隔(一般为1000ms) } @Override public void onTick(long millisUntilFinished) { mTextView.setText(message + ": " + millisUntilFinished / 1000 + "s后消失"); } @Override public void onFinish() { hide(); } } }
吐司
最新推荐文章于 2020-07-30 20:00:23 发布