Android8.0 新SupportLibrary26、27功能及变化介绍
新的SupportLibrary
随着Android Oreo 发布了新的Support库
特性
- 8.0 对应 SupportLibrary26
- 8.1 对应 SupportLibrary27
- 它们最低支持的API为14(即支持4.0及以后的设备)
- 删除了1400个方法
- 将30个类,400个方法标为弃用
使用方式
repositories{ google() } dependencies{ compile com.android.support:aappcompat.v7:26.0.1 }
新功能
以下内容为 Oreo 提供的新功能,在低版本Android 设备上可以通过新的Support库来使用
XML中的字体
字体可以作为一种新的资源类型
使用方式
1. 在res文件夹下创建font文件夹 2. 将font类型文件(如dacing.ttf)拷贝到此目录下 3. 或者将多个font文件创建成一个font族(font family) 4. TextView 通过设置属性使用:android:fontFamily=“@font/lalala” Style 通过设置属性使用:<item name="android:fontFamily">@font/lobster</item> 如果使用Support 库,需要使用对应的namespace 在代码中获取字体资源:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
font family 举例
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>
字体可下载
我们可以选择不将字体资源打包入apk,而是通过下载获得,这样做的好处有:
- 减小apk体积
- 提高应用安装成功率
- 多个app可以共享一份相同的字体资源
原理:App通过fontContract向对应的FontProvider(如 google play)请求对应字体资源,如图
Emoji表情符号兼容库
原理:使用表情符号兼容库,当最新的表情符号在当前系统不支持时,通过兼容库去加载新的表情符号,如图
使用:
- 配置: 下载配置(类似于字体)或者捆绑配置(会增加 apk 7MB)
- 在onCreate 中初始化
- 用EmojiTextView代替TextView,用EmojiButton代替Button等
TextView自动调整文字大小
Support26库中提供了自动调整文字大小的TextView,android.support.v4.widget 包中的 TextViewCompat功能与此类似,如果需要支持4.0以下设备,可以考虑使用v4包
注意:如果使用自动调整文字大小,不建议宽或者高设置为wrap_content,这会导致意想不到的错误
使用方式有三个方面(如果是support,注意使用namespace):
- TextView默认是开启自动调整文字大小的
我们可以在代码中通过setAutoSizeTextTypeWithDefaults(AUTO_SIZE_TEXT_TYPE_NONE)来关闭,这个属性也可以在xml文件中设置 <?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
- 通过最大最小值、粒度来控制自动调整大小的行为细节
在代码中动态设置 setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) xml文件中设置 <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" />
- 我们也可以指定调整大小的具体值
在代码中动态设置 setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit) xml文件中设置,首先在res/values/arrays.xmlres/values/arrays.xml中创建数组 <resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources> 引用此数组 <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizePresetSizes="@array/autosize_text_sizes" />
VectorDrawableCompat
增加了android:filltype属性,以增加对svg中fill—rule的支持
AnimatedVectorDrawableCompat
增加了基于xml的路径变形及插值
基于物理的动画(DynamicAnimation
和MaterialDesigh思想类似,模拟真实世界中的动画效果,目前有两种基于物理的动画
- FlingAnimation(模拟摩擦,有一个初始速度,逐渐减慢至0)
FlingAnimation(view,DynamicAnimation.TRANSLATION_Y).apply{ setStartVelocity(5000f); //pixels per second friction = 1.5f; //摩擦系数 start(); }
- SpringAnimation(模拟弹簧,可以设置阻尼比,刚度,最后停下的位置等)
SpringAnimation(view,SpringANimation.TRANSLATION.Y,0f).apply{ spring.apply{ dampingRatio = SpringForce.DAMPING>RATIO>LOW>BOUNCY; stiffness = SpringForce.STIFFNESS_LOW; finalPosition = 0f; } setStartVelocity(20000f); start(); }
#完
附Oreo及Android Studio部分功能讲解视频
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20