我在自定义对话框中有一个视频视图,我正在为视频视图动态创建一个媒体控制器,并将其分配给代码中的视频视图,但是控制器实际上并不出现在视频上-它出现在对话框后面!你知道怎么把控制器放在视频上面吗?
我创建了一个静态对话框助手类来帮助构建自定义对话框:
public class DialogHelper {
public static Dialog getVideoDialog(Context context, Uri videoLocation, boolean autoplay) {
final Dialog dialog = getBaseDialog(context,true, R.layout.dialog_video);
((Activity)context).getWindow().setFormat(PixelFormat.TRANSLUCENT);
final VideoView videoHolder = (VideoView) dialog.findViewById(R.id.video_view);
videoHolder.setVideoURI(videoLocation);
//videoHolder.setRotation(90);
MediaController mediaController = new MediaController(context);
videoHolder.setMediaController(mediaController);
mediaController.setAnchorView(videoHolder);
videoHolder.requestFocus();
if(autoplay) {
videoHolder.start();
}
videoHolder.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
dialog.dismiss();
}
});
return dialog;
}
/**
* Creates a simple dialog box with as many buttons as you want
* @param context The context of the dialog
* @param cancelable whether the dialog can be closed/cancelled by the user
* @param layoutResID the resource id of the layout you want within the dialog
*
* @return the dialog
*/
public static Dialog getBaseDialog(Context context, boolean cancelable, int layoutResID) {
Dialog dialog = new Dialog(context, R.style.Theme_PopUpDialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(cancelable);
dialog.setCanceledOnTouchOutside(cancelable);
dialog.setContentView(layoutResID);
return dialog;
}
}
所以在我的活动
中,我只有这个来创建我的对话框:
Dialog videoDialog = DialogHelper.getVideoDialog(context, Uri.parse("http://commonsware.com/misc/test2.3gp"), true);
videoDialog.show();
我建议您需要使用活动,而不是对话框。将您的活动主题设置为模拟清单中的对话框。
示例-AndroidManifest.xml:
android:theme="@android:style/Theme.Dialog"
然后,您将能够显示示例中的视频视图。
这对我有用
在xml布局中进行如下更改,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/videoview"
android:layout_width="640dp"
android:layout_height="400dp"
android:layout_centerInParent="true" >
</VideoView>
<FrameLayout
android:id="@+id/videoViewWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
</FrameLayout>
</RelativeLayout>
在你的假阳具里,
mVideoView = (VideoView) view.findViewById(R.id.videoview);
在这种情况下,视频视图使用setOnPreparedListener listener和set media controller,
mVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp,
int width, int height) {
/*
* add media controller
*/
mc = new MediaController(MainActivity.this);
mVideoView.setMediaController(mc);
/*
* and set its position on screen
*/
mc.setAnchorView(mVideoView);
((ViewGroup) mc.getParent()).removeView(mc);
((FrameLayout) findViewById(R.id.videoViewWrapper))
.addView(mc);
mc.setVisibility(View.VISIBLE);
}
});
mVideoView.start();
}
});
本文向大家介绍Android AlertDialog实现分享对话框/退出对话框/下载对话框,包括了Android AlertDialog实现分享对话框/退出对话框/下载对话框的使用技巧和注意事项,需要的朋友参考一下 一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直
我想在videoview中播放一个视频文件,该文件显示在一个对话框中,完成后应关闭对话框。我阅读了有关通过media controller进行播放的内容,因此我有以下内容: 1) 声明mediacontroller的部分是错误的。它无法获取上下文,上下文是什么? 2) 如何根据最大高度和重量控制此对话框的大小?
对话框的内容不是在页面最初可见,而是在用户操作时显示额外的信息。 Toasts Materialize 提供了非常简单的方法,来弹出一些信息,同时也不会让用户感到突兀。这些 Toasts 显示的位置和大小会随着你的设备的不同而改变。 在 JavaScript 中调用 Materialize.toast() 方法来使用。 // Materialize.toast(message, displayLe
对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。 输入文字 QInputDialog提供了一个简单方便的对话框,可以输入字符串,数字或列表。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this
打开或保存文件,弹出警告等对话框 进程: 主进程 选择多个文件和目录的对话框: 1 const {dialog} = require('electron') 2 console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) Copied! 对话框默认是在主线程中
显示用于打开和保存文件、警报等的本机系统对话框。 线程:主线程 显示用于选择多个文件和目录的对话框的示例: const { dialog } = require('electron') console.log(dialog.showOpenDialog({ properties: ['openFile', 'openDirectory', 'multiSelections'] })) 这个对话框是