Skip to content

Commit

Permalink
Unify navigation transitions
Browse files Browse the repository at this point in the history
  • Loading branch information
patzly committed Sep 28, 2024
1 parent a643c0f commit 2740e85
Show file tree
Hide file tree
Showing 13 changed files with 97 additions and 139 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -560,9 +560,7 @@ public void updateGrocyApi() {

@NonNull
public BaseFragment getCurrentFragment() {
Fragment navHostFragment = fragmentManager.findFragmentById(R.id.fragment_main_nav_host);
assert navHostFragment != null;
return (BaseFragment) navHostFragment.getChildFragmentManager().getFragments().get(0);
return navUtil.getCurrentFragment();
}

private void replaceFabIcon(Drawable icon, String tag, boolean animated) {
Expand Down
165 changes: 55 additions & 110 deletions app/src/main/java/xyz/zedler/patrick/grocy/fragment/BaseFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
import xyz.zedler.patrick.grocy.util.NavUtil;
import xyz.zedler.patrick.grocy.util.ViewUtil;

@SuppressWarnings("EmptyMethod")
public class BaseFragment extends Fragment {

private MainActivity activity;
Expand Down Expand Up @@ -112,19 +111,17 @@ public boolean dispatchTouchEvent(MotionEvent event) {
return false;
}

public void getActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
public void getActivityResult(int requestCode, int resultCode, @Nullable Intent data) {}

}
public void updateUi(boolean animated) {}

public boolean isSearchVisible() {
return false;
}

public void dismissSearch() {
}
public void dismissSearch() {}

public void onBottomSheetDismissed() {
}
public void onBottomSheetDismissed() {}

public boolean onBackPressed() {
return false;
Expand All @@ -138,160 +135,110 @@ public boolean onKeyUp(int keyCode, KeyEvent event) {
return false;
}

public void editObject(Object object) {
}
public void editObject(Object object) {}

public void copyProduct(Product product) {
}
public void copyProduct(Product product) {}

public void deleteObject(int objectId) {
}
public void deleteObject(int objectId) {}

public void deleteShoppingList(ShoppingList shoppingList) {
}
public void deleteShoppingList(ShoppingList shoppingList) {}

public void clearShoppingList(ShoppingList shoppingList, boolean onlyDoneItems) {
}
public void clearShoppingList(ShoppingList shoppingList, boolean onlyDoneItems) {}

public void toggleDoneStatus(ShoppingListItem shoppingListItem) {
}
public void toggleDoneStatus(ShoppingListItem shoppingListItem) {}

public void purchaseItem(ShoppingListItem shoppingListItem) {
}
public void purchaseItem(ShoppingListItem shoppingListItem) {}

public void deleteItem(ShoppingListItem shoppingListItem) {
}
public void deleteItem(ShoppingListItem shoppingListItem) {}

public void editItem(ShoppingListItem shoppingListItem) {
}
public void editItem(ShoppingListItem shoppingListItem) {}

public void trackNextChoreSchedule(ChoreEntry choreEntry) {
}
public void trackNextChoreSchedule(ChoreEntry choreEntry) {}

public void skipNextChoreSchedule(ChoreEntry choreEntry) {
}
public void skipNextChoreSchedule(ChoreEntry choreEntry) {}

public void trackChoreExecutionNow(ChoreEntry choreEntry) {
}
public void trackChoreExecutionNow(ChoreEntry choreEntry) {}

public void rescheduleNextExecution(ChoreEntry choreEntry) {
}
public void rescheduleNextExecution(ChoreEntry choreEntry) {}

public void toggleDoneStatus(Task task) {
}
public void toggleDoneStatus(Task task) {}

public void deleteTask(Task task) {
}
public void deleteTask(Task task) {}

public void editTask(Task task) {
}
public void editTask(Task task) {}

public void deleteRecipePosition(int recipePositionId) {
}
public void deleteRecipePosition(int recipePositionId) {}

@Nullable
public MutableLiveData<Integer> getSelectedShoppingListIdLive() {
return null;
}

public void updateConnectivity(boolean isOnline) {
}
public void updateConnectivity(boolean isOnline) {}

public void selectShoppingList(ShoppingList shoppingList) {
}
public void selectShoppingList(ShoppingList shoppingList) {}

public void selectProduct(Product product) {
}
public void selectProduct(Product product) {}

public void createQuantityUnit(Bundle argsBundle) {
}
public void createQuantityUnit(Bundle argsBundle) {}

public void selectQuantityUnit(QuantityUnit quantityUnit) {
}
public void selectQuantityUnit(QuantityUnit quantityUnit) {}

public void selectQuantityUnit(QuantityUnit quantityUnit, Bundle argsBundle) {
}
public void selectQuantityUnit(QuantityUnit quantityUnit, Bundle argsBundle) {}

public void selectPurchasedDate(String purchasedDate) {
}
public void selectPurchasedDate(String purchasedDate) {}

public void selectDueDate(String dueDate) {
}
public void selectDueDate(String dueDate) {}

public void selectStockLocation(StockLocation stockLocation) {
}
public void selectStockLocation(StockLocation stockLocation) {}

public void selectStockEntry(StockEntry stockEntry) {
}
public void selectStockEntry(StockEntry stockEntry) {}

public void createProductGroup() {
}
public void createProductGroup() {}

public void selectProductGroup(ProductGroup productGroup) {
}
public void selectProductGroup(ProductGroup productGroup) {}

public void createLocation(Bundle args) {
}
public void createLocation(Bundle args) {}

public void selectLocation(Location location) {
}
public void selectLocation(Location location) {}

public void selectLocation(Location location, Bundle argsBundle) {
}
public void selectLocation(Location location, Bundle argsBundle) {}

public void selectStore(Store store) {
}
public void selectStore(Store store) {}

public void selectStore(Store store, boolean pinClicked) {
}
public void selectStore(Store store, boolean pinClicked) {}

public void selectTaskCategory(TaskCategory taskCategory) {
}
public void selectTaskCategory(TaskCategory taskCategory) {}

public void selectUser(User user) {
}
public void selectUser(User user) {}

public void setLanguage(Language language) {
}
public void setLanguage(Language language) {}

public void addBarcodeToNewProduct(String barcode) {
}
public void addBarcodeToNewProduct(String barcode) {}

public void addBarcodeToExistingProduct(String barcode) {
}
public void addBarcodeToExistingProduct(String barcode) {}

public void saveText(Spanned spanned) {
}
public void saveText(Spanned spanned) {}

public void saveInput(String text, Bundle argsBundle) {
}
public void saveInput(String text, Bundle argsBundle) {}

public void performAction(String action, StockItem stockItem) {
}
public void performAction(String action, StockItem stockItem) {}

public void performAction(String action, StockEntry stockEntry) {
}
public void performAction(String action, StockEntry stockEntry) {}

public void updateShortcuts() {
}
public void updateShortcuts() {}

public void updateBarcodeFormats() {
}
public void updateBarcodeFormats() {}

public void startTransaction() {
}
public void startTransaction() {}

public void startTransaction(boolean open) {
}
public void startTransaction(boolean open) {}

public void interruptCurrentProductFlow() {
}
public void interruptCurrentProductFlow() {}

public void enableLoginButtons() {
}
public void enableLoginButtons() {}

public void login(boolean checkVersion) {
}
public void login(boolean checkVersion) {}

@NonNull
public NavController findNavController() {
Expand Down Expand Up @@ -406,11 +353,9 @@ NavDestination getPreviousDestination() {
return backStackEntry.getDestination();
}

public void setOption(Object value, String option) {
}
public void setOption(Object value, String option) {}

interface ObserverListener {

void onChange(Object value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

package xyz.zedler.patrick.grocy.fragment;

import android.animation.LayoutTransition;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
Expand Down Expand Up @@ -98,6 +99,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
systemBarBehavior.setUp();
activity.setSystemBarBehavior(systemBarBehavior);

binding.relative.post(() -> {
LayoutTransition transition = new LayoutTransition();
transition.enableTransitionType(LayoutTransition.CHANGING);
binding.relative.setLayoutTransition(transition);
});
binding.linearContainer.post(() -> {
LayoutTransition transition = new LayoutTransition();
transition.enableTransitionType(LayoutTransition.CHANGING);
binding.linearContainer.setLayoutTransition(transition);
});

ViewUtil.setOnlyOverScrollStretchEnabled(binding.scrollHorizActionsStockOverview);
binding.scrollHorizActionsStockOverview.post(
() -> {
Expand Down
30 changes: 17 additions & 13 deletions app/src/main/java/xyz/zedler/patrick/grocy/util/NavUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,12 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentManager.OnBackStackChangedListener;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.navigation.NavController;
import androidx.navigation.NavController.OnDestinationChangedListener;
import androidx.navigation.NavDirections;
Expand All @@ -44,13 +49,14 @@
import xyz.zedler.patrick.grocy.Constants;
import xyz.zedler.patrick.grocy.R;
import xyz.zedler.patrick.grocy.activity.MainActivity;
import xyz.zedler.patrick.grocy.fragment.BaseFragment;

public class NavUtil {

private final String TAG;
private final MainActivity activity;
private NavController navController;
private final FragmentManager fragmentManager;
private final NavController navController;
private final NavHostFragment navHostFragment;
private final SharedPreferences sharedPrefs;

public NavUtil(
Expand All @@ -60,16 +66,22 @@ public NavUtil(
String tag
) {
this.activity = mainActivity;
this.fragmentManager = mainActivity.getSupportFragmentManager();
NavHostFragment navHostFragment = (NavHostFragment) fragmentManager
.findFragmentById(R.id.fragment_main_nav_host);
FragmentManager fragmentManager = mainActivity.getSupportFragmentManager();
navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(
R.id.fragment_main_nav_host
);
assert navHostFragment != null;
navController = navHostFragment.getNavController();
navController.addOnDestinationChangedListener(destinationListener);
this.sharedPrefs = sharedPrefs;
this.TAG = tag;
}

@NonNull
public BaseFragment getCurrentFragment() {
return (BaseFragment) navHostFragment.getChildFragmentManager().getFragments().get(0);
}

public void updateStartDestination() {
NavInflater navInflater = navController.getNavInflater();
NavGraph graph = navInflater.inflate(R.navigation.navigation_main);
Expand Down Expand Up @@ -133,19 +145,11 @@ public void navigate(NavDirections directions, @NonNull Navigator.Extras navigat
}

public void navigateUp() {
if (navController == null) {
NavHostFragment navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(
R.id.fragment_main_nav_host
);
assert navHostFragment != null;
navController = navHostFragment.getNavController();
}
navController.navigateUp();
activity.binding.bottomAppBar.performShow();
activity.hideKeyboard();
}

@Deprecated
public void navigate(@IdRes int destination, @Nullable Bundle arguments) {
if (navController == null ) {
Log.e(TAG, "navigateFragment: controller is null");
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/fragment_about.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorSurface">
android:transitionGroup="true">

<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_about"
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/res/layout/fragment_choose_product.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@

<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:transitionGroup="true">

<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorSurface">
android:transitionGroup="true">

<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar"
Expand Down
Loading

0 comments on commit 2740e85

Please sign in to comment.