有声图库安卓版(有声图片制作app)

太平洋在线下载 39 4

  Google IO 2017已于上周结束,周末看了下相关视频,发现这届 IO 大会上和 Android 开发相关的干货不少。关注 IO 大会的应该已经通过各种新闻了解了谷歌发布的主要产品以及重要特性了。作为一个 App 开发者,我更关注技术细节,有时间分别介绍下其中作为一个普通 Android App 开发者需要关注的内容。 今天先来介绍要一下 广大开发者都离不开的 Support 库的变化。

  在 Google IO 2017 上 Android 团队发布了 v26 beta1版本,v26 正式版本会和 Android O 一起发布,估计还需要几个月呢。 v26 beta1 中有如下几点值得关注:

Support 库在 Google Maven 库中可用了。以后使用新的 Support 库不用先通过 SDK Manager 下载超级大的 Support 库压缩包了,在 build.gradle 文件中添加如下 Maven 库即可。

  allprojects { repositories { jcenter() maven { url "https://maven.google.com" } }}

Support 库的最小支持版本从 v4 提升到 v14了,如果你要使用 v26 版本的 Support 库则你的应用 minSdkVersion 的值需要为 14+。

在 XML 布局文件中可以使用在线字体了,并且谷歌提供了很多字体库可以直接使用另外 Emoji 表情也是特殊的字体,现在 Emoji 也同样可以动态更新了,当有新的 Emoji 表情发布的时候,你的手机不用升级系统也可以显示了。(注意:由于字体服务器在谷歌哪里,不知道国内如何自动下载这些需要的字体,估计这个服务在国内一样无法使用。)

TextView 大小根据 TextView 尺寸和内容的长度自动调整字体大小。

基于物理特性的动画效果框架,目前实现了 SpringAnimation 和 FlingAnimation 分别代表 弹簧特性和快速滑动特性的物理自然动画效果。

  下面来重点看看 自动调整 TextView 字体大小的功能如何使用,后面会详细介绍基于物理动画框架如何使用,由于 字体服务器的问题,在国内以及国内的第三方 Rom 估计都没法使用这个功能,所以关于可下载字体的具体使用方法暂时就不做详细介绍了,如果你对这个字体功能感兴趣可以参考这里。

  TextView 自动调整大小

  TextView 自动调整大小这个功能最先出现在 Android Wear 上,在 Android Wear 中有个 ActionLabel类用来显示一个功能按钮的文本描述,当有多个功能按钮的时候,并且每个按钮的文本描述长度不一样的时候,为了保持功能按钮行数一样,ActionLabel 会自动调整 按钮文字的大小。

  然后在 Android o 中这个功能出现在 TextView 中了。而 Android 团队认为这个功能在之前的版本也应该支持,所以在 Support 库中也实现了这个功能支持之前版本的系统使用。

  在 Support 库的 android.support.v4.widget 包中有一个 TextViewCompat 类来访问调整字体大小的相关函数。

  设置自动调整的字体大小尺寸

  有三种方式来设置字体大小尺寸信息:

默认值

粒度控制

预设大小信息

默认值

  默认值 TextView 会根据其本身所指定的长宽来均匀调整字体大小。 比如 TextView 字体大小为 16px 的时候所占用的长宽为 100px X 20px,如果指定 TextView 的长宽为 200px X 20px 则 TextView 的大小会近似放大一倍来充满整个 TextView 的空间。

在代码中调用函数 setAutoSizeTextTypeWithDefaults(@AutoSizeTextType int autoSizeTextType) 并指定参数为 AUTO_SIZE_TEXT_TYPE_UNIFORM来设置默认值。如果你不想启用自动调整字体大小的功能,则可以设置参数为 AUTO_SIZE_TEXT_TYPE_NONE.

  注意:默认值开启的时候,字体放大缩小的范围为 minTextSize = 12sp, maxTextSize = 112sp 并且granularity = 1px。也就是说最小字体为 12sp 最大字体为 112sp 并且字体大小是按照 1px 来调整的。

  如果是使用 Support 库则使用 TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)函数,参数为 TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE 或者 TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM。

在 XML 中可以使用 autoSizeTextType 属性来设置

<TextView

  android:layout_width="wrap_content"

有声图库安卓版(有声图片制作app)-第1张图片-太平洋在线下载

  android:layout_height="wrap_content"

  android:autoSizeTextType="uniform"

  />

  如果使用 Support 库则可以使用 app 命名空间定义的属性:

  <LinearLayout

  xmlns:android="https://schemas.android.com/apk/res/android"

  xmlns:app="https://schemas.android.com/apk/res-auto"

  android:layout_width="match_parent"

  android:layout_height="wrap_content">

  <TextView

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  app:autoSizeTextType="uniform"

  />

  /> 粒度控制

  可以定义字体调整的最大值和最小值以及每次字体调整的步长。在调整字体大小的时候,系统会根据最大值和最小值以及步长来调整字体大小并选择一个最佳字体大小。

