日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 子module混淆_Android 矢量图详解

發布時間:2024/9/15 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 子module混淆_Android 矢量图详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方文檔

關于 Vector,在官方開發指南中介紹。本文章是由個人翻譯官方指南然后添加個人理解完成。

由于個人精力有限,多個渠道發布,排版上可能會有問題,如果影響查看,請移步 Android 開發者家園

Vector Drawables 概述

VectorDrawable 和 AnimatedVectorDrawable 是在 Android 5.0 系統中第一次加入,當然我們可以使用 Android 的支持庫,來支持舊的版本,通過 VectorDrawableCompat 和 AnimateVectorDrawableCompat 來實現。

VectorDrawble 是在 xml 文件中定義的矢量圖形。xml 文件中定義的矢量圖形,它是一組帶有顏色信息的點、線和曲線,使用矢量圖主要的優點是圖形可伸縮性。可以在不損失顯示質量的情況下進行縮放,這意味著我們可以在不同的屏幕密度的手機上使用相同的文件。這樣會使 APK 文件變小更加有利于開發人員維護。我們還可以通過多個 XML 文件和矢量圖結合用于動畫。

既然說起 VectorDrawable 了,那就不得不提 SVG (Scalable Vector Graphic)了,這兩個經常混淆,其實 SVG 就是一種基于可擴展語言(xml),用于描述二維矢量圖形的一種圖形格式(和我們常見的 .png 等等圖片一樣,都是一種圖片格式),它有自己的一套編寫規范(使用 XML 編寫的),所以這種圖片是根據他自己的一套規范通過 XML 語言編寫而成的圖片。而我們的 VectorDrawable 是編程中的,它僅支持 SVG 規范中有限的內容。Android Studio 支持將 SVG 文件轉換成 VectorDrawable 。這就是他們兩者的關系。

path 中的常用的簡單繪制命令

  • moveto 命令 M 移動到新的位置
  • closepath 命令 Z 封閉路徑,從當前的位置畫一條直線到該路徑或者子路徑起始位置
  • lineto 命令 L ,從當前的位置畫一條線到指定的位置
  • horizontal lineto 命令 H 水平畫一條直線到指定位置
  • vertical lineto 命令 V 垂直畫一條直線到指定位置
  • 貝塞爾曲線 命令 Q
  • 光滑二次貝塞爾曲線 命令 T
  • elliptical arc 命令 A 橢圓弧

每個命令都有大小寫的形式,大寫代表后面的參數是絕對坐標,小寫表示相對坐標(我們一般用大寫就可以了),參數之間用空格或者逗號隔開。所謂的相對坐標是相對于前面一個點的,比如:M30,0 l 10,10 換算成絕對坐標就是 M30,0 L40,10

命令使用實例

  • M(x y) 移動到坐標 x,y 處
  • Z 后面不接參數,直接連接起點和終點
  • L(x y)直線連接到坐標 x,y 處
  • H(x) 水平連接
  • V(y) 垂直連接
  • C(x1 y1 x2 y2 x y)控制點 x1,y1 x2,y2 終點坐標 x,y
  • Q(x1 y1 x y)控制帶點 x1,y1 終點坐標 x ,y;
  • A(rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y);
  • rx,ry 橢圓半徑
  • x-axis-rotation x 軸旋轉角度
  • large-arc-flag 為 0 的時候表示取小弧度,1 的時候取大弧度
  • sweep-flag 0 取逆時針方向,1 取順時針方向
  • (x,y) 是終點的坐標

VectorDrawable 如何定義

VectorDrawable 在 drawable 文件夾中通過 來定義,這里先來詳細的介紹一下 vector 中的各個屬性(和網上的許多不一樣,網上的大多都沒有自己驗證過)

vector 還支持 clip-path 元素,定義當前繪制的剪切路徑。注意:clip-path 只對當前的 group 和子 group 有效。需要 API 大于等于 21

offset說明.png

矢量動畫

利用 XML 文件來設置矢量動畫

  • 創建一個矢量圖
  • <?xml version="1.0" encoding="utf-8"?>

    head.png

    哈哈,樣子太丑了,大家就湊合著看把。

  • 在 drawble 創建矢量動畫
  • 目的就是將我們的矢量圖和 objectAnimator 關聯起來
  • <?xml version="1.0" encoding="utf-8"?>
  • 在 animator 中創建動畫
  • <?xml version="1.0" encoding="utf-8"?>
  • 布局文件中添加圖片
  • 在程序中啟動動畫
  • Drawable drawable = ivAndroid.getDrawable();((Animatable)drawable).start();

    效果圖

    效果圖.gif

    在 objectAnimator 的 propertyName 中有兩個很重要的屬性值,trimPathEndtrimPathStart 表示截取,和前面介紹的 path 里面的類似,利用這個可以繪制 vectordrawble。注意如果動畫使用這個兩個屬性值的話,animated-vector 中 target 對應的 name 必須是 path 類型不能是 group 效果圖:

    trimPathStart.gif

    SVG 圖片轉成 vectordrawble

    利用我們 Android Studio 提供的工具就可以將 SVG 格式的圖片直接轉成我們的 vectordrawble 了。

    svgtovector.png

    選擇圖片.png

    總結

    以上是生活随笔為你收集整理的android 子module混淆_Android 矢量图详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。