我正在尝试在屏幕中间显示视频,但我只能听到音频,而且没有视频。 我在framelayout添加了按钮但显示了按钮(视频不是) 这是我的xml
<FrameLayout
android:layout_width="776dp"
android:layout_height="365dp"
android:layout_gravity="center"
android:id="@+id/videoLayout"
android:visibility="gone">
<SurfaceView
android:id="@+id/arVideoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="1"
android:layout_gravity="center"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|center_horizontal">
<Button
android:text="Stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonStop"
android:onClick="stopPlaying"/>
<Button
android:text="play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonPlay"
android:layout_toRightOf="@+id/buttonStop"
android:onClick="StartPlaying"/>
<Button
android:text="Start"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/buttonStart"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/buttonPlay"
android:onClick="MovieFromStart"/>
</RelativeLayout>
</FrameLayout>
这是我的代码:
public boolean Run(Model currentModel, Activity act) {
_act = act;
final FrameLayout rlVideo = (FrameLayout) act.findViewById(R.id.videoLayout);
final String str = Environment.getExternalStorageDirectory()+ "/sfmModelTracker/ex3/Models/" + currentModel.id + "/"+ clip.VideoName;
final SurfaceView tv = (SurfaceView) act.findViewById(R.id.arVideoView);
tv.setZOrderOnTop(true);
try {
tv.setZOrderOnTop(true);
player.setDataSource(str);
tv.setZOrderOnTop(true);
player.setDisplay(tv.getHolder());
tv.setZOrderOnTop(true);
} catch (Exception e) {
e.printStackTrace();
}
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// Adjust the size of the video
// so it fits on the screen
int videoWidth = player.getVideoWidth();
int videoHeight = player.getVideoHeight();
float videoProportion = (float) videoWidth / (float) videoHeight;
int screenWidth = rlVideo.getWidth();
int screenHeight = rlVideo.getHeight();
float screenProportion = (float) screenWidth / (float) screenHeight;
android.view.ViewGroup.LayoutParams lp = tv.getLayoutParams();
if (videoProportion > screenProportion) {
lp.width = screenWidth;
lp.height = (int) ((float) screenWidth / videoProportion);
} else {
lp.width = (int) (videoProportion * (float) screenHeight);
lp.height = screenHeight;
}
tv.setLayoutParams(lp);
if (!player.isPlaying()) {
player.start();
tv.setZOrderOnTop(true);
}
}
});
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
ScreenManager.getInstance( null ).StopPlaying();
}
});
tv.setZOrderOnTop(true);
try {
player.prepare();
tv.setZOrderOnTop(true);
rlVideo.setVisibility( View.VISIBLE );
//rl.setVisibility(View.VISIBLE);
tv.setVisibility( View.VISIBLE );
} catch (IOException e) {
e.printStackTrace();
}
//player.start();
//tv.sur
return false;
}
我做错了什么? (我已经尝试过设置Z - 没有工作)
谢谢你!
答案 0 :(得分:0)
尝试使用以下代码段。
VideoView play = (VideoView) view.findViewById(R.id.play);
MediaController mediaController = new MediaController(mContext);
mediaController.setAnchorView(play);
Uri video = Uri.parse("");
play.setMediaController(mediaController);
play.setVideoURI(video);
play.start();
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (play.isPlaying()) {
play.pause();
} else if (!play.isPlaying()) {
play.start();
}
}
});
xml将是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
<VideoView
android:id="@+id/play"
android:layout_width="match_parent"
android:layout_height="@dimen/height" />
</LinearLayout>