1. 程式人生 > >解決Font size和Display size設定到最大,顯示異常的問題

解決Font size和Display size設定到最大,顯示異常的問題

前言

Android7.0的設定裡面有一個顯示模組,裡面有字型大小和顯示大小的設定,調節的時候可能會造成顯示異常的問題。

具體問題復現路徑有兩種
1. 大小之間的轉換(包括設定字型和顯示),看你的應用是否顯示正常
2. 設定成最小,清除快取,進入自己的應用,然後進入設定,將字型和顯示均調成最大,這時再進入應用看看,看顯示是否正常

解決方法

其實這兩個歸根結底,原因都是沒有完全重繪,所以我們的解決方法有三個:
1. 獲取字型改變或者顯示改變的事件時,清除應用的快取
2. 獲取字型改變或者顯示改變的事件時,結束自己的應用
3. 獲取字型改變或者顯示改變的事件時,重新New對應的View

清除快取的方法,網上有很多,我這裡就不說了,各位可以自行百度;第三種方法也很簡單,只要用一個flag來判斷就行,當獲取到改變事件時,flag置為true,然後把對應View的引用置為null,flag置為false,最後重新New對應的View。

接下來我說一下第二種方法,其實結束自己的應用也有很多種方法。比如:殺死自己的程序,finsh自己的Activity等等,我用的是殺死自己程序的方法。

步驟

  1. 捕獲字型改變和顯示大小改變的事件
    在AndroidManifest.xml的application裡面設定android:configChanges="fontScale|screenSize"

  2. 對獲取的事件進行處理
    在繼承Application的類裡面加入如下程式碼:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(0);
    }

這樣每次字型大小或者顯示大小改變的時候,就能殺死當前應用的程序,再進入自己的應用就會重新繪製,不會再有顯示異常的問題。