我正在向android地圖視圖添加自定義標記。這裏是我使用它的圖像。它看起來像更多的標記放置說約100整個應用程序變得緩慢。這是我正在使用的圖像。在android中使用XML繪製自定義形狀
而不是使用這個形象,我打算畫這個圖像作爲XML的形狀。怎麼做?
此外,我正在關注this tutorial以顯示自定義標記。這是自定義繪圖延遲應用程序?
最好的辦法是做什麼?
我正在向android地圖視圖添加自定義標記。這裏是我使用它的圖像。它看起來像更多的標記放置說約100整個應用程序變得緩慢。這是我正在使用的圖像。在android中使用XML繪製自定義形狀
而不是使用這個形象,我打算畫這個圖像作爲XML的形狀。怎麼做?
此外,我正在關注this tutorial以顯示自定義標記。這是自定義繪圖延遲應用程序?
最好的辦法是做什麼?
這是可能的,但看起來沒有意義。因爲Google地圖只需要位圖。所以你需要創建位圖並在畫布的幫助下繪製形狀。
marker.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:width="20dp"
android:height="20dp"
android:top="10dp">
<rotate
android:fromDegrees="45"
android:pivotX="75%"
android:pivotY="40%">
<shape>
<solid android:color="#fe696d" />
</shape>
</rotate>
</item>
<item
android:width="@dimen/marker_width"
android:height="@dimen/marker_height"
android:bottom="8dp">
<shape>
<solid android:color="#4b4b4b" />
<corners
android:topLeftRadius="@dimen/marker_corner_radius"
android:topRightRadius="4dp" />
</shape>
</item>
<item
android:width="32dp"
android:height="26dp"
android:bottom="4dp"
android:top="16dp">
<shape>
<solid android:color="#fe696d" />
<corners
android:bottomLeftRadius="@dimen/marker_corner_radius"
android:bottomRightRadius="@dimen/marker_corner_radius" />
</shape>
</item>
的代碼形狀轉換成位圖(從與地圖片段/活性)
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.marker, null);
Canvas canvas = new Canvas();
int width = getResources().getDimensionPixelOffset(R.dimen.marker_width);
int height = getResources().getDimensionPixelOffset(R.dimen.marker_height);
drawable.setBounds(0, 0, width, height);
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
drawable.draw(canvas);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap);
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().icon(bitmapDescriptor).position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
dimen.xml
<resources>
<dimen name="marker_corner_radius">4dp</dimen>
<dimen name="marker_height">40dp</dimen>
<dimen name="marker_width">32dp</dimen>
</resources>
部分
結果將是未來
最簡單的方法就是包含一個小的PNG或JPG標記。繪製速度會更快,並且不會佔用太多的空間。我不認爲你可以在xml中獲得這種形狀 - 底部的小三角形使它變硬,形狀非常有限。你可能會做到部分XML和部分圖像,但爲什麼要打擾XML呢?
這是否需要自動調整? – Yorrd
不,我不想調整 – Zach