我有一個面闆,通過relativelayout放置在另一個視圖的頂部.
我想給這個面闆一個透明的背景,但是在搜尋幾個小時之後找不到正确的方法.當我将alpha設定回0時,我最終得到黑色背景.
希望有人可以幫助我.
非常感謝!
該面闆通過以下代碼繪制:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
private ViewThread mThread;
Paint paint = new Paint();
public Panel(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
getHolder().addCallback(this);
mThread = new ViewThread(this);
}
public void doDraw(Canvas canvas) {
canvas.drawARGB(50, 120, 120, 120);
paint.setARGB(255, 255, 0, 0);
paint.setStrokeWidth(2);
int CanvasHeight = canvas.getHeight();
int CanvasWidth = canvas.getWidth();
canvas.drawLine(LeftStartX, LeftStartY, StopX, StopY, paint);
}
public void updateDrawing(float LB, float RB, float BD, float AH, float AD ){
Left = LB;
Right = RB;
Distance = BD;
AHeight = AH;
ADistance = AD;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
public void surfaceCreated(SurfaceHolder holder) {
if (!mThread.isAlive()) {
mThread = new ViewThread(this);
mThread.setRunning(true);
mThread.start();
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
if (mThread.isAlive()) {
mThread.setRunning(false);
}
}
}
解決方法:
在構造函數中:
setZOrderOnTop(true);
在holder.addCallback(this)之後:
holder.setFormat(PixelFormat.TRANSPARENT);
在繪圖開始時:
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
标簽:android,transparency,draw,android-canvas
來源: https://codeday.me/bug/20190928/1827327.html