SORU
2 Kasım 2011, ÇARŞAMBA


Android: filtre ile bir StateListDrawable yapmak için bir drawable Klonlama

Herhangi bir Drawable vurgulanan yapacak olan genel bir çerçeve işlevi yapmak için çalışıyorumbasılı/odaklı//etc seçilmiş.

Benim görevim alır bir Drawable ve iade StateListDrawable, olduğu varsayılan devlet Drawable kendisi ve devlet için android.R.attr.state_pressed Aynı drawable, sadece bir filtre kullanarak setColorFilter.

Benim sorunum drawable klon ve filtre ile ayrı bir örnek uygulamalı yapamam. Başarmaya çalıştığım şey burada:

StateListDrawable makeHighlightable(Drawable drawable)
{
    StateListDrawable res = new StateListDrawable();

    Drawable clone = drawable.clone(); // how do I do this??

    clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
    res.addState(new int[] {android.R.attr.state_pressed}, clone);
    res.addState(new int[] { }, drawable);
    return res;
}

Eğer klon muyum diye filtre belli ki her iki ülke için uygulanır. mutate() ile oynamaya çalıştım ama.. yardımcı olmuyor

Herhangi bir fikir?

Güncelleme:

Gerçekten kabul cevap klonlar bir drawable. Benim genel işlevi farklı bir problem için başarısız çünkü bana yardım etmedi. Bir StateList bir drawable eklediğinizde, tüm filtreler kaybeder gibi görünüyor.

CEVAP
2 Kasım 2011, ÇARŞAMBA


Aşağıdakileri deneyin:

Drawable clone = drawable.getConstantState().newDrawable();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008
  • WK

    WK

    9 Ocak 2006