我正在尝试制作动画壁纸。
基本上我的壁纸有一些背景图片和几张前景图片。 我想在不同背景的前景图片之间切换。
我有一个看起来像这样的Draw方法:
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(0);
canvas.drawBitmap(background,0,0,null);
canvas.drawBitmap(foreground,x,y,null);
canvas.save();
}
我的前景图片是一个有很多透明空间的png。
我加载了这样的前景图片:
foreground=decodeSampledBitmapFromResource(getResources(), R.drawable.c1, 440,320);
从这里的教程中获取decodeSampledBitmapFromResource方法:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
我的问题是前景会显示白色,它应该显示透明色,因此用丑陋的白色矩形覆盖背景。
我想知道是否有人建议让我透明。 我已经尝试过设置options.inPreferredConfig = Bitmap.Config.ARGB_8888;对于BitmapFactory,但它没有帮助。
答案 0 :(得分:0)
Paint paint = new Paint();
paint.setAlpha(70); // you can change number to change the transparency level
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.someDrawable);
canvas.drawBitmap(image, x, y, paint);
答案 1 :(得分:0)
您需要使用Paint并将混合模式设置为SRC_OVER
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
canvas.drawColor(0);
canvas.drawBitmap(background,srcRect,dstRect,paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
canvas.drawBitmap(foreground,srcRect2,dstRect2,paint);
canvas.save();
}
请参阅PorterDuff.Mode了解各种混音选项(有很多......)