Android开发之《实现类似Toast可以自动消失的提示栏Tip》

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.TextView;

public class TipManager {
    private static final String TAG = TipManager.class.getSimpleName();

    private Context mContext;
    private TextView mView;

    private Timer timer = null;
    private TimerTask cancelTask = null;

    public TipManager(Context context, TextView view) {
        mContext = context;
        mView = view;
    }

    public void init() {
        timer = new Timer();
    }

    public void release() {
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
        }

        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }

    public void show(CharSequence text) {
        // cancel hide task
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
            timer.purge();
        }

        showUI(text);
    }

    public void show(CharSequence text, long duration) {
        showUI(text);

        // cancel hide task
        if (cancelTask != null) {
            cancelTask.cancel();
            cancelTask = null;
            timer.purge();
        }

        cancelTask = new TimerTask() {
            @Override
            public void run() {
                hideUI("default");
            }
        };

        timer.schedule(cancelTask, duration);
    }

    private void showUI(final CharSequence text) {
        ((Activity) mContext).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                doShow(text);
            }
        });
    }

    private void hideUI(final CharSequence text) {
        ((Activity) mContext).runOnUiThread(new Runnable() {
            @Override
            public void run() {
                doHide(text);
            }
        });
    }

    private void doShow(CharSequence text) {
        mView.setText(text);
        mView.setVisibility(View.VISIBLE);
    }

    private void doHide(CharSequence text) {
        mView.setText(text);
        mView.setVisibility(View.INVISIBLE);
    }
}

  

原文地址:https://www.cnblogs.com/alanfang/p/6885235.html