Как заставить альфа смешивание на видеовиде - PullRequest
4 голосов
/ 10 марта 2012

У меня есть приложение для Android, которое отображает VideoView с кнопками перед ним. На целевом устройстве кнопки правильно отображаются сверху, пока VideoView не перерисовывается (например, при возврате из другого действия). Затем кнопки скрываются VideoView.

Это не происходит на двух других устройствах, и, насколько я могу судить, это не ожидаемое поведение в Android. Я считаю, что это связано с ошибкой, которую я вижу на устройстве. Тег 'TIOverlay' и текст

'static void overlay_control_context_t::overlay_destroyOverlay( overlay_control_device_t*, overlay_t*) : Lets Switch off Alpha Blending'

Есть ли способ заставить VideoView пересчитать его альфа? Так как исходный вид корректен, я предполагаю, что он просто не учитывает полный макет при перерисовке.

Это мой код инициализации VideoView:

    //set up video
    this.videoView = (VideoView) findViewById(R.id.introVideoView);
    videoView.setZOrderOnTop(false);


    //create intro movie and begin playing
    String uri = "android.resource://"+getPackageName()+"/"+R.raw.movie;
    videoView.setVideoURI(Uri.parse(uri));
    //set to looping
    videoView.setOnPreparedListener(new OnPreparedListener(){

    @Override
    public void onPrepared(MediaPlayer mp)
    {
    mp.setLooping(true);
    }});
    videoView.start();

Редактировать

Макет, который я использую для отображения кнопок перед просмотром видео:

</p> <pre><code><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/mainLayout" > <VideoView android:id="@+id/introVideoView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <ImageButton android:id="@+id/exitDemoButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:contentDescription="Exit Demo >>" android:onClick="exitDemo" android:background="#00000000" android:src="@drawable/exit_selector" /> <LinearLayout android:id="@+id/buttonLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="horizontal" > <ImageButton android:id="@+id/resumeVideoButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onResumeClicked" android:contentDescription="Resume Video" android:background="#00000000" android:src="@drawable/resume_selector" /> <ImageButton android:id="@+id/guidedTourButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onTourClicked" android:contentDescription="Guided Tour" android:background="#00000000" android:src="@drawable/tour_selector" /> </LinearLayout>

1 Ответ

0 голосов
/ 25 февраля 2015

Я нашел решение. Похоже, потому что я переключался обратно в это представление из других намерений с аналогичными VideoViews, мне нужно было приостановить видео, используя VideoView.suspend(), прежде чем я переключился в другое намерение или обратно из этого намерения в это. Я предполагаю, что это связано с тем, что у оборудования был только один хороший аппаратный видеобуфер, и он сохранил VideoView, который я только что оставил в буфере.

...