2016-08-28 4 views
1

Я новичок в Android, и я пытаюсь создать приложение для камеры. Я создаю предварительный просмотр камеры, который расширяет SurfaceView и реализует SurfaceHolder.Callback для предварительного просмотра камеры в действии камеры. здесь подрядчик:Как добавить кнопки на предварительный просмотр камеры

public CameraPreview(Context context) { 
    super(context); 
    mContext = context; 
    mStartRequested = false; 
    mSurfaceAvailable = false; 
    mCamera = null; 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
} 

и OnCreate (в CameraActivity.java) метод, который инициализирует расположение:

@Override 
protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_camera); 
    mPreview = new CameraPreview(this); 
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); 
    preview.addView(mPreview); 
} 

и, наконец, Разметка XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1"> 


    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_gravity="center_horizontal|bottom" /> 
</FrameLayout> 
</LinearLayout> 

AndroidMainifest. xml:

<application 
    ... 
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" > 

Как вы можете видеть, я попытался добавить кнопку на просмотр камеры, но я не могу увидеть кнопку, когда приложение обедает. может кто-нибудь увидеть ошибку ??

Спасибо!

ответ

3

Предварительный просмотр, вероятно, сверху кнопки (в Z-порядке). Эта линия:

preview.addView(mPreview); 

добавляет CameraPreview к концу внутреннего список FrameLayout по взглядам ребенка. FrameLayout делает свои дочерние представления в порядке; как таковой, предварительный просмотр рисуется после кнопки или «над». Попробуйте вместо этого:

preview.addView(mPreview, 0); 

Вы также можете заказать CameraPreview при наличии его раздувать из XML вместо этого, с помощью тега с полным именем класса, например:

<com.yourdomain.CameraPreview 
.../> 

... хотя вам необходимо переопределить представление (контекст контекста, AttributeSet attrs); конструктор, чтобы сделать эту работу.

+0

Спасибо! Я попробую. –

+0

Спасибо, это работает :) –

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