如何在运行时查找VectorDrawable中的点?

时间:2017-01-11 20:04:29

标签: android android-layout android-drawable android-vectordrawable

我有一个VectorDrawable:

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...');
$this->db->query('AND YET ANOTHER QUERY...');
$this->db->trans_complete(); 

在运行时,我想知道<vector android:height="24dp" android:viewportHeight="1052.3622" android:viewportWidth="744.0945" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#ff0000" android:name="group1" android:pathData="M182.9,349.5m-74.7,0a74.7,74.7 0,1 1,149.3 0a74.7,74.7 0,1 1,-149.3 0" android:strokeAlpha="1" android:strokeColor="#000000" android:strokeWidth="4.23501825"/> <path android:fillColor="#00ff00" android:name="group2" android:pathData="M474.3,392.4a84.3,102.9 0,1 0,168.6 0a84.3,102.9 0,1 0,-168.6 0z" android:strokeAlpha="1" android:strokeColor="#000000" android:strokeWidth="5"/>> </vector> group1中的点在哪里。不幸的是,我没有找到能够提供相关数据的函数。有吗?

1 个答案:

答案 0 :(得分:0)

虽然您无法在运行时从VectorDrawable中提取此内容,但我在项目中所做的是将路径数据提取到字符串资源并记住路径中的数据M是移动的,{ {1}}为行,L为曲线且C为close,以编程方式解析字符串。

所以我在我的string.xml中

Z

和我的vector.xml

<string name="vector_path" translatable="false">M182.9,349.5m-74.7,0a74.7,74.7 .... etc

并且在运行时,您可以使用<path android:pathData="@string/vector_path" vector_path

处理此String.split字符串

我希望它有所帮助