[仿南航app开发日记8]解决部分bug

透明进度条bug

我的透明进度条原理是不断重绘一个背景图片,然后使用Matrix旋转图片,原先的代码是死循环,代码如下:

      protected Void doInBackground(Void... params) {
            while( true ) {
                try {
                    Thread.sleep(100);
                } catch(InterruptedException e) {
                    e.printStackTrace();
                }
                publishProgress();
            }
            return null;
        }

这样就有一个bug,因为是死循环,当ProgressDialog被dismiss掉之后这个循环并不会销毁,而是一直在循环,这样造成的一个bug就是使用了透明进度条之后侧滑菜单点击就没有反应了,并且,透明进度条在Activity下次启动并不会有旋转的效果,这里修改的办法是将这个while(true)改成用变量判断:

 while( mLoop ) 

然后重写ProgressDialog的dismiss()方法:

    public void dismiss() {
        super.dismiss();
        mProgressView.setLoop(false);
    }

这样在这个ProgressDialog被销毁之后,将这个循环也关掉。

透明进度条在小米手机上显示黑屏背景

这个透明进度条在使用了style去除背景之后在有些手机上显示正常,但是在小米手机显示黑屏:
这里写图片描述
经过一番排查,原先设置的那个主题有问题:

 <style name="LoginDialogTheme" parent="Theme.AppCompat.DayNight.Dialog">
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowBackground">@null</item>
    </style>

修改成如下这样才行:

    <style name="LoginDialogTheme" parent="Theme.AppCompat.DayNight.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@color/progressColor</item>
    </style>

colors.xml
<color name="progressColor">#0000</color>

效果如下:
这里写图片描述
完美解决

最后附上所有源码的链接:源码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值