3 回答
![?](http://img1.sycdn.imooc.com/545868c20001b8c402200220-100-100.jpg)
TA贡献1828条经验 获得超3个赞
SurfaceViewView在这方面可能不太正常。
而是,请执行以下操作:
将您SurfaceView放在 FrameLayout或RelativeLayout布局XML文件中,因为这两个都允许在Z轴上堆叠小部件
将绘图逻辑移到单独的自定义View类中
将自定义View类的实例作为FrameLayout或 的子项添加到布局XML文件中RelativeLayout,但将其显示在SurfaceView
这将导致您的自定义View类显示在上方SurfaceView。
请参阅此处的示例项目,该示例项目在SurfaceView用于视频播放的上方弹出面板分层。
![?](http://img1.sycdn.imooc.com/545861e40001199702200220-100-100.jpg)
TA贡献1845条经验 获得超8个赞
尝试调用setWillNotDraw(false)来自surfaceCreated:
public void surfaceCreated(SurfaceHolder holder) {
try {
setWillNotDraw(false);
mycam.setPreviewDisplay(holder);
mycam.startPreview();
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG,"Surface not created");
}
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawRect(area, rectanglePaint);
Log.w(this.getClass().getName(), "On Draw Called");
}
并要求invalidate来自onTouchEvent:
public boolean onTouch(View v, MotionEvent event) {
invalidate();
return true;
}
- 3 回答
- 0 关注
- 873 浏览
添加回答
举报