2015-01-27 15 views
6

cambiamento tela Android coloretela Android

Ho un app con due punti di vista

<com.myexample.ui.view.BackgroundView 
     android:id="@+id/id_draw_canvas_classroom" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginBottom="3dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="3dp" 
     android:layout_weight="1" 
     android:background="#FFFFFFFF" /> 

    <com.myexample.ui.view.FrontView 
     android:id="@+id/id_draw_canvas_user" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginBottom="3dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="3dp" 
     android:layout_weight="1" 
     android:background="#00000000" /> 

Questa vista si sovrappongono, e durante un periodo di tempo ho caricare le informazioni nella visualizzazione dello sfondo . Durante questo periodo vorrei impostare FrontView in bianco, e quindi (quando lo sfondo termina il caricamento) diventa trasparente.

Nel FrontView ho una tela con una bitmap. Sta lavorando, e sono in grado di farlo se voglio impostare lo sfondo in trasparente

canvas.drawColor(0); 

impostare lo sfondo in bianco

canvas.drawColor(-1); 

Ma io non sono in grado di cambiare bianco per trasparente.

Grazie

+0

utilizzare le costanti 'Color.TRANSPARENT' e' Color.WHITE'. Inoltre, vedere la risposta: http://stackoverflow.com/a/10882301/671543 – njzk2

risposta

0

non è quello che volevo ottenere, ma è una soluzione alternativa e forse è utile per qualcuno, sto mettendo in invisibile al secondo tela, e quando è pronto, lo rimetto visibile.

@Override 
public void lock(String message) { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      canvasFront.setReadyToDraw(false); 
      canvasBackground.setVisibility(View.INVISIBLE); 
     } 
    }); 
} 

@Override 
public void unlock() { 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      drawViewClassroom.setVisibility(View.VISIBLE); 
      canvasFront.setReadyToDraw(true); 
     } 
    }); 
} 
12

provare questo:

/* 
* A = Alpha a.k.a. transparency 
* R = Red color 
* G = Green color 
* B = Blue color 
* 
* All of them have a range from 0 to 255 
*/ 
canvas.drawARGB(0, 225, 225, 255); 

O, come @ njzk2 affermato, è anche possibile utilizzare questo:

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 

Ma penso che la prima opzione è migliore perché è più preciso, per esempio, se vuoi renderlo meno trasparente.

+0

grazie per la risposta, è quasi funzionante, ma il problema è che quando la vista di sfondo sta caricando informazioni porta la vista di sfondo in primo piano. L'ho appena capito. – agusgambina

+0

@agusgambina Puoi chiamare 'bringToFront()' alla vista che vuoi apparire in alto. – Houssni

+0

grazie. Sto usando bringToFront() il problema è che non so perché sta portando la "seconda tela" davanti quando non la voglio. – agusgambina

4

Creare una vernice

Paint myPaint = new Paint(); 
myPaint.setColor(res.getColor(R.color.white)); 

e impostare la tua tela

canvas.draw...(... , myPaint); 
Problemi correlati