2013-07-24 27 views

Odpowiedz

1

Najlepszym sposobem, aby to zrobić byłoby zamienić rozciągliwej do bitmapy:

Bitmap fromDrawable = BitmapFactory.decodeResource(context.getResources(),R.drawable.drawable_resource); 

A potem odwrócenia go jako za:

https://stackoverflow.com/a/4625618/1154026

a następnie z powrotem do rozciągliwej jeśli musisz:

Drawable invertedDrawable = new BitmapDrawable(getResources(),fromDrawable); 
+0

mogę spierać o „najlepszej drodze” ... – TWiStErRob

+0

Głosy argumentowali na tyle jak to jest :) – VicVu

29

Po pewnych badaniach dowiedziałem się, że rozwiązaniem jest muc h prostsze niż myślałem.

Oto ona:

/** 
    * Color matrix that flips the components (<code>-1.0f * c + 255 = 255 - c</code>) 
    * and keeps the alpha intact. 
    */ 
    private static final float[] NEGATIVE = { 
    -1.0f,  0,  0, 0, 255, // red 
     0, -1.0f,  0, 0, 255, // green 
     0,  0, -1.0f, 0, 255, // blue 
     0,  0,  0, 1.0f, 0 // alpha 
    }; 

    drawable.setColorFilter(new ColorMatrixColorFilter(NEGATIVE)); 
+1

dzięki pracy jak urok! :) – dreamfighter