Canvas.drawBitmap () не показывает прозрачность PNG - PullRequest
0 голосов
/ 07 марта 2012

Я использую Canvas.drawBitmap () для рендеринга файла png в пользовательский вид, который я создал (создавая собственную кнопку).Все работает хорошо, за исключением того, что PNG имеет прозрачный фон в фотошопе, но он не выглядит прозрачным в моем макете Android.Макет является элементом списка.

Я создаю изображение с помощью:

    `BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inPreferredConfig = Config.ARGB_8888;
    this.image = BitmapFactory.decodeResource(context.getResources(), imageResId, opt);`

Я отображаю изображение с помощью:

     `protected void onDraw(Canvas canvas)
     {
         canvas.drawColor(Color.TRANSPARENT); 
         canvas.drawBitmap(image, WIDTH_PADDING / 2, HEIGHT_PADDING / 2, null);
     }`

На данный момент WIDTH_PADDING и HEIGHT_PADDING равны 0, но я недумаю, что это актуально.

Сам PNG создан в Photoshop.Я только что сделал Новый файл -> Прозрачный фон -> И нарисовал красный овал, затем сохранил как PNG. PNG появляется с белым, где я ожидаю, что он будет прозрачным.

Файл Photoshop Файл фотошопа http://www.supercars.net/bb/redovalbutton.png

Просмотр Android Файл фотошопа http://www.supercars.net/bb/myview.png

Я вызываю его в своем xml с помощью:

com.busanbar.busanbardev.pmchat.PMCommentResendButton  
android:id="@+id/resendButton"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:focusable="true"  
android:focusableInTouchMode="true"  
android:layout_weight="1"  

Как я могу сделать белый цвет прозрачным, чтобы я мог видеть текстуру серого фона в моем контейнере списка?

1 Ответ

0 голосов
/ 25 января 2014

Я использовал android.graphics.Canvas.Canvas (растровое растровое изображение), чтобы сделать то же самое

Bitmap b = BitmapFactory.decodeResource(con.getResources(), R.drawable.name_of_png);
Canvas canvas = new Canvas(b);

Надеюсь, это решит вашу проблему.

...