通过函数 setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) 来指定字体大小数值。unit 为 TypedValue 定义的尺寸类型。

  Support 库使用 TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) 函数。

在 XML 布局文件中使用如下属性:

  autoSizeTextType 的值为 uniform 或者 none。默认值为 none。 autoSizeMinTextSize、 autoSizeMaxTextSize、 autoSizeStepGranularity 的值为 dimension 值。

<TextView

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:autoSizeTextType="uniform"

  android:autoSizeMinTextSize="12sp"

  android:autoSizeMaxTextSize="100sp"

  android:autoSizeStepGranularity="2sp"

  />

  在 Support 库中使用方式:

  <LinearLayout

  xmlns:android="https://schemas.android.com/apk/res/android"

  xmlns:app="https://schemas.android.com/apk/res-auto"

  android:layout_width="match_parent"

  android:layout_height="wrap_content">

  <TextView

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  app:autoSizeTextType="uniform"

  app:autoSizeMinTextSize="12sp"

  app:autoSizeMaxTextSize="100sp"

  app:autoSizeStepGranularity="2sp"

  />

  </LinearLayout>预设值

  如果上面两种方式还满足不了你的要求,你可以预设一些值,系统从中挑选最佳字体大小。

在代码中调用 TextView 的 setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit) 函数来设置预设字体大小集合。

  Support 库调用 TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit) 函数。

在 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="wrap_content"

  android:layout_height="wrap_content"

  android:autoSizeTextType="uniform"

  android:autoSizePresetSizes="@array/autosize_text_sizes"

  />

  在 Support 库中通过如下方式:

  <LinearLayout

  xmlns:android="https://schemas.android.com/apk/res/android"

  xmlns:app="https://schemas.android.com/apk/res-auto"

  android:layout_width="match_parent"

  android:layout_height="wrap_content">

  <TextView

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  app:autoSizeTextType="uniform"

  app:autoSizePresetSizes="@array/autosize_text_sizes"

  />

  </LinearLayout>示例

  下图是一个示例截图,该截图的布局文件代码如下:

  

  <RelativeLayoutxmlns:android="https://schemas.android.com/apk/res/android"

  xmlns:app="https://schemas.android.com/apk/res-auto"

  android:id="@+id/activity_main"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:paddingBottom="@dimen/activity_vertical_margin"

  android:paddingLeft="@dimen/activity_horizontal_margin"

  android:paddingRight="@dimen/activity_horizontal_margin"

  android:paddingTop="@dimen/activity_vertical_margin">

  <TextView

  android:id="@+id/hello_textview"

  android:layout_width="100dp"

  android:layout_height="40dp"

  android:layout_margin="4dp"

  android:background="#77FF0000"

  android:text="100DPX40DP尺寸的TextView"

  app:autoSizeTextType="uniform"/>

  <TextView

  android:id="@+id/text1"

  android:layout_width="100dp"

有声图库安卓版(有声图片制作app)-第2张图片-太平洋在线下载

  android:layout_height="80dp"

  android:layout_margin="4dp"

  android:layout_toRightOf="@id/hello_textview"

  android:background="#77FF0000"

  android:text="100DPX80DP尺寸的TextView"

  app:autoSizeTextType="uniform"/>

  <TextView

  android:id="@+id/text11"

  android:layout_width="100dp"

  android:layout_height="120dp"

  android:layout_margin="4dp"

  android:layout_toRightOf="@id/text1"

  android:background="#77FF0000"

  android:text="100DPX120DP尺寸的TextView"

  app:autoSizeTextType="uniform"/>

  <TextView

  android:id="@+id/text2"

  android:layout_width="200dp"

  android:layout_height="80dp"

  android:layout_below="@id/text11"

  android:layout_margin="4dp"

  android:background="#77FF0000"

  android:text="200DPX80DP尺寸的TextView"

  app:autoSizeTextType="uniform"/>

  <TextView

  android:id="@+id/text21"

  android:layout_width="200dp"

  android:layout_height="80dp"

  android:layout_below="@id/text11"

  android:layout_margin="4dp"

  android:layout_toRightOf="@id/text2"

  android:background="#77FF0000"

  android:text="200DPX80DP尺寸的TextView"

  app:autoSizeMaxTextSize="18sp"

  app:autoSizeMinTextSize="10sp"

  app:autoSizeStepGranularity="2sp"

  app:autoSizeTextType="uniform"/>

  <TextView

  android:id="@+id/text3"

  android:layout_width="200dp"

  android:layout_height="80dp"

  android:layout_below="@id/text21"

  android:layout_margin="4dp"

  android:layout_toRightOf="@id/text2"

  android:background="#77FF0000"

  android:text="18sp的TextView"

  android:textSize="18sp"/>

  </RelativeLayout>

  通过上面的截图和布局文件代码可以很直观的了解 TextView 自动调整字体大小的功能以及如何使用。

  关于 Android Support 库的发展历史请参考这里 https://blog.chengyunfeng.com/?p=1047。

标签: 有声图库安卓版

抱歉,评论功能暂时关闭!