稀土 2018-01-04
随着Android Oreo 发布了新的Support库
repositories{
google()
}
dependencies{
compile com.android.support:aappcompat.v7:26.0.1
}以下内容为 Oreo 提供的新功能,在低版本Android 设备上可以通过新的Support库来使用
字体可以作为一种新的资源类型
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,而是通过下载获得,这样做的好处有:
原理:App通过fontContract向对应的FontProvider(如 google play)请求对应字体资源,如图
原理:使用表情符号兼容库,当最新的表情符号在当前系统不支持时,通过兼容库去加载新的表情符号,如图
使用:
Support26库中提供了自动调整文字大小的TextView,android.support.v4.widget 包中的 TextViewCompat功能与此类似,如果需要支持4.0以下设备,可以考虑使用v4包
注意:如果使用自动调整文字大小,不建议宽或者高设置为wrap_content,这会导致意想不到的错误
使用方式有三个方面(如果是support,注意使用namespace):
我们可以在代码中通过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" />增加了android:filltype属性,以增加对svg中fill—rule的支持
增加了基于xml的路径变形及插值
和MaterialDesigh思想类似,模拟真实世界中的动画效果,目前有两种基于物理的动画
FlingAnimation(view,DynamicAnimation.TRANSLATION_Y).apply{
setStartVelocity(5000f); //pixels per second
friction = 1.5f; //摩擦系数
start();
}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部分功能讲解视频
使用 CSS3,网页设计师可以使用他/她喜欢的任何字体。只需简单的将字体文件包含在网站中,它会自动下载给需要的用户。在新的 @font-face 规则中,您必须首先定义字体的名称,然后指向该字体文件。