稀土 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 规则中,您必须首先定义字体的名称,然后指向该字体文件。