123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package io.rong.callkit;
- import android.content.Context;
- import android.support.annotation.NonNull;
- import android.util.AttributeSet;
- import android.view.SurfaceView;
- import android.view.ViewGroup;
- import android.view.WindowManager;
- import android.widget.RelativeLayout;
- import com.bailingcloud.bailingvideo.engine.binstack.util.FinLog;
- import com.bailingcloud.bailingvideo.engine.view.BlinkVideoView;
- /**
- * Created by Administrator on 2017/3/30.
- */
- public class ContainerLayout extends RelativeLayout {
- private Context context;
- private static boolean isNeedFillScrren = true;
- SurfaceView currentView;
- public ContainerLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- }
- public void addView(final SurfaceView videoView) {
- WindowManager wm = (WindowManager) context
- .getSystemService(Context.WINDOW_SERVICE);
- this.screenWidth = wm.getDefaultDisplay().getWidth();
- ;
- this.screenHeight = wm.getDefaultDisplay().getHeight();
- ;
- FinLog.d("---xx-- add view " + videoView.toString() + " Height: " + ((BlinkVideoView) videoView).rotatedFrameHeight + " Width: " + ((BlinkVideoView) videoView).rotatedFrameWidth);
- super.addView(videoView, getBigContainerParams((BlinkVideoView) videoView));
- currentView = videoView;
- ((BlinkVideoView) videoView).setOnSizeChangedListener(new BlinkVideoView.OnSizeChangedListener() {
- @Override
- public void onChanged(BlinkVideoView.Size size) {
- try {
- ContainerLayout.this.removeAllViews();
- FinLog.d("---xx-- change view " + videoView.toString() + " Height: " + ((BlinkVideoView) videoView).rotatedFrameHeight + " Width: " + ((BlinkVideoView) videoView).rotatedFrameWidth);
- ContainerLayout.this.addView(videoView, getBigContainerParams((BlinkVideoView) videoView));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- @NonNull
- private LayoutParams getBigContainerParams(BlinkVideoView videoView) {
- LayoutParams layoutParams = null;
- if (!isNeedFillScrren) {
- if (screenHeight > screenWidth) { //V
- int layoutParamsHeight = (videoView.rotatedFrameHeight == 0 || videoView.rotatedFrameWidth == 0) ? ViewGroup.LayoutParams.WRAP_CONTENT : screenWidth * videoView.rotatedFrameHeight / videoView.rotatedFrameWidth;
- layoutParams = new LayoutParams(screenWidth, layoutParamsHeight);
- } else {
- int layoutParamsWidth = (videoView.rotatedFrameHeight == 0 || videoView.rotatedFrameHeight == 0) ? ViewGroup.LayoutParams.WRAP_CONTENT : (screenWidth * videoView.rotatedFrameWidth / videoView.rotatedFrameHeight > screenWidth ? screenWidth : screenHeight * videoView.rotatedFrameWidth / videoView.rotatedFrameHeight);
- layoutParams = new LayoutParams(layoutParamsWidth, screenHeight);
- }
- } else {
- layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- }
- layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
- return layoutParams;
- }
- public void setIsNeedFillScrren(boolean isNeed) {
- isNeedFillScrren = isNeed;
- }
- @Override
- public void removeAllViews() {
- if (currentView != null)
- ((BlinkVideoView) currentView).setOnSizeChangedListener(null);
- super.removeAllViews();
- }
- private int screenWidth;
- private int screenHeight;
- }
|