Exemples de code Android

Mélanger les couleurs

Ce petit programme montre comment il est possible de mélanger (ajouter ou soustraire) des couleurs avec les opérateurs "bit-à-bit" de Java.

MainActivity.java

package com.prog101.testcouleurs;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

/*
    Rouge     : 11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000000
    Pas rouge : 00000000 00000000 00000000 00000000 11111111 11111111 11111111 11111111
                |--- opacité ---| |---- rouge ----| |---- vert -----| |---- bleu -----|
*/

public class MainActivity extends AppCompatActivity {

    // couleurs
    public static final int NOIR_OPAQUE = 0xFF000000; // pour débuter
    public static final int ROUGE       = 0x00FF0000;
    public static final int VERT        = 0x0000FF00;
    public static final int BLEU        = 0x000000FF;

    // masques (bits inversés par rapport à la couleur originale)
    public static final int PAS_ROUGE   = 0xFF00FFFF;
    public static final int PAS_VERT    = 0xFFFF00FF;
    public static final int PAS_BLEU    = 0xFFFFFF00;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int couleur = NOIR_OPAQUE;

        TextView tv1 = findViewById(R.id.tv1);
        // on ajoute du rouge
        couleur = couleur | ROUGE;
        tv1.setBackgroundColor(couleur);

        TextView tv2 = findViewById(R.id.tv2);
        // on ajoute du vert pour faire du jaune
        couleur = couleur | VERT;
        tv2.setBackgroundColor(couleur);

        TextView tv3 = findViewById(R.id.tv3);
        // on enlève le vert pour revenir au rouge
        couleur = couleur & PAS_VERT;
        tv3.setBackgroundColor(couleur);

        TextView tv4 = findViewById(R.id.tv4);
        // on enlève le rouge pour revenir au noir
        couleur = couleur & PAS_ROUGE;
        tv4.setBackgroundColor(couleur);

        TextView tv5 = findViewById(R.id.tv5);
        // on ajoute du bleu
        couleur = couleur | BLEU;
        tv5.setBackgroundColor(couleur);

        TextView tv6 = findViewById(R.id.tv6);
        // on ajoute du vert pour faire du cyan
        couleur = couleur | VERT;
        tv6.setBackgroundColor(couleur);

        TextView tv7 = findViewById(R.id.tv7);
        // on ajoute du rouge pour faire du blan
        couleur = couleur | ROUGE;
        tv7.setBackgroundColor(couleur);

        TextView tv8 = findViewById(R.id.tv8);
        // on enlève le bleu et le rouge pour faire du vert
        couleur = couleur & PAS_BLEU & PAS_ROUGE;
        tv8.setBackgroundColor(couleur);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv7"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/tv8"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="50sp" />

</LinearLayout>