1. 程式人生 > >Android:調整控制應用內字型大小

Android:調整控制應用內字型大小

最近有需求仿微信控制字型大小,想了半天查了很多資料,想先把功能實現了再說

public class MyApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks{//實現該介面

    private static MyApplication application;
    private List<Activity> activityList;
    private float fontScale;

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        fontScale = getFontScale();
        //註冊
        registerActivityLifecycleCallbacks(this);
    }


    public static Context getContext() {
        return application.getApplicationContext();
    }

    //獲取設定字型大小值
    public static float getFontScale() {
        float fontScale = 1.0f;
        if (application != null) {
            fontScale = (float) SharedPreferencesUtils.get(getContext(),"fontScale", 1.0f);
        }
        return fontScale;
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {
        if(activityList == null){
            activityList = new ArrayList<>();
        }
        // 禁止字型大小隨系統設定變化
        Resources resources = activity.getResources();
        if (resources != null && resources.getConfiguration().fontScale != fontScale) {
            android.content.res.Configuration configuration = resources.getConfiguration();
            configuration.fontScale = fontScale;
            //設定大小
            resources.updateConfiguration(configuration, resources.getDisplayMetrics());
        }
        activityList.add(activity);
    }

    @Override
    public void onActivityStarted(Activity activity) {

    }

    @Override
    public void onActivityResumed(Activity activity) {

    }

    @Override
    public void onActivityPaused(Activity activity) {

    }

    @Override
    public void onActivityStopped(Activity activity) {

    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        if(activityList != null){
            activityList.remove(activity);
        }
    }
    
    //呼叫該方法即可
    public static void setAppFontSize(float fontScale,Activity context) {
        if (application != null) {
            List<Activity> activityList = application.activityList;
            if (activityList != null) {
                for (Activity activity : activityList) {
                    //當前頁面設定重啟會閃黑屏
                    if (activity instanceof SetActivity) {
                        continue;
                    }
                    Resources resources = activity.getResources();
                    if (resources != null) {
                        android.content.res.Configuration configuration = resources.getConfiguration();
                        configuration.fontScale = fontScale;
                        resources.updateConfiguration(configuration, resources.getDisplayMetrics());
                        activity.recreate();
                        if (fontScale != application.fontScale) {
                            application.fontScale = fontScale;
                               //儲存設定後的字型大小
                            SharedPreferencesUtils.put(getContext(),"fontScale", fontScale);
                        }
                    }
                }
            }
        }
    }
}

以上是application中的用法,先implements Application.ActivityLifecycleCallbacks,註冊後獲取儲存的字型大小,然後進行設定即可

調整字型大小的控制元件:點選下載

相關推薦

Android調整控制應用字型大小

最近有需求仿微信控制字型大小,想了半天查了很多資料,想先把功能實現了再說 public class MyApplication extends MultiDexApplication implements Application.ActivityLifecycleCallb

react navigation 高階 任意控制元件獲取 navigation 屬性

https://reactnavigation.org/docs/en/connecting-navigation-prop.html   Access the navigation prop from any component withNavigation is

Android 輸出一個字串,不管字型大小如何修改,始終螢幕水平居中

本文指在沒有使用控制元件的的情況下 //獲取到螢幕的寬度 WindowManager wm = (WindowManager) getContext() .getSystemService(Conte

如何快捷鍵調整pycharm的顯示字型大小

File->Settings->Keymap 在搜尋框搜尋increase 點選Increase Font Size(增大字型)右鍵選擇Add Mouse Shortcut 然後按Ctrl並且滑鼠滾輪往上滾。 同理可以設定減小字型【設定減小字型

android 動態改變控制元件位置和大小

