2015-05-03 2 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); 
    } 
} 

Это мой XML для предварительного просмотра камеры активности

<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> 

И это фрагмент кода из моей предпросмотра активности камеры для крепления камеры предварительного просмотра

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 (слева, сверху, справа, внизу)

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

Я попытался это, но он все еще Безразлично» t исправить проблему. Я все еще могу видеть просмотр камеры, и ничего не видно для просмотра. – monopandora

+0

Ваш прямоугольник тоже неправильный ... я редактирую сообщение ... –

Смежные вопросы