介绍
这篇文章将为大家详细讲解有关Android动态调整应用字体大小的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求。
Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信。本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置
字体大小变化是由<代码> android.content.res.Configuration.class> 代码类中的fontScale控制的,因此,若想我们的应用字体大小变化不随系统变化而是由我们自主控制,就需要我们修改fontScale为我们自己设置的数值。由于Android系统更新的问题,可能您无法通过网上的答案来实现您的目的。根据目前笔者的测试情况,我们需要从活动层面进行处理才能自主控制字体大小变化,为了方便统一处理,将控制逻辑放在了应用程序中、下面贴出实例图片及代码(由于笔者水平实在是低,不会做滑动条来控制字体大小,因此,示例中使用了两个TextView来点击控制字体大小变化,哈哈哈~)
public class MainApplication extends Application implements Application.ActivityLifecycleCallbacks { ,private ListactivityList; ,private float  fontScale; ,private SharedPreferences 偏好; ,private static  MainApplication mainApplication; ,@Override ,public void  onCreate (), { super.onCreate才能(); ,,init (); ,} ,private void  init (), { 时间=mainApplication 才能;; 时间=preferences 才能;PreferenceManager.getDefaultSharedPreferences(这个); 时间=fontScale 才能;getFontScale (); registerActivityLifecycleCallbacks才能(这个); ,} ,public static float  getFontScale (), { float 才能;fontScale =, 1.0 f; if 才能;(mainApplication !=, null), { ,,fontScale =, mainApplication.preferences.getFloat (“fontScale",, 1.0度); ,,} return 才能;fontScale; ,} ,@Override ,public void  onActivityCreated (Activity 活动,Bundle savedInstanceState), { 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(配置,resources.getDisplayMetrics ()); ,,} activityList.add才能(活动); ,} ,@Override ,public void  onActivityStarted (Activity 活动),{ ,} ,@Override ,public void  onActivityResumed (Activity 活动),{ ,} ,@Override ,public void  onActivityPaused (Activity 活动),{ ,} ,@Override ,public void  onActivityStopped (Activity 活动),{ ,} ,@Override ,public void  onActivitySaveInstanceState (Activity 活动,Bundle outState), { ,} ,@Override ,public void  onActivityDestroyed (Activity 活动),{ if 才能;(activityList !=, null), { ,,activityList.remove(活动); ,,} ,} ,public static  void setAppFontSize (float fontScale), { if 才能;(mainApplication !=, null), { ,,List Android动态调整应用字体大小的案例