视频通话view旋转流程

1、com/android/incallui/InCallOrientationEventListener.java

手机设备旋转时回调的方法:

@Override
public void onOrientationChanged(int rotation) {
    if (rotation == OrientationEventListener.ORIENTATION_UNKNOWN) {
        return;
    }

    final int orientation = toScreenOrientation(rotation);

    if (orientation != SCREEN_ORIENTATION_UNKNOWN && sCurrentOrientation != orientation) {
        sCurrentOrientation = orientation;
        InCallPresenter.getInstance().onDeviceOrientationChange(sCurrentOrientation);
    }
}
2、 com / android / incallui / InCallPresenter.java
public void onDeviceOrientationChange(int orientation) {
    Log.d(this, "onDeviceOrientationChange: orientation= " + orientation);

    if (mCallList != null) {
        mCallList.notifyCallsOfDeviceRotation(orientation);
    } else {
        Log.w(this, "onDeviceOrientationChange: CallList is null.");
    }

    // Notify listeners of device orientation changed.
    for (InCallOrientationListener listener : mOrientationListeners) {
        listener.onDeviceOrientationChanged(orientation);
    }
}
3、 com / android / incallui / VideoCallPresenter.java

回调onDeviceOrientationChanged:

@Override
public void onDeviceOrientationChanged(int orientation) {
    mDeviceOrientation = orientation;

    VideoCallUi ui = getUi();
    if (ui == null) {
        Log.e(this, "onDeviceOrientationChanged: VideoCallUi is null");
        return;
    }

    Point previewDimensions = ui.getPreviewSize();
    if (previewDimensions == null) {
        return;
    }
    Log.d(this, "onDeviceOrientationChanged: orientation=" + orientation + " size: "
            + previewDimensions);
    changePreviewDimensions(previewDimensions.x, previewDimensions.y);

    ui.setPreviewRotation(mDeviceOrientation);
}
4、 com / android / incallui / VideoCallFragment.java

调用setPreviewRotation方法:

@Override
public void setPreviewRotation(int orientation) {
    Log.d(this, "setPreviewRotation: orientation=" + orientation);
    if (sPreviewSurface != null) {
        TextureView preview = sPreviewSurface.getTextureView();

        if (preview == null ) {
            return;
        }

        preview.setRotation(orientation);
    }
}

这里的setRotation其实就是View类的一个方法,用于旋转一个子view。




















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值