Могу ли я добавить макет портрета поверх альбомной поверхности Camera SurfaceView? - PullRequest
1 голос
/ 19 апреля 2010

Мое приложение должно содержать поверхность предварительного просмотра камеры. Камера фиксируется в альбомной ориентации через AndroidMainfest.xml

<application android:icon="@drawable/icon" 
    android:label="Camera">

    <uses-library android:name="com.google.android.maps" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    <activity android:name=".CameraPreview"
            android:label="Camera"
            android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

Если есть другой способ заставить сам предварительный просмотр камеры вести себя правильно, пожалуйста, дайте мне знать.

Теперь мне нужно иметь оверлей, содержащий несколько кнопок. Из-за удобства использования пользовательский интерфейс должен быть установлен в книжной ориентации (или даже лучше ориентирован на ориентацию).

Есть ли способ иметь прозрачный макет (для кнопок и других элементов графического интерфейса) в портретной ориентации?

Я попытался написать специальный повернутый макет, расширив RelativeLayout, но метод onDraw не вызывается в любое время.

public class RotatedOverlay extends RelativeLayout {


private static final String TAG = "RotatedOverlay";


public RotatedOverlay(Context context, AttributeSet attrs ) {
    super(context, attrs);
}

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

Я довольно новичок в программировании платформы Android. Конечно, я пока не очень разбираюсь в хитростях и обходных путях программирования. За последние две недели я провел много исследований (даже изучал собственную реализацию Camera), но пока не смог найти хорошего решения.

Может быть, это работает с двумя отдельными видами деятельности, но я не думаю, что это может быть правильным решением.

1 Ответ

0 голосов
/ 27 августа 2010

Вам нужно переопределить onDispatchDraw, чтобы повернуть дочерние элементы ViewGroup, но затем вы столкнетесь с другими проблемами (см. мой вопрос )

...