背景:
直播界面的布局是上部16:9的主視頻區(qū)域,下部是聊天輸入布局加上16:9的文檔布局。剩下的區(qū)域放視頻列表,要求適配剩余位置居中。
存在問題:
1,當手機分辨率低,中間剩下的位置較少的情況下,小視頻列表會顯示不全,甚至和上下視頻文檔區(qū)域產(chǎn)生重疊。
2,主播的圖標以及文字被蓋住(這個和小視頻會蓋住主視頻以及文檔區(qū)域一樣,因為小視頻view是后面add進去的)
解決方案:
代碼處理。先算出剩余空間高度,然后按比例給出高度
代碼
獲取到剩余高度傳給videoadapter
mVideoAdapter=newVideoAdapter(DocClassLiveActivity.this,mVideos.getMeasuredHeight());
在videoviewholder里處理每一個item的寬高
VideoViewHolder(View itemView) {
super(itemView);
int itemHeight = parentHeight - DisplayUtils.dip2px(5f);
int itemWidth = (int) (itemHeight / 1.76);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mDocItemRoot.getLayoutParams();
layoutParams.setMargins(0,DisplayUtils.dip2px(2.5f),0,DisplayUtils.dip2px(2.5f));
layoutParams.width = itemWidth;
layoutParams.height = itemHeight;
mDocItemRoot.setLayoutParams(layoutParams);
}
itemHeight 減去5dp是為了給上下留點縫隙,寬高比給她1.76
if(videoStreamView.getIsPresenter()){
params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}else {
params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
}
params.addRule(RelativeLayout.CENTER_IN_PARENT);
renderer.setLayoutParams(params);
holder.mDocItemRoot.addView(renderer,0 );
添加的時候?qū)κ欠駷橹饕曨l進行區(qū)分,addview的時候后面參數(shù)為0,處理添加的view蓋住主講圖標以及名字問題。