最近在做四宫格视频的任务,就是在一个界面放四个播放视频的窗口,这里选用的是SurfaceView进行播放,布局采用的相对布局 <RelativeLayout android:id="@+id/layout_video0" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/video_background" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" > <com.lib.funsdk.support.widget.FunVideoView android:id="@+id/fun_rec_video_view0" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" /> </RelativeLayout> 每个view外面包裹一个layout,选中的时候会有效果。 为了更好的适配不同的适配,先要预先得到屏幕的大小,在设置窗口的大小。 screenheight =getWindowManager().getDefaultDisplay().getHeight(); LayoutParams lp0 = new LayoutParams(screenwith/2, screenheight/2); LayoutParams lp1 = new LayoutParams(screenwith/2, screenheight/2); LayoutParams lp2 = new LayoutParams(screenwith/2, screenheight/2); LayoutParams lp3 = new LayoutParams(screenwith/2, screenheight/2); lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT); lp1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); lp2.addRule(RelativeLayout.ALIGN_PARENT_LEFT); lp3.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); lp3.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); mLayout0.setLayoutParams(lp0); mLayout1.setLayoutParams(lp1); mLayout2.setLayoutParams(lp2); mLayout3.setLayoutParams(lp3); 四个包含view的layout都是已父窗体为参照对象设置布局。 点击窗口会放大至全屏播放,这里有个小问题,就是SurfaceView所在的layout设置为View.GONE,并不能使视频隐藏,原因是由于SurfaceView与activity不在一个layer上。 需要remove.view(SurfaceView);才能使对应的视频全屏。不然就是以下的效果。 ![这里写图片描述](https://img-blog.csdn.net/20160920173309643) 设置全屏的方式为 final LayoutParams layoutParams = new LayoutParams( screenwith , screenheight); layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); mLayoutx.setLayoutParams(layoutParams); 还有一点是在全屏放大时应使不放大的视频停止播放,在缩小为正常时使所以视频开始播放。
关于SurfaceView和事件的传递
最新推荐文章于 2024-05-08 17:28:07 发布