use*_*623 5 transparency android bitmap android-canvas
我试图获得与每个线程相同的结果: 在触摸时使位图的某些区域透明.我坚持在这个答案中提出的代码:Lumis回答并根据SteD这个解决方案应该有效.
不幸的是不适合我(也适用于其他用户:在触摸时使某些位图透明的区域不起作用,它会画一个黑色的圆圈),我只是得到黑色圆圈.我尝试了很多东西,但没有得到解决.根据第二个帖子的建议使背景透明,没有任何区别.
经过多次实验,我发现当我设置透明度时透明度正常
android:theme="@android:style/Theme.Translucent"
Run Code Online (Sandbox Code Playgroud)
在我的AndroidManifest.xml中,我可以看到我应用程序下的所有内容,即桌面.我经历了很多次代码并且看不到明显的错误,只是因为我认为是因为这是Z顺序,但位图和画布不维护z命令.Z排序是通过按特定顺序绘制完成的(在此代码中是正确的).
这是Android代码中优化的一些奇怪的例子,还是我在android清单文件中遗漏了什么?
最后我找到了有效的解决方案:
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
//draw background
canvas.drawBitmap(bgr, 0, 150, null);
//copy the default overlay into temporary overlay and punch a hole in it
c2.drawBitmap(overlayDefault, 0, 0, null); //exclude this line to show all as you draw
c2.drawCircle(X, Y, 80, pTouch);
//draw the overlay over the background
//canvas.drawBitmap(overlay, 0, 0, null);
Paint new_paint = new Paint(/*Paint.ANTI_ALIAS_FLAG*/);
new_paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP));
canvas.drawBitmap(overlay, 0, 0, new_paint);
}
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么工作.我正在使用这个源代码调查xfermodes:android Xfermodes演示并根据此图像:Xfermodes图像
它没有任何意义,除了xfermode确保覆盖位图是第二个(Z顺序)绘制的bean并且透明度开始发挥作用.但是Z顺序应该通过绘制顺序来维护.
如果有人更好地了解如何解决这个问题,请分享您的知识.
问候.
| 归档时间: |
|
| 查看次数: |
2061 次 |
| 最近记录: |