2012-08-28 1 views
1

가능한 중복에 비트 맵의 ​​불투명도를 변경하는 방법 : 나는 검색 막대의 진행의 변화에 ​​비트 맵의 ​​불투명도를 변경하려면
Set alpha of Bitmap image!동적으로 안드로이드

. 아래 코드를 사용하고 있습니다.

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; 




        } 
       }); 

하지만 이렇게하려고 할 때. seekbar와 비교하여 불투명도를 매우 빠르게 변경합니다. 또한 검색 막대를 늘릴 때도 항상 불투명도를 감소시킵니다. 내가 뭘 잘못하고있어? 제안을 공유하십시오.

+0

canvas.drawColor (Color.argb (알파, 레드, 그린, 블루)); –

+0

먼저 검색해보십시오. http://stackoverflow.com/search?q=[android]+bitmap+opacity – Merlin

답변

2

당신이 Color.argb를 사용할 수 있습니다

그것은 불투명도를 변경하는 것이 훨씬 쉽다.

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

여기

aplha은, 빨강, 녹색 & 블루는 통과해야 0 귀하의 경우

255에 있어야합니다 위치를 알파에서 통해 진행 상태 값을 사용할 수 있도록 알파 투명도입니다 .. 매번 동일한 RGB 값만 알파 값을 변경합니다.

4

Bitmap으로 직접 작업하는 대신 BitmapDrawable을 사용하십시오. 샘플 코드 여기에 ..

BitmapDrawable bmpDrawable = new BitmapDrawable(getResources(), bitmap); 
bmpDrawable.setAlpha(150); 
+0

최종 결과를 비트 맵으로 가져와 야합니다. –

+0

이 경우에는 새 비트 맵을 만들고 그 위에 BitmapDrawable을 그립니다. 비트 맵. – Dalmas

+0

이 코드를 시도했습니다. 그러나 동일한 비트 맵을 반복해서 반환합니다. 난 동적이 아닌 불투명도의 정적 변화에서만 작동한다고 생각합니다. –