我想要做的事情如下: 我有一組Drawables(例如16),我必須以不同的方式組合(帶有1,2,3或4的Icon Drawables),取決於商業邏輯。我的想法是用裏面的ImageViews來定義RelativeLayouts。不幸的是,我計劃將這些Layouts作爲OverlayItem(需要Drawable)在MapView上顯示出來。我認爲任何佈局都是可繪製的,但事實並非如此。我沒有找到一種方法將此RelativeLayout轉換爲drawable。我真的沒有得到主要區別。是不是所有的VIEW都可以畫出來? 我可以將多個Drawable組合成一個嗎?我真的是2D圖形的初學者,並不知道如何解決這個問題。任何想法讚賞從RelativeLayout或Group Drawable獲取Drawables
地址:基於第一個答案 代碼示例:
public class MapViewActivity extends MapActivity {
MapView mMapView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map_view);
mMapView = (MapView)findViewById(R.id.mapview);
mMapView.setBuiltInZoomControls(true);
List<Overlay> mapOverlays = mMapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.one_drawable);
//this is where exception is thrown
}
}
和文件one_drawable.xml看起來是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/item_one"
android:top="0dip"
android:right="0dip"
android:bottom="0dip"
android:left="0dip"/>
</layer-list>
所以我看不到任何錯誤(我在程序中以編程方式設置drawables)
編輯2: 好的,我不允許這樣做。我必須設置一個drawable,它可以稍後交換
非常好。看來這正是我需要的。我想我可以結合LayerDrawable和LevelList來擺脫我寫的那個醜陋的ImageFactory。我馬上將其標記爲已接受 – 2011-06-10 13:27:36
我在使用它時遇到了一些問題。 – 2011-06-10 15:38:53
我已經定義了4個Layer-List xml並將它們放到Drawable文件夾中。如果我調用mContext.getResources()。getDrawable(R.drawable.one_drawable)我得到由java.lang.RuntimeException引起的java.lang.reflect.InvocationTargetException:無法啓動活動ComponentInfo {[package] .MapViewActivity} :android.content.res.Resources $ NotFoundException:從可繪製資源ID文件res/drawable/one_drawable.xml#0x7f020003 我在做什麼錯 – 2011-06-10 15:45:33