Fix fullscreen mode showing bottom nav bar and fix austinhuang0131/barinsta#1292
This commit is contained in:
parent
505d5acef3
commit
b3680584bf
@ -689,7 +689,7 @@ public class MainActivity extends BaseLanguageActivity implements FragmentManage
|
|||||||
if (mediaService == null) mediaService = MediaService.getInstance(null, null, 0L);
|
if (mediaService == null) mediaService = MediaService.getInstance(null, null, 0L);
|
||||||
final ServiceCallback<Media> postCb = new ServiceCallback<Media>() {
|
final ServiceCallback<Media> postCb = new ServiceCallback<Media>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final Media feedModel){
|
public void onSuccess(final Media feedModel) {
|
||||||
if (feedModel != null) {
|
if (feedModel != null) {
|
||||||
if (currentNavControllerLiveData == null) return;
|
if (currentNavControllerLiveData == null) return;
|
||||||
final NavController navController = currentNavControllerLiveData.getValue();
|
final NavController navController = currentNavControllerLiveData.getValue();
|
||||||
@ -701,8 +701,7 @@ public class MainActivity extends BaseLanguageActivity implements FragmentManage
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "showPostView: ", e);
|
Log.e(TAG, "showPostView: ", e);
|
||||||
}
|
}
|
||||||
}
|
} else Toast.makeText(getApplicationContext(), R.string.post_not_found, Toast.LENGTH_SHORT).show();
|
||||||
else Toast.makeText(getApplicationContext(), R.string.post_not_found, Toast.LENGTH_SHORT).show();
|
|
||||||
alertDialog.dismiss();
|
alertDialog.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ import android.view.MenuItem;
|
|||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -31,6 +30,8 @@ import androidx.appcompat.widget.Toolbar;
|
|||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
import androidx.core.content.PermissionChecker;
|
import androidx.core.content.PermissionChecker;
|
||||||
import androidx.core.view.WindowCompat;
|
import androidx.core.view.WindowCompat;
|
||||||
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
import androidx.core.view.WindowInsetsControllerCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
@ -52,6 +53,7 @@ import com.facebook.imagepipeline.request.ImageRequest;
|
|||||||
import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
import com.facebook.imagepipeline.request.ImageRequestBuilder;
|
||||||
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
import com.google.android.exoplayer2.ui.StyledPlayerView;
|
||||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
|
import com.google.android.material.bottomnavigation.BottomNavigationView;
|
||||||
import com.google.android.material.snackbar.BaseTransientBottomBar;
|
import com.google.android.material.snackbar.BaseTransientBottomBar;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
import com.skydoves.balloon.ArrowOrientation;
|
import com.skydoves.balloon.ArrowOrientation;
|
||||||
@ -135,6 +137,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
private Drawable originalRootBackground;
|
private Drawable originalRootBackground;
|
||||||
private ColorStateList originalLikeColorStateList;
|
private ColorStateList originalLikeColorStateList;
|
||||||
private ColorStateList originalSaveColorStateList;
|
private ColorStateList originalSaveColorStateList;
|
||||||
|
private WindowInsetsControllerCompat controller;
|
||||||
|
|
||||||
private final Observer<Object> backStackSavedStateObserver = result -> {
|
private final Observer<Object> backStackSavedStateObserver = result -> {
|
||||||
if (result == null) return;
|
if (result == null) return;
|
||||||
@ -162,6 +165,9 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
public void onCreate(@Nullable final Bundle savedInstanceState) {
|
public void onCreate(@Nullable final Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
viewModel = new ViewModelProvider(this).get(PostViewV2ViewModel.class);
|
viewModel = new ViewModelProvider(this).get(PostViewV2ViewModel.class);
|
||||||
|
final MainActivity activity = (MainActivity) getActivity();
|
||||||
|
if (activity == null) return;
|
||||||
|
controller = new WindowInsetsControllerCompat(activity.getWindow(), activity.getRootView());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@ -789,10 +795,6 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
originalHeight = widthHeight.second;
|
originalHeight = widthHeight.second;
|
||||||
final ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT,
|
final ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT,
|
||||||
originalHeight);
|
originalHeight);
|
||||||
layoutParams.topToBottom = binding.topBarrier.getId();
|
|
||||||
layoutParams.bottomToTop = bottom.buttonsTopBarrier.getId();
|
|
||||||
layoutParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
layoutParams.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
postImage.setLayoutParams(layoutParams);
|
postImage.setLayoutParams(layoutParams);
|
||||||
postImage.setHierarchy(new GenericDraweeHierarchyBuilder(resources)
|
postImage.setHierarchy(new GenericDraweeHierarchyBuilder(resources)
|
||||||
.setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER)
|
.setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER)
|
||||||
@ -823,8 +825,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
postImage.setTapListener(tapListener);
|
postImage.setTapListener(tapListener);
|
||||||
// postImage.setAllowTouchInterceptionWhileZoomed(true);
|
binding.postContainer.addView(postView);
|
||||||
binding.contentRoot.addView(postImage, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupSlider() {
|
private void setupSlider() {
|
||||||
@ -833,8 +834,9 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
if (context == null) return;
|
if (context == null) return;
|
||||||
sliderParent = new ViewPager2(context);
|
sliderParent = new ViewPager2(context);
|
||||||
final NullSafePair<Integer, Integer> maxHW = media
|
final List<Media> carouselMedia = media.getCarouselMedia();
|
||||||
.getCarouselMedia()
|
if (carouselMedia == null) return;
|
||||||
|
final NullSafePair<Integer, Integer> maxHW = carouselMedia
|
||||||
.stream()
|
.stream()
|
||||||
.reduce(new NullSafePair<>(0, 0),
|
.reduce(new NullSafePair<>(0, 0),
|
||||||
(prev, m) -> {
|
(prev, m) -> {
|
||||||
@ -854,13 +856,10 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
originalHeight = widthHeight.second;
|
originalHeight = widthHeight.second;
|
||||||
final ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT,
|
final ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT,
|
||||||
originalHeight);
|
originalHeight);
|
||||||
layoutParams.topToBottom = binding.topBarrier.getId();
|
|
||||||
layoutParams.bottomToTop = bottom.buttonsTopBarrier.getId();
|
|
||||||
layoutParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
layoutParams.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
sliderParent.setLayoutParams(layoutParams);
|
sliderParent.setLayoutParams(layoutParams);
|
||||||
postView = sliderParent;
|
postView = sliderParent;
|
||||||
binding.contentRoot.addView(sliderParent, 0);
|
// binding.contentRoot.addView(sliderParent, 0);
|
||||||
|
binding.postContainer.addView(postView);
|
||||||
|
|
||||||
final boolean hasVideo = media.getCarouselMedia()
|
final boolean hasVideo = media.getCarouselMedia()
|
||||||
.stream()
|
.stream()
|
||||||
@ -997,7 +996,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
final String text = "1/" + media.getCarouselMedia().size();
|
final String text = "1/" + carouselMedia.size();
|
||||||
binding.mediaCounter.setText(text);
|
binding.mediaCounter.setText(text);
|
||||||
sliderItemsAdapter.submitList(media.getCarouselMedia());
|
sliderItemsAdapter.submitList(media.getCarouselMedia());
|
||||||
}
|
}
|
||||||
@ -1040,12 +1039,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
layoutParams.width = ConstraintLayout.LayoutParams.MATCH_PARENT;
|
layoutParams.width = ConstraintLayout.LayoutParams.MATCH_PARENT;
|
||||||
originalHeight = widthHeight.second;
|
originalHeight = widthHeight.second;
|
||||||
layoutParams.height = originalHeight;
|
layoutParams.height = originalHeight;
|
||||||
layoutParams.topToBottom = binding.topBarrier.getId();
|
|
||||||
layoutParams.bottomToTop = bottom.buttonsTopBarrier.getId();
|
|
||||||
layoutParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
layoutParams.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
|
|
||||||
postView = videoPost.getRoot();
|
postView = videoPost.getRoot();
|
||||||
binding.contentRoot.addView(postView, 0);
|
binding.postContainer.addView(postView);
|
||||||
|
|
||||||
// final GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
|
// final GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
|
||||||
// @Override
|
// @Override
|
||||||
@ -1279,16 +1274,16 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
binding.getRoot().setBackground(colorDrawable);
|
binding.getRoot().setBackground(colorDrawable);
|
||||||
if (postView != null) {
|
if (postView != null) {
|
||||||
// Make post match parent
|
// Make post match parent
|
||||||
final ViewGroup.LayoutParams layoutParams = postView.getLayoutParams();
|
final int fullHeight = Utils.displayMetrics.heightPixels - Utils.getStatusBarHeight(context);
|
||||||
final int fullHeight = Utils.displayMetrics.heightPixels + Utils.getNavigationBarSize(context).y;
|
postView.getLayoutParams().height = fullHeight;
|
||||||
layoutParams.height = fullHeight;
|
binding.postContainer.getLayoutParams().height = fullHeight;
|
||||||
binding.contentRoot.getLayoutParams().height = fullHeight;
|
|
||||||
if (playerView != null) {
|
if (playerView != null) {
|
||||||
playerViewOriginalHeight = playerView.getLayoutParams().height;
|
playerViewOriginalHeight = playerView.getLayoutParams().height;
|
||||||
playerView.getLayoutParams().height = fullHeight;
|
playerView.getLayoutParams().height = fullHeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
detailsVisible = false;
|
detailsVisible = false;
|
||||||
|
|
||||||
if (media.getUser() != null) {
|
if (media.getUser() != null) {
|
||||||
binding.profilePic.setVisibility(View.GONE);
|
binding.profilePic.setVisibility(View.GONE);
|
||||||
binding.title.setVisibility(View.GONE);
|
binding.title.setVisibility(View.GONE);
|
||||||
@ -1322,9 +1317,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
}
|
}
|
||||||
if (postView != null) {
|
if (postView != null) {
|
||||||
// Make post height back to original
|
// Make post height back to original
|
||||||
final ViewGroup.LayoutParams layoutParams = postView.getLayoutParams();
|
postView.getLayoutParams().height = originalHeight;
|
||||||
layoutParams.height = originalHeight;
|
binding.postContainer.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
binding.contentRoot.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
|
||||||
if (playerView != null) {
|
if (playerView != null) {
|
||||||
playerView.getLayoutParams().height = playerViewOriginalHeight;
|
playerView.getLayoutParams().height = playerViewOriginalHeight;
|
||||||
playerView = null;
|
playerView = null;
|
||||||
@ -1395,23 +1389,17 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
if (toolbar != null) {
|
if (toolbar != null) {
|
||||||
toolbar.setVisibility(View.GONE);
|
toolbar.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
final View decorView = activity.getWindow().getDecorView();
|
final BottomNavigationView bottomNavView = activity.getBottomNavView();
|
||||||
originalSystemUi = decorView.getSystemUiVisibility();
|
bottomNavView.setVisibility(View.GONE);
|
||||||
decorView.setSystemUiVisibility(
|
binding.getRoot().setPadding(binding.getRoot().getPaddingLeft(),
|
||||||
View.SYSTEM_UI_FLAG_IMMERSIVE
|
binding.getRoot().getPaddingTop(),
|
||||||
// Set the content to appear under the system bars so that the
|
binding.getRoot().getPaddingRight(),
|
||||||
// content doesn't resize when the system bars hide and show.
|
0);
|
||||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
controller.hide(WindowInsetsCompat.Type.systemBars());
|
||||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
controller.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE);
|
||||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
|
||||||
// Hide the nav bar and status bar
|
|
||||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
|
||||||
| View.SYSTEM_UI_FLAG_FULLSCREEN);
|
|
||||||
isInFullScreenMode = true;
|
isInFullScreenMode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shows the system bars by removing all the flags
|
|
||||||
// except for the ones that make the content appear under the system bars.
|
|
||||||
private void showSystemUI() {
|
private void showSystemUI() {
|
||||||
if (!detailsVisible) {
|
if (!detailsVisible) {
|
||||||
toggleDetails();
|
toggleDetails();
|
||||||
@ -1430,10 +1418,16 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
|
|||||||
if (toolbar != null) {
|
if (toolbar != null) {
|
||||||
toolbar.setVisibility(View.VISIBLE);
|
toolbar.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
final Window window = activity.getWindow();
|
final BottomNavigationView bottomNavView = activity.getBottomNavView();
|
||||||
final View decorView = window.getDecorView();
|
bottomNavView.setVisibility(View.VISIBLE);
|
||||||
decorView.setSystemUiVisibility(originalSystemUi);
|
final Context context = getContext();
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false);
|
if (context == null) return;
|
||||||
|
binding.getRoot().setPadding(binding.getRoot().getPaddingLeft(),
|
||||||
|
binding.getRoot().getPaddingTop(),
|
||||||
|
binding.getRoot().getPaddingRight(),
|
||||||
|
Utils.getActionBarHeight(context));
|
||||||
|
controller.show(WindowInsetsCompat.Type.systemBars());
|
||||||
|
WindowCompat.setDecorFitsSystemWindows(activity.getWindow(), false);
|
||||||
isInFullScreenMode = false;
|
isInFullScreenMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +75,14 @@
|
|||||||
app:barrierAllowsGoneWidgets="true"
|
app:barrierAllowsGoneWidgets="true"
|
||||||
app:barrierDirection="bottom" />
|
app:barrierDirection="bottom" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/post_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/buttons_top_barrier"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/top_barrier"
|
||||||
|
tools:layout_height="100dp" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/media_counter"
|
android:id="@+id/media_counter"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -9,7 +9,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:barrierAllowsGoneWidgets="true"
|
app:barrierAllowsGoneWidgets="true"
|
||||||
app:barrierDirection="bottom" />
|
app:barrierDirection="bottom"
|
||||||
|
app:constraint_referenced_ids="post_container" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/like"
|
android:id="@+id/like"
|
||||||
@ -154,7 +155,7 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@id/buttons_bottom_barrier"
|
app:layout_constraintTop_toBottomOf="@id/buttons_bottom_barrier"
|
||||||
tools:layout_constraintVertical_chainStyle="packed"
|
tools:layout_constraintVertical_chainStyle="packed"
|
||||||
tools:text="2020-11-07 11:18:55"
|
tools:text="2020-11-07 11:18:55"
|
||||||
tools:visibility="visible" />
|
tools:visibility="gone" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/views_count"
|
android:id="@+id/views_count"
|
||||||
@ -166,14 +167,15 @@
|
|||||||
app:layout_constraintStart_toEndOf="@id/date"
|
app:layout_constraintStart_toEndOf="@id/date"
|
||||||
app:layout_constraintTop_toTopOf="@id/date"
|
app:layout_constraintTop_toTopOf="@id/date"
|
||||||
tools:text="9999999999 views"
|
tools:text="9999999999 views"
|
||||||
tools:visibility="visible" />
|
tools:visibility="gone" />
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Barrier
|
<androidx.constraintlayout.widget.Barrier
|
||||||
android:id="@+id/caption_barrier"
|
android:id="@+id/caption_barrier"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:barrierAllowsGoneWidgets="true"
|
app:barrierAllowsGoneWidgets="true"
|
||||||
app:barrierDirection="bottom" />
|
app:barrierDirection="bottom"
|
||||||
|
app:constraint_referenced_ids="like,likes_count,comment,comments_count,space_1,share,save,download" />
|
||||||
|
|
||||||
<awais.instagrabber.customviews.RamboTextViewV2
|
<awais.instagrabber.customviews.RamboTextViewV2
|
||||||
android:id="@+id/caption"
|
android:id="@+id/caption"
|
||||||
|
Loading…
Reference in New Issue
Block a user