我有一个listview.list视图中的每个listitem包含一个surfaceview,一个imageview和按钮.最初,surfaceview的可见性将消失.只有imageview和按钮可见.
一旦用户点击图像视图或按钮,表面视图就可以看到媒体播放器被初始化,它将开始在表面视图上播放视频.当用户向上和向下滚动时,表面视图的可见性再次变化(消失).一次只能看到一个表面视图.
当用户触摸任何列表项时,它会检查是否已存在任何其他媒体播放器(如果存在),它将被释放,并且新的媒体播放器将使用新的surfaceview实例进行初始化.
这很好用.但问题是
释放现有的媒体播放器并初始化新的媒体播放器需要时间(主要在方法mediaplayer.prepareasyn()和mediaplayer.start()之间).如果点击listitem并慢慢移开我的手它工作正常...否则,如果它被非常快地点击它不播放视频只有surfaceview可见.
现行解决方案
我尝试在这两种方法之间应用postdelay它工作正常.我想知道这是否是这样做的有效方法.或者有没有其他方法可以实现更快的反应.
我想在Horizontal ScrollView中显示多个YouTube视频.为此,我正在动态添加YouTubePlayerFragments.这是我的代码片段:
//set videos
int count = 0;
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
for (final Video video : mVideos) {
//create an instance of a video fragment
final VideoFragment fragment = new VideoFragment();// VideoFragment extends YouTubePlayerFragment
Bundle bundle = new Bundle();
if (null != mVideos && 0 < mVideos.size()) {
bundle.putString(VideoFragment.KEY_VIDEO_KEY, video.getKey());
}
fragment.setArguments(bundle);
FrameLayout frameLayout = new FrameLayout(getActivity());
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(900, 500));
frameLayout.setPadding(10, 0, 10, 0);
frameLayout.setId(12345 + ++count);
mLayoutTrailers.addView(frameLayout);//mLayoutTrailers is a LinearLayout inside my Horizontal ScrollView …Run Code Online (Sandbox Code Playgroud) android horizontalscrollview android-fragments android-youtube-api