Я пытаюсь создать представление, в котором воспроизводится видео, и два ImageButtons на одном экране. Я использую VideoView для размещения моего видео и ImageButtons для обеих кнопок. Оба дисплея отображаются правильно, когда я тестирую каждую функцию независимо, но они не будут отображаться вместе одновременно, когда я пытаюсь показать оба на одном экране! Я пробовал несколько макетов (кадр, линейный, относительный), ограничивая VideoView меньшим layout_width & layout_height и пробовал вес в файле xml, но ничего не работает. Отображение этого кажется слишком простым, чтобы требовать пользовательский вид, но я сделаю это, если потребуется.Показать видео и кнопки на одном экране в Android
Вот мои вопросы: знаете ли вы, как сделать кнопки изображения и видеоизображения на одном экране? Можете ли вы использовать представления Android, такие как VideoView и ImageButton, при создании пользовательского представления? Или вы можете просто нарисовать 2D-объекты на холстах в пользовательских представлениях?
Вот мой код в качестве ссылки: XML
<LinearLayout
android:id="@+id/videopart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="1">
<VideoView
android:id="@+id/videoplayer"
android:layout_width="395dp"
android:layout_height="111dp" >
</VideoView>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<ImageButton
android:contentDescription="@string/top"
android:id="@+id/topbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dip"
android:src="@drawable/yesbutton"
android:background="@null"/>
<ImageButton
android:contentDescription="@string/bottom"
android:id="@+id/bottombutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:src="@drawable/nobutton"
android:background="@null">
</ImageButton>
</LinearLayout>
И активность:
public class iplayer extends Activity {
VideoView videoHolder;
MediaPlayer mp;
ImageButton top, bottom;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
videoHolder = new VideoView(this);
//if you want the controls to appear
videoHolder.setMediaController(new MediaController(this));
Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.interactivevid);
videoHolder.setVideoURI(video);
// video finish listener:
videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// The video has finished, return from this activity
finish(); //close activity
}
});
videoHolder.requestFocus();
/*
videoHolder.requestLayout();
videoHolder.invalidate();
videoHolder.getLayoutParams().width = 20;//480;
*/
//start video
drawButtons();
//videoHolder.setPadding(BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND);
videoHolder.setPadding(5, 0, 5, 200);
setContentView(videoHolder); // used to actually put in video. when removed, shows buttons
videoHolder.start();
}
private void drawButtons(){
//make buttons invisible
top = (ImageButton)findViewById(R.id.topbutton);
top.setImageResource(R.drawable.yesbutton);
top.setVisibility(View.VISIBLE);
bottom = (ImageButton)findViewById(R.id.bottombutton);
bottom.setImageResource(R.drawable.nobutton);
bottom.setVisibility(View.VISIBLE);
}
}
Он имеет что-то делать с setContentView (держателем видео), что делает видеоизображение полным экраном. Вместо этого кнопки и видео должны каким-то образом передаваться в contentView. – Cal