Toile Android changer de couleur
J'ai une application avec deux vues
<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" />
Ces vues se chevauchent et, pendant un certain temps, je charge des informations dans la vue de l'arrière-plan. Pendant ce temps, j'aimerais définir le FrontView en blanc, puis (lorsque le chargement de l'arrière-plan sera terminé) en transparent.
Dans le FrontView, j'ai un canevas avec un bitmap. Fonctionne, et je peux le faire si je veux définir un fond transparent
canvas.drawColor(0);
définir le fond en blanc
canvas.drawColor(-1);
Mais je ne peux pas changer de blanc pour transparent.
Je vous remercie
N’est pas ce que je voulais réaliser mais c’est une solution de contournement et peut-être utile pour quelqu'un, je mets en mode invisible le deuxième canevas, puis, quand il est prêt, je le remet visible.
@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);
}
});
}
Essaye ça:
/*
* 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);
Ou, comme @ njzk2 l'a indiqué, vous pouvez également utiliser celui-ci:
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
Mais je pense que la première option est meilleure car elle est plus précise pour, par exemple, si vous voulez la rendre moins transparente.
Créer une peinture
Paint myPaint = new Paint();
myPaint.setColor(res.getColor(R.color.white));
Et place ta toile
canvas.draw...(... , myPaint);