2019-11-28 -今日头条屏幕适配方案,theme属性定制
2019-11-28 本文已影响0人
ambe_gzy
-
今日头条的屏幕适配
需提前掌握名称含义
名称 | 含义 |
---|---|
px | 像素,1px代表屏幕上的一个像素点 |
dp | 设备无关像素 |
dpi | 每英寸像素数量,计算公式自行百度 |
density | 用于px与dp的转化 px=density*dp、density = dpi/160,为什么除以160,自行百度 |
-
今日头条的适配实现
核心思想:通过修改density使得不同尺寸的手机(即不同px)计算得出的dp与设计图的一致,以实现在各尺寸上的手机的布局均能够接近设计图的布局
不足:因为修改的是density,可能会引起一些第三方库的页面和系统组件布局改变,可能会引起文字大小的改变。
解决方案:已有现成的库,能针对单独的activity改变其适配标准(如将某个页面替换回默认的density等)。
github:https://github.com/JessYanCoding/AndroidAutoSize
参考:
Android开发中dp、dpi、px的区别(转) - 乐学习 - 博客园
骚年你的屏幕适配方式该升级了!-SmallestWidth 限定符适配方案
-
用好android:theme属性,定制主题样式
-
提问
1)什么时候应该使用Theme.AppCompat vs ThemeOverlay.AppCompat?
Theme.AppCompat用于为整个应用程序设置全局主题。ThemeOverlay.AppCompat用于覆盖(或“覆盖”)特定视图的主题,特别是工具栏。参考1
2)待添加.. -
你应该熟悉的属性
属性 | 使用对象 | 作用 |
---|---|---|
colorPrimaryDark | StatusBar 状态栏 | 状态栏的背景色 |
windowBackground | window | 页面背景色 |
navigationBarColor | 底部导航栏 | 底部导航栏颜色 |
colorPrimary | ActionBar | Appbar 的背景色,通常也是app的主题色调 |
textColorPrimary | Toobar/EditText/Spinner | Toolbar上的title颜色,EditText上的textcolor, |
colorAccent | EditText/CheckBox/RadioButton/SwitchCompat/Spinner | 各个控制控件的选中颜色 |
colorControlNormal | CheckBox/RadioButton/Spinner | 各个控制控件的默认颜色 |
colorControlActivated | colorAccent 的替代者 | 比如对于 CheckBox 和 RadioButton 的 checked 状态,colorControlActivated 属性会覆盖 colorAccent 属性的对应颜色 |
colorControlHighlight | 所有可点击的view | 所有可点击 Views 触摸状态下的 Ripple(涟漪)效果。仅作用于 Lollipop (5.0)及更高版本。 |
colorButtonNormal | button | Button normal 状态下的背景色。注意,这种设置与 Button 的 android:background 属性改变背景色不同的是,前者在 Lollipop 及更高版本上会让 Button 依旧保持阴影和 Ripple 触摸效果。 |
- 资料
github theme主题属性含义参考: Android Lollipop Widget Tinting Guide
Android Theme.AppCompat 中,你应该熟悉的颜色属性
Android Lollipop Widget Tinting Guide
-
带背景颜色的水波纹点击效果
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/gray"> <!--波纹颜色-->
<item>
<selector>
<!-- 未点击背景图-->
<item
android:drawable="@drawable/normal_bg"
android:state_pressed="false" />
<!-- 点击背景图-->
<item
android:drawable="@drawable/select_bg"
android:state_pressed="true" />
</selector>
</item>
</ripple>
今天的收获
-
theme属性的使用,通过修改theme的属性值修改的background的值、TextColor、toolbar的背景及其title的颜色等;
修改后的属性 -
看了一些屏幕适配的文章,对屏幕适配有了更深的了解,以后在UI界面的开发会考虑不同机型可能出现的问题;
-
发现简书能用markdown语法写文章