1

重複の可能性:
ビットマップ イメージのアルファを設定してください!

シークバーの進行状況の変化に合わせてビットマップの不透明度を変更したい。以下のコードを使用しています。

opacityseekbar.setMax(255);
opacityseekbar.setProgress(255);
opacityseekbar.setOnSeekBarChangeListener( new OnSeekBarChangeListener()
                {

                    public void onStopTrackingTouch(SeekBar arg0) {
                        // TODO Auto-generated method stub


                    }

                    public void onStartTrackingTouch(SeekBar arg0) {
                        // TODO Auto-generated method stub

                    }

                    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                        // TODO Auto-generated method stub
                        Log.e("Progress Value", "Progress number" + arg1);


                        Bitmap mutableBitmap = theTattoo.isMutable()? theTattoo: theTattoo.copy(Bitmap.Config.ARGB_8888, true);
                        Canvas canvas = new Canvas(mutableBitmap);
                        int colour = ((opacityseekbar.getProgress() << 24) & 0xFF000000);
                        canvas.drawColor(colour, Mode.DST_IN);

                        theTattoo=mutableBitmap;




                    }
                });

しかし、私がこれをやろうとすると。シークバーと比較して、不透明度を非常に速く変更します。また、シークバーを増やしても、常に不透明度が減少します。私は何が間違っていますか?あなたの提案を共有してください。

4

2 に答える 2

4

BitmapDrawablea を直接操作する代わりに、 a を使用しBitmapます。

不透明度を変更する方がはるかに簡単です:

BitmapDrawable bmpDrawable = new BitmapDrawable(getResources(), bitmap);
bmpDrawable.setAlpha(150);
于 2012-08-28T12:11:10.677 に答える
2

Color.argb を使用できます..ここにサンプルコードがあります。

canvas.drawColor(Color.argb(alpha, red, green, blue));

ここで、アルファは不透明度であるため、進行状況の値をアルファで使用できます..

aplha、赤、緑、青は 0 から 255 でなければなりません

あなたの場合、同じRGBを毎回渡す必要があるだけで、アルファ値を変更します

于 2012-09-05T10:52:06.360 に答える