java - 在透明 SurfaceView 上绘制

标签 java android surfaceview transparent

我有以下问题:我创建了一个从 SurfaceView 扩展的类,它也实现了 SurfaceHolder.Callback,但是当我尝试绘制一个红色方 block 时,它总是黑色的。在我的代码下面:

首先我在构造函数中调用以下方法:

 private void initTransparentBackgroundColor(){
        this.setBackgroundColor(Color.TRANSPARENT);
        this.setZOrderOnTop(true);
        getHolder().setFormat(PixelFormat.TRANSPARENT);
 }

然后,我开始画画:

 protected void onDraw(Canvas canvas){
        Paint p = new Paint();
        p.setColor(Color.RED);
        p.setStyle(Paint.Style.FILL_AND_STROKE);
        canvas.drawRect(10,10,20,20,p);
}

我做错了什么?

最佳答案

替换

getHolder().setFormat(PixelFormat.TRANSPARENT);

为此

getHolder().setFormat(PixelFormat.TRANSLUCENT);

祝你好运。 :)

关于java - 在透明 SurfaceView 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506903/

相关文章:

java - 在java中测试长字符串

android - 如何将数据从 Activity 传递到 Fragment

Android:如何在可移动图像上绘制矩形,使绘制的矩形也随图像一起移动?

java - 基本运算符: Why int z = x-- + 2*x = 25? 计算过程是怎样的?

java - SinglyLinkedList 删除(int index) 方法

java - 如何刷新单例类对象

android - ios/android 应用的 Laravel 密码加密/解密机制

java - 在 Android 应用程序中使用 Fabric Twitter Kit 加载用户时间线时无法设置回调

android - 如何将 Canvas 绘图保存为图像?

Android SurfaceView 错误