ImageView 顯示的圖片背景是否透明,取決於圖片資源本身是否包含 Alpha 通道。
<ImageView
android:src="@drawable/transparent_icon"
android:background="@android:color/transparent" />
若必須在執行期對 Bitmap 處理透明色(例如指定某顏色變透明):
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.source_img);
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); // 確保可修改
int targetColor = Color.RED; // 要變透明的顏色
int transparent = Color.TRANSPARENT;
int width = bitmap.getWidth();
int height = bitmap.getHeight();
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
if (bitmap.getPixel(x, y) == targetColor) {
bitmap.setPixel(x, y, transparent);
}
}
}
imageView.setImageBitmap(bitmap);
注意:雙重迴圈處理像素效能較差,大圖建議使用 OpenGL ES 或 RenderScript 加速。
setAlpha(0)imageView.setAlpha(0) 會將整個 ImageView(含前景圖片)設為完全透明,等同於 setVisibility(View.INVISIBLE),並非僅移除背景。
優先使用預處理透明 PNG;動態需求時操作 Bitmap 像素;切勿誤用 setAlpha 控制背景透明度。