• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Java
  • 标签: Android  Toast  

资源简介

Android自定义Toast样式和时间,在屏幕中间显示, 是使用方式: ToastUtil.getInstance().show(str);

资源截图

代码片段和文件信息

package com.petecat.jfree.utils;

import android.content.Context;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;


import com.petecat.jfree.R;
import com.petecat.jfree.context.JfreeApplication;


public class ToastUtil {
    private Toast mToast;
    private TextView mTextView;
    private TimeCount timeCount;
    private String message;
    private Handler mHandler = new Handler();
    private boolean canceled = true;

    public static ToastUtil getInstance() {
        return ToastUtil.ToastUtils.sInstance;
    }

    // 静态内部类
    private static class ToastUtils {
        private static final ToastUtil sInstance = new ToastUtil();
    }

    public ToastUtil() {
    }

    public void init(int type) {
        LayoutInflater inflater = (LayoutInflater) JfreeApplication.getAppContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //自定义布局
        View view = null;
        if (type == 0) {
            view = inflater.inflate(R.layout.toast_center null);
        } else {
            view = inflater.inflate(R.layout.toast_center1 null);
        }
        //自定义toast文本
        mTextView = (TextView) view.findViewById(R.id.toast_msg);
        if (mToast == null) {
            mToast = new Toast(JfreeApplication.getAppContext());
        }
        mToast.setGravity(Gravity.CENTER 0 0);
        mToast.setDuration(Toast.LENGTH_LONG);
        mToast.setView(view);


    }

    /**
     * 自定义居中显示toast
     */
    public void show(String text) {
        hide();
        if (mToast == null) {
            init(0);
        }
        message = text;
        mTextView.setText(text);
        mToast.show();

    }


    /**
     * 自定义时长、居中显示toast
     *
     * @param duration
     */
    public void show(String text int duration) {
        hide();
        if (mToast == null) {
            init(1);
        }
        message = text;
        if (timeCount == null) {
            timeCount = new TimeCount(duration 1000);
        }
        if (canceled) {
            timeCount.start();
            canceled = false;
            showUntilCancel();
        }
    }

    /**
     * 隐藏toast
     */
    public void hide() {
        if (mToast != null) {
            mToast.cancel();
            mToast = null;
            mTextView = null;
        }
        canceled = true;
        if (timeCount != null) {
            timeCount.cancel();
        }
        if (mHandler != null) {
            mHandler.removeCallbacksAndMessages(null);
        }
    }

    private void showUntilCancel() {
        if (canceled) { //如果已经取消显示,就直接return
            return;
        }
        mToast.show();
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                showUntilCancel();
            }
        } 2000);
    }

    /**
     * 自定义计时器

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3598  2018-12-23 23:35  ToastUtil.java
     文件        1040  2018-12-18 18:57  toast_center.xml

评论

共有 条评论