diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
index 528f19e..17b82fc 100644
--- a/.idea/caches/deviceStreaming.xml
+++ b/.idea/caches/deviceStreaming.xml
@@ -51,6 +51,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 33c53f5..7940610 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -14,4 +14,11 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/ch/pizzalemon/android/activity/BaseActivity.java b/app/src/main/java/ch/pizzalemon/android/activity/BaseActivity.java
index f77109a..637d8b3 100644
--- a/app/src/main/java/ch/pizzalemon/android/activity/BaseActivity.java
+++ b/app/src/main/java/ch/pizzalemon/android/activity/BaseActivity.java
@@ -3,11 +3,17 @@ package ch.pizzalemon.android.activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.os.Build;
import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import ch.pizzalemon.android.R;
import ch.pizzalemon.android.helper.DisplayHelper;
import io.github.inflationx.viewpump.ViewPumpContextWrapper;
@@ -23,8 +29,14 @@ public class BaseActivity extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCurrentActivity(this);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
- DisplayHelper.changeStatusColor();
+ }
+
+ @Override
+ public void setContentView(int layoutResID) {
+ super.setContentView(layoutResID);
+ applyToInsentForStatusBar();
+ if (layoutResID != R.layout.activity_main){
+ applyToInsentForNavigationBar();
}
}
@@ -64,4 +76,37 @@ public class BaseActivity extends AppCompatActivity {
}
return pInfo.versionName;
}
-}
+
+ private void applyToInsentForNavigationBar() {
+ if (DisplayHelper.getNavMode() != NavMode.THREE_BUTTON){
+ return;
+ }
+ ViewGroup content = findViewById(android.R.id.content);
+ if (content.getChildCount() > 0) {
+ View rootView = content.getChildAt(0);
+
+ ViewCompat.setOnApplyWindowInsetsListener(rootView, (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(0, systemBars.top, 0, systemBars.bottom);
+ return insets;
+ });
+
+ ViewCompat.requestApplyInsets(rootView);
+ }
+ }
+
+ private void applyToInsentForStatusBar() {
+ ViewGroup content = findViewById(android.R.id.content);
+ if (content.getChildCount() > 0) {
+ View rootView = content.getChildAt(0);
+
+ ViewCompat.setOnApplyWindowInsetsListener(rootView, (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(0, systemBars.top, 0, 0);
+ return insets;
+ });
+
+ ViewCompat.requestApplyInsets(rootView);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ch/pizzalemon/android/activity/MainActivity.java b/app/src/main/java/ch/pizzalemon/android/activity/MainActivity.java
index f607015..657b1d0 100644
--- a/app/src/main/java/ch/pizzalemon/android/activity/MainActivity.java
+++ b/app/src/main/java/ch/pizzalemon/android/activity/MainActivity.java
@@ -4,6 +4,8 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import com.google.android.material.bottomnavigation.BottomNavigationView;
+
+import androidx.core.view.WindowCompat;
import androidx.fragment.app.FragmentManager;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
@@ -13,9 +15,11 @@ import androidx.recyclerview.widget.RecyclerView;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.ArrayList;
@@ -34,6 +38,7 @@ import ch.pizzalemon.android.fragment.MenuFragment;
import ch.pizzalemon.android.fragment.ProductFragment;
import ch.pizzalemon.android.fragment.ProfileFragment;
import ch.pizzalemon.android.helper.DialogHelper;
+import ch.pizzalemon.android.helper.DisplayHelper;
import ch.pizzalemon.android.helper.PriceHelper;
import ch.pizzalemon.android.helper.SessionHelper;
import ch.pizzalemon.android.helper.SharedPrefsHelper;
@@ -56,6 +61,7 @@ public class MainActivity extends BaseActivity {
@BindView(R.id.badgeLayout) RelativeLayout badgeLayout;
@BindView(R.id.badgeTextView) TextView badgeTextView;
+ @BindView(R.id.shoppingCartLayout) LinearLayout shoppingCartLayout;
@BindView(R.id.shoppingCartButtonLayout) RelativeLayout shoppingCartButtonLayout;
@BindView(R.id.shoppingCartImageView) ImageView shoppingCartImageView;
@BindView(R.id.shoppingCartTextView) TextView shoppingCartTextView;
@@ -114,6 +120,14 @@ public class MainActivity extends BaseActivity {
private void initShoppingCartButton(){
+ int shoppingCartLayoutBottomMarginPx = DisplayHelper.dpToPx(20);
+ if (DisplayHelper.getNavMode() == NavMode.THREE_BUTTON){
+ shoppingCartLayoutBottomMarginPx = DisplayHelper.dpToPx(40);
+ }
+ ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) shoppingCartLayout.getLayoutParams();
+ params.bottomMargin = shoppingCartLayoutBottomMarginPx; // px cinsinden
+
+
animDown = AnimationUtils.loadAnimation(this, R.anim.anim_scale_down);
animUp = AnimationUtils.loadAnimation(this, R.anim.anim_scale_up);
diff --git a/app/src/main/java/ch/pizzalemon/android/activity/NavMode.java b/app/src/main/java/ch/pizzalemon/android/activity/NavMode.java
new file mode 100644
index 0000000..ed1de91
--- /dev/null
+++ b/app/src/main/java/ch/pizzalemon/android/activity/NavMode.java
@@ -0,0 +1,7 @@
+package ch.pizzalemon.android.activity;
+
+public enum NavMode {
+ THREE_BUTTON,
+ GESTURE,
+ UNKNOWN
+}
diff --git a/app/src/main/java/ch/pizzalemon/android/helper/DisplayHelper.java b/app/src/main/java/ch/pizzalemon/android/helper/DisplayHelper.java
index 6ee0867..9ae9646 100644
--- a/app/src/main/java/ch/pizzalemon/android/helper/DisplayHelper.java
+++ b/app/src/main/java/ch/pizzalemon/android/helper/DisplayHelper.java
@@ -1,14 +1,17 @@
package ch.pizzalemon.android.helper;
-import android.annotation.TargetApi;
-import android.os.Build;
import androidx.core.content.ContextCompat;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
import android.util.DisplayMetrics;
+import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import ch.pizzalemon.android.R;
import ch.pizzalemon.android.activity.BaseActivity;
+import ch.pizzalemon.android.activity.NavMode;
public class DisplayHelper {
@@ -32,10 +35,41 @@ public class DisplayHelper {
return Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ public static NavMode getNavMode() {
+ // 1) Settings.Secure (Android 10+ çoğu OEM’de doğru)
+ try {
+ int s = android.provider.Settings.Secure.getInt(
+ BaseActivity.currentActivity.getContentResolver(), "navigation_mode");
+ if (s == 0) return NavMode.THREE_BUTTON;
+ if (s == 2) return NavMode.GESTURE;
+ } catch (android.provider.Settings.SettingNotFoundException ignore) { }
+
+ // 2) Framework config (cihaz resource üzerinden dene)
+ int id = BaseActivity.currentActivity.getResources()
+ .getIdentifier("config_navBarInteractionMode", "integer", "android");
+ if (id != 0) {
+ int mode = BaseActivity.currentActivity.getResources().getInteger(id);
+ if (mode == 0) return NavMode.THREE_BUTTON;
+ if (mode == 2) return NavMode.GESTURE;
+ }
+
+ // 3) Fallback: WindowInsets (bunu view attached olduktan sonra çağır)
+ View root = BaseActivity.currentActivity.getWindow().getDecorView();
+ WindowInsetsCompat wi = ViewCompat.getRootWindowInsets(root);
+ if (wi == null) return NavMode.UNKNOWN;
+
+ Insets nav = wi.getInsets(WindowInsetsCompat.Type.navigationBars());
+ Insets gest = wi.getInsets(WindowInsetsCompat.Type.systemGestures());
+ // Heuristik: gesture'da nav bar yok ya da çok küçük; systemGestures > 0 olur
+ if (nav.bottom > 0 && gest.bottom == 0) return NavMode.THREE_BUTTON;
+ if (nav.bottom == 0 && gest.bottom > 0) return NavMode.GESTURE;
+ if (nav.bottom > 0 && gest.bottom > 0) {
+ // Bazı OEM'lerde küçük nav + gesture birlikte gelebilir
+ return (nav.bottom >= gest.bottom) ? NavMode.THREE_BUTTON : NavMode.GESTURE;
+ }
+ return NavMode.UNKNOWN;
+ }
public static void changeStatusColor() {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
- return;
Window window = BaseActivity.currentActivity.getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 9f313d3..ca9c5a2 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -118,7 +118,7 @@
@@ -191,16 +191,4 @@
-
-
\ No newline at end of file