背景:
直播界面的布局是上部16:9的主視頻區(qū)域砌左,下部是聊天輸入布局加上16:9的文檔布局。剩下的區(qū)域放視頻列表师崎,要求適配剩余位置居中默终。
存在問題:
1,當(dāng)手機(jī)分辨率低犁罩,中間剩下的位置較少的情況下穷蛹,小視頻列表會顯示不全,甚至和上下視頻文檔區(qū)域產(chǎn)生重疊昼汗。
2肴熏,主播的圖標(biāo)以及文字被蓋住(這個和小視頻會蓋住主視頻以及文檔區(qū)域一樣顷窒,因?yàn)樾∫曨lview是后面add進(jìn)去的)
解決方案:
代碼處理蛙吏。先算出剩余空間高度,然后按比例給出高度
代碼
獲取到剩余高度傳給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是為了給上下留點(diǎn)縫隙鞋吉,寬高比給她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進(jìn)行區(qū)分鸦做,addview的時候后面參數(shù)為0,處理添加的view蓋住主講圖標(biāo)以及名字問題谓着。