ColorMatrixクラスのインスタンスメソッドのsetSaturationで HSV色空間のS(彩度)を0に設定したマトリクスを作成します。
そのマトリクスを使ってColorMatrixColorFilterを生成することで、 グレースケール用のフィルタを作成しています。
後は、イベントをトリガーに対象のイメージボタンの ColorFilterに設定したり、nullで取り除いたりすることで、 動的にグレースケールとの切り替えが行えます。
以下適当なサンプルコード
private ColorMatrixColorFilter grayScaleFilter;
private ImageButton imgBtn;
private void initialize(){
imgBtn = (ImageButton) findViewById(id.imageButtonA);
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);
grayScaleFilter = new ColorMatrixColorFilter(matrix);
}
public void changeGrayScaleMode(){
imgBtn.setColorFilter(grayScaleFilter);
}
public void changeColorMode(){
imgBtn.setColorFilter(null);
}
追記
厳密に言うと彩度を0にするのと、グレースケールとは違うのだけどまぁいいか。
0 件のコメント:
コメントを投稿