Android应用更新介绍提醒框

在很多Android应用更新的时候或者在第一次启动的时候会有一些功能使用指引,今天查了些资料,总结了两套方案:

  1. 继承AlertDialog
  2. 直接用WindowManager
import android.view.WindowManager.LayoutParams;

public class TipsDialog extends AlertDialog {

    private boolean isShown = false;
    private int mShowDur = 0;

    public TipsDialog(Context context, int theme) {
        super(context, theme);
    }

    public TipsDialog(Context context) {
        super(context, R.style.dialog_tip);
    }

    /** * 设置弹框消失的时间 */
    public void setShowDuration(int ms) {
        mShowDur = ms;
    }

// 设置弹框显示的位置,从 (0,0)作为起始位置
    public void setShowPoint(int xPix, int yPix) {
        Window win = getWindow();
        LayoutParams params = new LayoutParams();
        WindowManager wm = win.getWindowManager();
        Point point = new Point();
        wm.getDefaultDisplay().getSize(point);
        int width = -point.x / 2 + xPix;
        int height = -point.y / 2 + yPix;
        params.x = width;
        params.y = height;
        win.setAttributes(params);
    }

// 设置显示的view
    public void show(View view) {
        setCanceledOnTouchOutside(true);
        show();
        setContentView(view);
        isShown = true;
        // 如果时长大于0则延迟隐藏弹框
        if (mShowDur > 0) {
            mHandler.sendEmptyMessageDelayed(0, mShowDur);
        }
    }

    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (isShown) {
                dismiss();
            }
        };
    };

    @Override
    public void dismiss() {
        super.dismiss();
        isShown = false;
    }

    // 任意按键都隐藏
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        dismiss();
        return super.onKeyDown(keyCode, event);
    }
}

此方法比较方便

你可能感兴趣的:(Android应用更新介绍提醒框)