1. ホーム
  2. java

[解決済み] Java/Androidのカラーintのアルファバイトを操作する

2023-04-24 17:08:06

質問

JavaでintをAndroidの色(Canvasに描画するための)として使っている場合、そのintのアルファ成分だけを操作するにはどうしたらよいでしょうか。たとえば、これを行うためにどのように操作を使用することができますか。

int myOpaqueColor = 0xFFFFFF;
float factor = 0;
int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor);
//myTransparentColor should now = 0x00FFFFFF;

理想を言えば、これらの最初のバイトに何かしらの factor を掛けるのが理想的です。

どのように解決するのですか?

をチェックしてください。 カラー クラスをご覧ください。

あなたのコードは少しこのようなものになるでしょう。

int color = 0xFFFFFFFF;
int transparent = Color.argb(0, Color.red(color), Color.green(color), Color.blue(color));

つまり、メソッドでラップすると、次のようになります。

@ColorInt
public static int adjustAlpha(@ColorInt int color, float factor) {
    int alpha = Math.round(Color.alpha(color) * factor);
    int red = Color.red(color);
    int green = Color.green(color);
    int blue = Color.blue(color);
    return Color.argb(alpha, red, green, blue);
}

そして、これを呼び出して透明度を例えば50%に設定します。

int halfTransparentColor = adjustAlpha(0xFFFFFFFF, 0.5f);

提供されているColorクラスを使用することは、ビット操作を自分で行うよりも少し自己文書化されており、さらにそれはすでにあなたのために行われているのだと思います。