2011-06-10 44 views
2

我想要做的事情如下: 我有一組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,它可以稍後交換

回答

1

儘管可以繪製任何View,但它不是可繪製的。您應該使用Layer List 將多張圖片作爲一個可繪圖進行操作。

+0

非常好。看來這正是我需要的。我想我可以結合LayerDrawable和LevelList來擺脫我寫的那個醜陋的ImageFactory。我馬上將其標記爲已接受 – 2011-06-10 13:27:36

+0

我在使用它時遇到了一些問題。 – 2011-06-10 15:38:53

+0

我已經定義了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