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

效果如下:
這裏寫圖片描述
完美解決

最後附上所有源碼的鏈接:源碼

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