[仿南航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>

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章