[mobile] add cutout detect - part 2

pull/142/head
FongMi 3 years ago
parent d9cd74d244
commit 9c2dd94cb7
  1. 14
      app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java
  2. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 19
      app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  5. 2
      app/src/mobile/res/drawable/shape_control.xml

@ -128,19 +128,7 @@ public class ResUtil {
return AnimationUtils.loadAnimation(App.get(), resId);
}
private static Display getDisplay(Activity activity) {
public static Display getDisplay(Activity activity) {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R ? activity.getDisplay() : activity.getWindowManager().getDefaultDisplay();
}
public static void setPadding(Activity activity, ViewGroup layout) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return;
DisplayCutout cutout = getDisplay(activity).getCutout();
if (cutout == null) return;
int top = cutout.getSafeInsetTop();
int left = cutout.getSafeInsetLeft();
int right = cutout.getSafeInsetRight();
int bottom = cutout.getSafeInsetBottom();
int padding = left | right | top | bottom;
layout.setPadding(padding, 0, padding, 0);
}
}

@ -156,8 +156,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mFormatTime = new SimpleDateFormat("yyyy-MM-ddHH:mm", Locale.getDefault());
mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
mKeyDown = CustomKeyDownLive.create(this, mBinding.video);
ResUtil.setPadding(this, mBinding.control.getRoot());
mClock = Clock.create(mBinding.widget.time);
setPadding(mBinding.control.getRoot());
mPlayers = new Players().init(this);
mObserveChannel = this::start;
mHides = new ArrayList<>();
@ -837,6 +837,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
public void setRotate(boolean rotate) {
this.rotate = rotate;
if (rotate) resetPadding(mBinding.control.getRoot());
else setPadding(mBinding.control.getRoot());
}
public boolean isStop() {

@ -851,7 +851,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
if (isFullscreen()) return;
App.post(() -> mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)), 50);
setRequestedOrientation(mPlayers.isPortrait() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
ResUtil.setPadding(this, mBinding.control.getRoot());
mBinding.control.full.setVisibility(View.GONE);
mDanmakuContext.setScaleTextSize(1.0f);
setSubtitle(Setting.getSubtitle());
@ -867,7 +866,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
setRequestedOrientation(isPort() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_FULL_USER);
mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition());
mBinding.control.full.setVisibility(View.VISIBLE);
mBinding.control.getRoot().setPadding(0, 0, 0, 0);
mBinding.video.setLayoutParams(mFrameParams);
mDanmakuContext.setScaleTextSize(0.8f);
App.post(mR3, 2000);
@ -1051,7 +1049,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void checkDanmuImg() {
mBinding.control.danmu.setImageResource(Setting.isDanmu() ? R.drawable.ic_control_danmu_off : R.drawable.ic_control_danmu_on);
mBinding.control.danmu.setImageResource(Setting.isDanmu() ? R.drawable.ic_control_danmu_on : R.drawable.ic_control_danmu_off);
}
private void createKeep() {
@ -1366,6 +1364,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
public void setRotate(boolean rotate) {
this.rotate = rotate;
if (rotate) resetPadding(mBinding.control.getRoot());
else setPadding(mBinding.control.getRoot());
}
public boolean isStop() {

@ -3,8 +3,11 @@ package com.fongmi.android.tv.ui.base;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.DisplayCutout;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.appcompat.app.AppCompatActivity;
@ -64,6 +67,22 @@ public abstract class BaseActivity extends AppCompatActivity {
return view.getVisibility() == View.GONE;
}
protected void setPadding(ViewGroup layout) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return;
DisplayCutout cutout = ResUtil.getDisplay(this).getCutout();
if (cutout == null) return;
int top = cutout.getSafeInsetTop();
int left = cutout.getSafeInsetLeft();
int right = cutout.getSafeInsetRight();
int bottom = cutout.getSafeInsetBottom();
int padding = left | right | top | bottom;
layout.setPadding(padding, 0, padding, 0);
}
protected void resetPadding(ViewGroup layout) {
layout.setPadding(0, 0, 0, 0);
}
private void setWall() {
try {
if (!customWall()) return;

@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/black_50" />
<solid android:color="@color/black_40" />
<padding
android:bottom="8dp"

Loading…
Cancel
Save