Android中类与Fragment的UI优化是否影响性能?小屏幕适配方案咨询
当前方案的性能影响
你现在的代码完全不会对性能造成明显影响——只是一次布尔资源读取+字体大小设置操作,在500行的Fragment代码里这点开销可以忽略不计,不用为此担忧。
更优的实现方案(Android最佳实践)
1. 利用资源系统适配(推荐)
完全无需编写Java/Kotlin代码,通过Android原生的资源文件夹区分不同设备配置:
- 在
res/values/dimens.xml中定义平板/大屏默认字体大小:<dimen name="toggle_button_text_size">18sp</dimen> - 创建对应小屏竖屏的资源目录
res/values-sw360dp-port(可根据你的isSmallPortrait对应的实际尺寸调整),在该目录下的dimens.xml中定义小屏字体大小:<dimen name="toggle_button_text_size">15sp</dimen> - 最后在布局XML中直接引用该尺寸:
<ToggleButton ... android:textSize="@dimen/toggle_button_text_size" />
这种方式完全遵循Android的资源适配设计,系统会自动根据设备加载对应尺寸,代码无侵入,维护成本更低。
2. 布局结构优化(无需修改字体)
如果不想调整字体大小,也可以从布局逻辑入手解决重叠问题:
- 给涉事TextView添加
android:ellipsize="end"和android:maxLines="1",让过长文字自动省略,避免挤压ToggleButton空间 - 若使用
ConstraintLayout,可通过设置横向约束的app:layout_constraintHorizontal_bias分配空间,或给两个组件设置layout_constraintWidth_percent定义占比 - 若使用
LinearLayout,可给TextView设置android:layout_weight,限制其最大宽度,同时让ToggleButton保留足够空间
3. 代码层面的规范写法(替代自定义布尔值)
如果一定要用代码判断,建议直接通过系统Configuration获取屏幕信息,比自定义布尔资源更通用:
Configuration config = getResources().getConfiguration(); boolean isSmallPortrait = config.screenWidthDp < 600 && config.orientation == Configuration.ORIENTATION_PORTRAIT; if (isSmallPortrait) { textDisplayLastViewed.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); }
内容的提问来源于stack exchange,提问作者Dilum Jayasinghe
相关产品推荐
相关产品推荐

