2016-01-15 46 views
2

我有一個飛鏢的SVG圖像,我最近使用矢量資產工作室將其轉換爲矢量。我試圖複製這個飛鏢的功能here代碼中的引用矢量路徑?

我遇到的唯一問題是嘗試複製點擊聽衆到董事會的某些部分,因爲它只是一個圖像。我試圖研究將矢量或圖像視圖分解爲div並引用.XML文件中的名稱,但沒有出現。是否可以在代碼中引用矢量路徑並在實現onclick監聽器時顯示路徑的名稱(IE s19)?還是有不同的方式來解決這個問題?

dartboard.xml是如何構成的:

<vector 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:width="300dp" 
android:height="300dp" 
android:viewportHeight="774.0" 
android:viewportWidth="787.0"> 
<group android:name="singles"> 
    <path 
     android:name="s19" 
     android:fillColor="#F7E9CD" 
     android:pathData="M328,561.9c-2,-0.8 -3.9,-1.7 -5.8,-2.6l66.1,-138.9c2,0.8 4.2,1.5 6.4,1.9L374.7,574.8C358.6,572.6 343,568.3 327.9,561.9zM358.7,696.9l13.4,-102.2c-17.8,-2.5 -35.2,-7.3 -51.9,-14.3c-2.2,-0.9 -4.4,-1.9 -6.6,-2.9l-44.3,93.1c3.6,1.7 7.2,3.3 10.8,4.8C305.3,686.1 331.7,693.3 358.7,696.9z"/> 
    <path 
     android:name="s14" 
     android:fillColor="#FF000000" 
     android:pathData="M215.2,362.7c2.2,-16.1 6.6,-31.7 12.9,-46.7c0.8,-2 1.7,-3.9 2.6,-5.8l138.9,66.1c-0.8,2 -1.5,4.2 -1.9,6.4L215.2,362.7zM93.1,346.7l102.2,13.4c2.5,-17.8 7.3,-35.2 14.3,-51.9c0.9,-2.2 1.9,-4.4 2.9,-6.6l-93.1,-44.3c-1.7,3.6 -3.3,7.2 -4.8,10.8C103.9,293.3 96.7,319.7 93.1,346.7z"/> 

我的遊戲活動:

<?xml version="1.0" encoding="utf-8"?> 
<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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.blue.darts.GameActivity"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:src="@drawable/dartboard" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 
</RelativeLayout> 

回答

0

對於任何人誰可能會遇到這種情況,似乎是不可能引用從矢量資源工作室的創建載體什麼。你最好的選擇是使用WebView並將SVG轉換爲HTML。從那裏,你可以操縱本地HTML,但你喜歡。

0

如果我正確理解OP,您需要直接訪問靜態資源的路徑信息。 Android的資源非常適合創建機器可讀的靜態資源,但在這個過程中,它們變得相當不透明。我建議你將SVG文件直接翻譯成代碼。有些工具可以幫助您實現這一目標,例如almosr/android-svg-code-render。一旦你有了Path對象,你就可以使用Path#op相交,並且Path#isEmpty可以測試匹配。

雖然沒有直接關係,也有PathMeasure可以用來追蹤路徑。

那裏我引用的項目沒有構建指令,所以這裏就是我所做的,情況因人而異:

git clone https://github.com/almosr/android-svg-code-render.git 
cd android-svg-code-render 
curl -O http://central.maven.org/maven2/com/caverock/androidsvg/1.2.1/androidsvg-1.2.1.jar 
mkdir classes 
javac -cp androidsvg-1.2.1.jar -sourcepath src -d classes src/android_svg_code_render/Main.java 
jar cvfm android-svg-code-render src/META-INF/MANIFEST.MF -C classes . 
java -jar android-svg-code-render input.svg -o output.java 

然後我就可以把代碼output.java,並有我的方式使用它......生成的代碼不漂亮,但它的作品!