popupWindow定时消失和指定位置弹出

如何实现定时消失

在工作遇到的需求,当时是点击签到弹出已签到和签到成功字样,所以选择使用popupWindow加CountDownTimer这个做倒计时的类实现此类功能。下面是实现方式具体代码:

public class MyPop extends PopupWindow {

    private TextView mTvSign;
    public MyPop(Context context) {
        super(context);
        View contentView  = LayoutInflater.from(MainActivity.this).inflate(R.layout.popupwindow_message, null);
        mTvSign=(TextView) contentView.findViewById(R.id.popupwindow_messgae_text);
        // 1.设置窗体显示内容
        this.setContentView(contentView);
        // 2.设置窗体大小
        this.setWidth(330);
        this.setHeight(150);
        this.setFocusable(false);
        this.setOutsideTouchable(true);
        this.setTouchable(true);
        // 3.必选项:兼容2.+
        this.setBackgroundDrawable(new BitmapDrawable());
        timer.start();
    }
  //这里填持续时间也就是隔多长时间消失
 CountDownTimer timer=new CountDownTimer(1000,10) {
@Override
public void
onTick(long l) { }
@Override

public void onFinish() {
dismiss();
}

};
public void
showText(String text){
mTvSign.setText(text);
}
}
这里介绍一下CountDownTimer这个类,该类是一个抽象类继承时要实现其两个方法,该类主要是做倒计时多少秒执行相应功能。

构造方法:CountDownTimer (long millisInFuture, long countDownInterval)

                    millisInFuture:从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数。

     countDownInterval:接收onTick()回调的间隔时间。

还有四个方法:

   (1)start():这个方法做启动倒计时

   (2)cancel():取消倒计时

   (3)abstract void onFinish():倒计时结束时调用

   (4)abstract void onTick(long millisUntilFinished):每个多少秒调用一次。参数millisUntilFinished是在倒计时过程中传入进来的毫秒数,比如倒计时总时间为6秒,时间间隔为一秒,那么这个参数的传进来的值依次为:5、4、3、2、1

如何设置popupWindow的位置

这里有两个方法:myPop.showAsDropDown()和myPop.showAtLocation()
(1)showAsDropDown(veiw,xoff,yoff):这个方法会在控件下方弹出,但是如果没有下方没有剩余控件就像上方弹出,后面的两个参数代表偏移;
(2)showAtLocation():这个方法可以在各个位置显示,
比如在控件上方
myPop.showAtLocation(v, Gravity.NO_GRAVITY, location[0],location[1]-popupWindow.getHeight()); , 
控件左边
myPop.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(),location[1]); 
还有一个就是在屏幕中央显示
myPop.showAtLocation(mTv, Gravity.CENTER, 0, 0);



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值