動態改變控制元件位置的方法: setPadding()的方法更改佈局位置。 如我要把Imageview下移200px:             ImageView.setPadding( ImageView.getPaddingLeft(),  ImageView.get

android 怎麼匯入和應用特殊字型在app專案

隨著市面上的app應用越來越豐富,一款效能優越且讓人眼前一亮的app也是越來越少了。一款好的app不僅要介面精美而且要符合大眾需求。 介面上的字型是讓使用者第一眼就能感受到開發者心意的直接表現。但是android studio的自帶字型已經不能滿足使用者得需求

mfc listcontrol控制元件改變字型大小

LOGFONT   logfont;//最好弄成類成員,全域性變數,靜態成員       CFont   *pfont1   =   m_List.GetFont();       pfont1->GetLogFont(   &logfont   );       logfont.lfHeigh

android 更改TextView中任意位置字型大小和顏色

這裡介紹兩種方法,一種是Spannable,一種是Html.fromHtml(通過html標籤來改變),實際中看您使用哪種方便選擇使用即可 1.Html.fromHtml的使用 TextView t

android 一個 textview 設定不同的字型大小和顏色

在實際應用中,需要將一個字串已不同的顏色,字型顯示出來。當然完全可以通過不同textview拼接出來。也可以通過一個textview來展示。 步驟如下:      1.定義不同style . 不妨如下定義2個style <style name="s

模式對話方塊中“static text”控制元件的字型大小改變

原文連結:http://blog.csdn.net/yf210yf/article/details/6955283 在對話方塊標頭檔案新增: CStatic m_static;  CFont   font; 在BOOL CYourDlg::OnInitDialog()中新增 m_static.Subcl

筆記Google Play應用購買結算(In-app Billing)的接入

Google Play應用內購買結算(In-app Billing) 最近公司有需求在Google渠道上加入Google支付 ,所以照著Google官方文件,寫了一個Dome,同時也寫這篇部落格記錄一下希望可以幫到有需要的人。 注意:In-app Billing Ve

改變GridView控制元件表頭字型大小、粗細

    GridView控制元件表頭預設是粗體,字型大小也是一定的,如果只在<HeaderStyle />標籤下改變Font-Bold="false" Font-Size="Large",會發現表頭字型仍然是粗體,字型大小並沒有如我們所希望地變大。     另,在

wordpress 調整段落間距和字型大小

預設的wordpress字型大小和段落間距有些不舒服,顯得太大,有必要調整一下。 如圖 在WordPress的控制面板裡面,選擇 外觀-》編輯 直接編輯Style.css,其檔案對應位置是 wordpress/wp-content/themes/[theme name]/s

android 6.0系統應用更新導致的解析包錯誤問題

有時候android會遇到這樣的問題,應用內更新時在其他的版本的手機上可以,但在某些機型上更新下載完apk檔案事會出現解析包錯誤的情況。 在這裡總結一下自己走過的兩個坑。 解決思路: 當遇到這種問題的時候,首先應該檢查的是你下載的apk檔案的大小和你服務端儲存的apk檔案大

android 如何調整System.img 大小,從而多應用

通過excel 開啟: alps/mediatek/build/tools/ptgen/partition_table.xls, 表中的MT6573 no 子表, 修改 11 行/G 列 如預設11行: 11 ANDROID YAFFS2 1500000 DD00000 2

Android系統的桌面圖示文字——調整字型大小、圖示和文字間的間隔

一、適當縮小應用圖示名稱的字型大小,請參考我寫的“Launcher3佈局的佈局配置 ”,先確認裝置使用的哪一個profile標籤,然後適當縮小對應的launcher:iconTextSize 二、圖示和文字間的間隔 1、路徑:packages\apps\Launcher3\src\co\

C#窗體設計自動調整控制元件大小

新建一個C#應用程式,應用程式命名為Change 窗體介面設計如下 雙擊窗體新增Load()函式,函式中新增一下程式碼: private void Form1_Load(object sender, EventArgs e)      

借鑑drawable資料夾,使用dimens控制字型大小、邊距大小。適配Android不同機型,不同螢幕

以前一直是個Get使用者,一直都是伸手黨,最近剛好專案中要用到機型適配,試了很多方法(配置不同layout資料夾,不同的layout檔案等)。但都感覺後期維護工作量巨大,後來從圖片資源適配獲得靈感,使用value不同的dimens檔案,達到適配的效果: 1、建立不同的點陣圖

Android重寫getResources規避使用者調整系統字型大小影響Android螢幕適配

Android螢幕適配一直是一個頭疼的問題。除此之外還要考慮APP在實際應用場景中,使用者千奇百怪的設定,最常見的使用者設定行為就是設定手機的字型大小,比如把字型設定成超大或者超小,這對螢幕適配又帶來額外的問題。解決這個問題的方法之一是通過在MainActivity(主act

GTK進階學習改變控制元件字型大小

改變控制元件字型大小: #include <gtk/gtk.h> /* 功能: 設定控制元件字型大小 * widget: 需要改變字型的控制元件 * size: