2015-05-03 31 views
0

我试图在相机预览上绘制矩形叠加。我已经在FrameView中添加了叠加层,onDraw()被成功调用,但矩形永远不会显示出来。我已经四处搜寻,尝试了不同的解决方案,但迄今为止还没有任何解决方案。无法在相机预览上绘制矩形

这就是我对FrameView

public class FrameView extends View { 
    private Paint mFramePaint = null; 
    private final String TAG = "FrameView"; 

    public FrameView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mFramePaint = new Paint(); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     mFramePaint.setStyle(Paint.Style.FILL); 
     mFramePaint.setColor(Color.GREEN); 

     Rect drawRect = new Rect(300,300,300,300); 

     canvas.drawRect(drawRect, mFramePaint); 
    } 
} 

这是我的相机预览活动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.eyesee.CameraPreviewActivity" 
    android:id="@+id/camera_preview"> 

    <com.example.eyesee.FrameView 
     android:id="@+id/frame_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</RelativeLayout> 

XML这是从我的相机预览活动代码段用于连接相机预览

private Camera mCamera; 
private CameraPreview mPreview; 
private final String TAG = "CameraPreviewActivity"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_camera_preview); 

    mCamera = MainActivity.getCameraInstance(); 

    mPreview = new CameraPreview(this, mCamera); 
    RelativeLayout preview = (RelativeLayout) findViewById(R.id.camera_preview); 
    preview.addView(mPreview); 
} 

回答

0

在RelativeLayout子视图按顺序绘制, 你需要添加视图下方的预览:

preview.addView(mPreview,0); 

您的矩形为0的大小 - 新的矩形(左,上,右,下)

Rect drawRect = new Rect(0,0,300,300); 
+0

我试过,但它仍然没有按”解决这个问题。我仍然只能看到相机预览,没有显示任何视图。 – monopandora

+0

你的矩形也是错的...我编辑帖子... –