Vector Drawable(矢量图形)和黑夜白昼主题的设置

Posted 和平world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vector Drawable(矢量图形)和黑夜白昼主题的设置相关的知识,希望对你有一定的参考价值。

  • 矢量图

先创建一个Vector Drawable

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="500"
    android:viewportHeight="500"
    android:width="500px"
    android:height="500px">
    <group android:name="android">
        <path
            android:name="head"
            android:fillColor="#9FBF3B"
            android:pathData="M301.314,83.298l20.159-29.272c1.197-1.74,0.899-4.024-0.666-5.104c-1.563-1.074-3.805-0.543-4.993,1.199L294.863,80.53c-13.807-5.439-29.139-8.47-45.299-8.47c-16.16,0-31.496,3.028-45.302,8.47l-20.948-30.41c-1.201-1.74-3.439-2.273-5.003-1.199c-1.564,1.077-1.861,3.362-0.664,5.104l20.166,29.272c-32.063,14.916-54.548,43.26-57.413,76.34h218.316C355.861,126.557,333.375,98.214,301.314,83.298" />
        <path
            android:name="left_eye"
            android:fillColor="#FFFFFF"
            android:pathData="M203.956,129.438c-6.673,0-12.08-5.407-12.08-12.079c0-6.671,5.404-12.08,12.08-12.08c6.668,0,12.073,5.407,12.073,12.08C216.03,124.03,210.624,129.438,203.956,129.438" />
        <path
            android:name="right_eye"
            android:fillColor="#FFFFFF"
            android:pathData="M295.161,129.438c-6.668,0-12.074-5.407-12.074-12.079c0-6.673,5.406-12.08,12.074-12.08c6.675,0,12.079,5.409,12.079,12.08C307.24,124.03,301.834,129.438,295.161,129.438" />
        <path
            android:name="left_arm"
            android:fillColor="#9FBF3B"
            android:pathData="M126.383,297.598c0,13.45-10.904,24.354-24.355,24.354l0,0c-13.45,0-24.354-10.904-24.354-24.354V199.09c0-13.45,10.904-24.354,24.354-24.354l0,0c13.451,0,24.355,10.904,24.355,24.354V297.598z" />
        <path
            android:name="body"
            android:fillColor="#9FBF3B"
            android:pathData="M140.396,175.489v177.915c0,10.566,8.566,19.133,19.135,19.133h22.633v54.744c0,13.451,10.903,24.354,24.354,24.354c13.451,0,24.355-10.903,24.355-24.354v-54.744h37.371v54.744c0,13.451,10.902,24.354,24.354,24.354s24.354-10.903,24.354-24.354v-54.744h22.633c10.569,0,19.137-8.562,19.137-19.133V175.489H140.396z" />
        <path
            android:name="right_arm"
            android:fillColor="#9FBF3B"
            android:pathData="M372.734,297.598c0,13.45,10.903,24.354,24.354,24.354l0,0c13.45,0,24.354-10.904,24.354-24.354V199.09c0-13.45-10.904-24.354-24.354-24.354l0,0c-13.451,0-24.354,10.904-24.354,24.354V297.598z" />
    </group>
</vector></span>


在布局文件中,我们这样使用Vector Drawable

<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".VectorDrawablesActivity">
 
    <ImageView
        android:id="@+id/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/android"
        android:contentDescription="@null" />
 
</RelativeLayout></span>


这样的话,矢量图就在我们APP中用到了。这个矢量图形渲染是非常好,不会因为图形的变大或者缩小而失真。

  • 黑夜白昼主题
  
API 14日之前 DayNight 主题及其后裔 DayNight.NoActionBar, DayNight。 DarkActionBar DayNight.Dialog, 等成为他们光等价物。 但在API 14和更高的设备, 这个主题使应用程序可以轻松地支持一个 光 和 黑暗 主题 ,有效地从光主题切换到一个黑暗的主题基于是否“晚上”。
默认情况下,是否“夜”将匹配(从系统价值 UiModeManager.getNightMode() ),但是您可以覆盖该值的方法AppCompatDelegate 。 你可以设置默认您的整个应用程序与静态(直到进程重启)AppCompatDelegate.setDefaultNightMode() 方法或检索一个AppCompatDelegate通过 getDelegate() 和使用setLocalNightMode() 只改变当前 活动 或 对话框。
当使用 AppCompatDelegate.MODE_NIGHT_AUTO, 一天的时间和你的最后的位置(如果你的应用位置的权限)用于昼夜之间自动切换, MODE_NIGHT_NO 和 MODE_NIGHT_YES 部队的主题“从不”或“始终使用一个黑暗的主题,分别。
关键是你彻底测试自己的应用程序时使用 DayNight 主题是硬编码的颜色可以很容易地使为不可读文字或图标。 如果您使用的是标准 TextAppearance.AppCompat 风格为你的文本或颜色从您的主题等 android:textColorPrimary ,你会发现这些自动更新给你。
然而,如果你想定制专为夜间模式,任何资源AppCompat重用 晚上 资源限定符文件夹 ,可以定制你需要的每一种资源。 请考虑使用标准的颜色或利用着色支持在AppCompat支持这种模式更加容易。

以上是关于Vector Drawable(矢量图形)和黑夜白昼主题的设置的主要内容,如果未能解决你的问题,请参考以下文章

在 Vector Drawable 中翻转 Drawable 图像

Android drawable-v21文件夹下xml文件,手机版本不兼容

Android Animated Vector Drawable 无法在 xml 中循环

矢量化的HTML5拓扑图形组件设计

Android Compose - 如何平铺/重复位图/矢量?

在Android中使用矢量drawable和一组.png作为图标有啥区别?