gpt4 book ai didi

android-fragments - 视频在上一个 fragment 的 onCreate 上闪烁一次

转载 作者:太空狗 更新时间:2023-10-29 16:23:05 26 4
gpt4 key购买 nike

我已经使用 fragments 为 galaxy tab 创建了一个应用程序。我在 fragment 上有一个 videoview 来播放来自外部存储的视频。

这是该 fragment 的代码 -

package com.example.hscroll.demo;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.RelativeLayout;
import android.widget.VideoView;


public class FragmentVideo1 extends Fragment implements OnTouchListener{

LayoutInflater inflater;
private VideoView video;
private MediaController ctlr;
int length = 0;
boolean isPlaying = false;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance)
{
this.inflater = inflater;
if(container == null)return null;

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
container = (LinearLayout)inflater.inflate(R.layout.video, container, false);
video=(VideoView)container.findViewById(R.id.video);
video.setVideoPath("/mnt/sdcard/Ideal Solar/video1.mp4");


ctlr=new MediaController(inflater.getContext());
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
}else
{
container = (RelativeLayout)inflater.inflate(R.layout.video_land, container, false);
video=(VideoView)container.findViewById(R.id.myVideo_land);
video.setVideoPath("/mnt/sdcard/Ideal Solar/video1.mp4");

ctlr=new MediaController(inflater.getContext());
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
video.start();
}

return container;
}

}

当我来到这个视频 fragment 之前的 fragment 时,它闪烁一次(就像视频 fragment 在这个 fragment 下方可见)。它只发生在第一次。如果我回去再回到这个 fragment ,它不会眨眼。

视频 fragment 之前的 fragment 代码 -

   package com.example.hscroll.demo;

import java.io.BufferedInputStream;
import java.io.FileInputStream;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.example.hscroll.customer.BitmapWeakReference;
import com.example.hscroll.library.imagezoom.ImageViewTouch;

public class Fragment2 extends Fragment{

ImageViewTouch imgview ;
LayoutInflater inflater;
FileInputStream in;
BufferedInputStream buf;
BitmapWeakReference bitmap;
ViewGroup con;
static Fragment2 frag2;

public static Fragment2 newInstance(int num)
{
if(frag2 == null)
frag2 = new Fragment2();
return frag2;
}

private final String PATH = "/mnt/sdcard/Ideal Solar/page_03.png";

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance)
{
this.inflater = inflater;
if(container == null)return null;
container = (LinearLayout)inflater.inflate(R.layout.fragment0_layout, container, false);
con = container;
imgview= (ImageViewTouch)container.findViewById(R.id.imageView1);
bitmap = new BitmapWeakReference(imgview.selectImage(inflater.getContext(), PATH));
if(bitmap!=null)
imgview.setImageBitmapReset( bitmap.get(), true );

return container;
}


@Override
public void onDestroyView() {
super.onDestroyView();
imgview.setImageBitmap(null);
bitmap.clear();
bitmap = null;
Fragment1.unbindDrawables(con.findViewById(R.id.ll));
System.gc();
}

}

我只是在这个 fragment 上展示一张图片。

视频 fragment 的 XML -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/header"
android:background="@drawable/video_header"/>

<VideoView
android:id="@+id/video"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>

在此先感谢任何可以提供帮助的人。

最佳答案

VideoView继承自SurfaceView,SurfaceView导致了这个问题。尝试在您的应用程序加载时(在 onCreate ... 中)向您的 mainView 添加一个虚拟 SurfaceView。为我解决了这个问题。

关于android-fragments - 视频在上一个 fragment 的 onCreate 上闪烁一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com