zoukankan      html  css  js  c++  java
  • Android 开发 VectorDrawable 矢量图 (六)用一张矢量图实现按下改变颜色的效果

    前言

      在以前我们实现一个pressed 按下改变图标的颜色或者图标背景的颜色时,我们需要2张位图图片。在xml里写 <item android:state_pressed="false" ...> 来实现。这种方式让app需要保存更多的图片造成更大的app。在有矢量图后我们就可以使用一个矢量图实现这种效果了。

    实现

      1.搞一张矢量图

      2.在res目录创建color文件夹

      3.在color文件夹里创建一个xml文件

      4.编辑xml文件内容

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:color="#000000"/>
        <item android:color="#FFFFFF"/>
        
    </selector>

    请注意,这里有一个大坑! 就是 <item android:color="#FFFFFF"/> 这个属性一定要在最后面,你可以添加更多的其他属性比如 android:state_selected 属性。但是 <item android:color="#FFFFFF"/>  这个属性一定要有且一定要最后。

    如果不是,你会发现矢量图不会有默认颜色,自然也不会有按下改变颜色的效果。

      5.将这个color配置到矢量图中

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="50dp"
        android:height="37.778dp"
        android:viewportWidth="50"
        android:viewportHeight="37.778">
      <path
          android:pathData="M47.7769,27.7404C47.8981,27.7404 48.0004,27.6375 48.0004,27.5157L48.0004,10.2618C48.0004,10.14 47.8981,10.0371 47.7769,10.0371C47.7531,10.0371 47.7246,10.0403 47.6782,10.0635L41.2004,13.3024L41.2004,24.4751L47.6782,27.714C47.7246,27.7372 47.753,27.7404 47.7768,27.7404L47.7768,27.7404L47.7769,27.7404M47.7769,29.7404C47.4332,29.7404 47.0991,29.6605 46.7838,29.5029L39.2004,25.7112L39.2004,12.0663L46.7838,8.2746C47.099,8.117 47.4332,8.0371 47.7769,8.0371C49.003,8.0371 50.0004,9.0351 50.0004,10.2618L50.0004,27.5157C50.0004,28.7424 49.003,29.7404 47.7769,29.7404Z"
          android:fillColor="#ff7a0d"
          android:strokeColor="#00000000"/>
      <path
          android:strokeWidth="1"
          android:pathData="M4.333,3.333L36.777,3.333a1,1 0,0 1,1 1L37.777,33.444a1,1 0,0 1,-1 1L4.333,34.444a1,1 0,0 1,-1 -1L3.333,4.333A1,1 0,0 1,4.333 3.333Z"
          android:fillColor="@color/pressed_yellow_to_black_color"
          android:strokeColor="#fff"/>
      <path
          android:pathData="M4,1L37.111,1A3,3 0,0 1,40.111 4L40.111,33.778A3,3 0,0 1,37.111 36.778L4,36.778A3,3 0,0 1,1 33.778L1,4A3,3 0,0 1,4 1z"
          android:strokeWidth="2"
          android:fillColor="#00000000"
          android:strokeColor="#ff7a0d"/>
      <path
          android:pathData="M26.187,29.442h0a4.414,4.414 0,0 1,-0.653 -0.048,16.77 16.77,0 0,1 -9.915,-5.016A16.8,16.8 0,0 1,10.603 14.454a4.372,4.372 0,1 1,6.686 3.033,6.631 6.631,0 0,0 1.85,3.371 6.63,6.63 0,0 0,3.371 1.85,4.37 4.37,0 1,1 3.675,6.734Z"
          android:strokeWidth="0.5"
          android:fillColor="#fff"
          android:strokeColor="#ff7b0d"/>
    </vector>

      在第二个path上,在fillColor设置这个color

      6.按下改变颜色的效果图

    End

  • 相关阅读:
    C语言关键字
    C语言返回值
    五、Vue:使用axios库进行get和post、用拦截器对请求和响应进行预处理、Mock(数据模拟)
    四、Vue过渡与动画、过渡css类名、自定义指定、过滤器
    三、深入Vue组件——Vue插槽slot、动态组件
    二、Vue组件(component):组件的相互引用、通过props实现父子组件互传值
    一、Vue环境搭建及基础用法
    Django(十三)状态保持 —— cookie与session+ajax异步请求+session记住登录状态+cookie记住登录名密码
    Django(十二)视图--利用jquery从后台发送ajax请求并处理、ajax登录案例
    Django(十一)视图详解:基本使用、登录实例、HttpReqeust对象、HttpResponse对象
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/12989264.html
Copyright © 2011-2022 走看看