2013-08-03 27 views
6

Mam następujący plik w folderze do rysowania o nazwie /drawable/mybkg.xml. Chcę go nadmuchać, aby programowo zmieniać kolory. Czy to możliwe w systemie Android?zawyżanie listy-kształtów w systemie Android

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <shape android:shape="oval" > 
      <padding 
       android:top="5dp" 
       android:bottom="2dp" 
       android:left="2dp" 
       android:right="2dp" /> 

      <solid 
       android:angle="270" 
       android:color="#1bd4f6" /> 

      <stroke 
       android:width="2dp" 
       android:color="#121ce5" /> 
     </shape> 
    </item> 

    <!-- Foreground --> 
    <item> 
     <shape android:shape="oval" > 

      <solid android:color="#1b90f6" /> 
     </shape> 
    </item> 

</layer-list> 

Właśnie zobaczyłem klasę o nazwie LayerDrawable. Czy ktoś wie, jak można przekonwertować mój plik xml do takiego LayerDrawable albo przez napisanie kodu lub nadmuchanie istniejącego xml?

Odpowiedz

1

Należy użyć metody Resources.getDrawable(int id). Oto dokumentacja: http://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) Zawodzi on wszelkiego rodzaju zasoby do pobrania. Pozostaje ci tylko oddać zwracany draw do najbardziej określonego typu, który potrzebujesz (w twoim przypadku do LayerDrawable). Oto przykład:

// calling from Activity 
LayerDrawable d = (LayerDrawable) getResources().getDrawable(R.drawable.my_drawable);