Autore Topic: SetColorFilter non funziona sui tablet  (Letto 194 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 316
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
SetColorFilter non funziona sui tablet
« il: 15 Marzo 2016, 10:10:42 CET »
0
Salve a tutti!

Ho riscontrato un problema abbastanza particolare....
Nella mia app ho bisogno di cambiare dinamicamente il colore ad un drawable all'interno della lista, il tutto funziona perfettamente sugli smartphone ma non sul tablet che uso per provare i layout (samsumb galaxy tab 2).

Questo è il codice che utilizzo:
Codice (Java): [Seleziona]
  if(position==0){//se è la prima riga
                    holder.sfondo2.setBackgroundColor(Color.WHITE);//sfondo bianco

                    holder.spunta.setBackgroundResource(R.drawable.triangolo);//triangolo marrone
                    parsedColor=Color.parseColor(ColoriHex.MarroneChiaro);
                    holder.spunta.setColorFilter(parsedColor);//spunta colorata;

                    mColorCode = Color.parseColor(ColoriHex.MarroneChiaro);

                    //Get the image to be changed from the drawable, drawable-xhdpi, drawable-hdpi,etc folder.
                    Drawable sourceDrawable = mcontext.getResources().getDrawable(R.drawable.icona);
                    //Convert drawable in to bitmap
                    Bitmap sourceBitmap = Util.convertDrawableToBitmap(sourceDrawable);
                    //Pass the bitmap and color code to change the icon color dynamically.
                    mFinalBitmap = Util.changeImageColor(sourceBitmap, mColorCode);
                    holder.icona.setImageBitmap(mFinalBitmap);

                    //holder.icona.setBackgroundResource(R.drawable.culturamarrone);
                }else {
                    if (position % 2 != 0) {//se è una riga dispari
                        parsedColor=Color.parseColor(ColoriHex.Dormire);
                        holder.sfondo2.setBackgroundColor(parsedColor);//sfondo colorato

                        holder.spunta.setBackgroundResource(R.drawable.triangolo);
                        holder.spunta.setColorFilter(Color.WHITE);//spunta bianca;

                        drawable = mcontext.getResources().getDrawable(R.drawable.icona);
                        drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);

                        holder.icona.setImageDrawable(drawable);


                    } else {//se è una riga pari
                        holder.sfondo2.setBackgroundColor(Color.WHITE);//sfondo bianco

                        holder.spunta.setBackgroundResource(R.drawable.triangolo);
                        parsedColor=Color.parseColor(ColoriHex.Dormire);
                        holder.spunta.setColorFilter(parsedColor);//spunta colorata;

                        mColorCode = Color.parseColor(ColoriHex.MarroneChiaro);

                        //Get the image to be changed from the drawable, drawable-xhdpi, drawable-hdpi,etc folder.
                        Drawable sourceDrawable = mcontext.getResources().getDrawable(R.drawable.icona);
                        //Convert drawable in to bitmap
                        Bitmap sourceBitmap = Util.convertDrawableToBitmap(sourceDrawable);
                        //Pass the bitmap and color code to change the icon color dynamically.
                        mFinalBitmap = Util.changeImageColor(sourceBitmap, mColorCode);
                        holder.icona.setImageBitmap(mFinalBitmap);

                    }

Spiego un attimo meglio ciò che voglio creare:
la mia lista è composta da due immagini, una che si alterna tra il colore bianco e il colore marrone (icona), mentre il "triangolo" deve essere marrone alla prima riga, nella riga pari deve essere bianca e nella riga dispari deve essere dello stesso colore dello sfondo della riga pari (lo sfondo lo setto con successo).
La cosa che non mi spiego è perché l'icona cambia di colore perfettamente senza dare problemi mentre il triangolo rimane sempre marrone.

Spero di essere stato chiaro...

Grazie mille in anticipo!