我想在活动布局的顶部创建图层,我需要像矩形或圆形一样的洞,像附加的图像。我这样做是通过使用SurfaceView,它在Android上的较低版本上正常工作,但在版本4 +
上没有[样本截图](https://docs.google.com/file/d/0B3yZokwUGKFgTkM1ek1nZHNyZ2s/edit?usp=sharing)
我的代码是
public class SurfacePanel extends SurfaceView implements SurfaceHolder.Callback{
public SurfacePanel(Context context) {
super(context);
init();
}
public SurfacePanel(Context context, AttributeSet attrs) {
super(context, attrs);
this.CommonInit();
}
private void init() {
setZOrderOnTop(true); //necessary
getHolder().setFormat(PixelFormat.TRANSPARENT);
getHolder().addCallback(this);
setBackgroundColor(Color.TRANSPARENT);
}
public void onDraw(Canvas canvas){
Path path = new Path();
path.moveTo(10, 10);
path.lineTo(115, 10);
path.lineTo(115, 260);
path.lineTo(10, 260);
path.close();
canvas.clipPath(path, Region.Op.DIFFERENCE);
canvas.clipRect(150, 30, 200, 100, Region.Op.DIFFERENCE);
canvas.drawARGB(180, 0, 0, 0);
super.onDraw(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
有人请帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
这可能是因为ICS +默认硬件加速为true,并且在硬件模式下不支持画布上的某些绘图调用,请检查以下内容:
http://developer.android.com/guide/topics/graphics/hardware-accel.html
您可以使用setLayerType