From 81dc49483aab6c2360f237c94d791243c0d22197 Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Thu, 11 Sep 2025 09:00:06 +0300 Subject: [PATCH 1/4] Rename layout XMLs for consistent naming --- .../java/ads/managers/NativeAdLoader.java | 2 +- .../java/ads/views/NativeAdBannerView.java | 4 +- .../android/AndroidStudioFragment.java | 6 +- app/src/main/res/layout/activity_main.xml | 2 +- app/src/main/res/layout/activity_support.xml | 2 +- .../{about_native_ad.xml => ad_about.xml} | 0 ...tive_ad.xml => ad_android_studio_list.xml} | 0 app/src/main/res/layout/ad_bottom_app_bar.xml | 74 +++++++++++++++++++ ...native_ad.xml => ad_home_banner_large.xml} | 0 ...native_ad.xml => ad_home_banner_small.xml} | 0 .../res/layout/bottom_app_bar_native_ad.xml | 64 ---------------- ..._menu.xml => dialog_bottom_sheet_menu.xml} | 0 app/src/main/res/layout/fragment_about.xml | 2 +- app/src/main/res/layout/fragment_home.xml | 4 +- ...m.xml => item_android_studio_category.xml} | 0 ...tem.xml => item_android_studio_lesson.xml} | 0 ...ted_app_item.xml => item_promoted_app.xml} | 0 ...ayout.xml => widget_preference_switch.xml} | 0 app/src/main/res/values/themes.xml | 2 +- 19 files changed, 86 insertions(+), 76 deletions(-) rename app/src/main/res/layout/{about_native_ad.xml => ad_about.xml} (100%) rename app/src/main/res/layout/{android_studio_list_native_ad.xml => ad_android_studio_list.xml} (100%) create mode 100644 app/src/main/res/layout/ad_bottom_app_bar.xml rename app/src/main/res/layout/{large_home_banner_native_ad.xml => ad_home_banner_large.xml} (100%) rename app/src/main/res/layout/{small_home_banner_native_ad.xml => ad_home_banner_small.xml} (100%) delete mode 100644 app/src/main/res/layout/bottom_app_bar_native_ad.xml rename app/src/main/res/layout/{bottom_sheet_menu.xml => dialog_bottom_sheet_menu.xml} (100%) rename app/src/main/res/layout/{android_studio_category_item.xml => item_android_studio_category.xml} (100%) rename app/src/main/res/layout/{android_studio_lesson_item.xml => item_android_studio_lesson.xml} (100%) rename app/src/main/res/layout/{promoted_app_item.xml => item_promoted_app.xml} (100%) rename app/src/main/res/layout/{preference_switch_widget_layout.xml => widget_preference_switch.xml} (100%) diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ads/managers/NativeAdLoader.java b/app/src/main/java/com/d4rk/androidtutorials/java/ads/managers/NativeAdLoader.java index 124cdcec..808856d6 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ads/managers/NativeAdLoader.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ads/managers/NativeAdLoader.java @@ -29,7 +29,7 @@ public class NativeAdLoader { private static final String TAG = "NativeAdLoader"; public static void load(@NonNull Context context, @NonNull ViewGroup container) { - load(context, container, R.layout.large_home_banner_native_ad, null); + load(context, container, R.layout.ad_home_banner_large, null); } public static void load(@NonNull Context context, @NonNull ViewGroup container, @LayoutRes int layoutRes) { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ads/views/NativeAdBannerView.java b/app/src/main/java/com/d4rk/androidtutorials/java/ads/views/NativeAdBannerView.java index e5b465a1..eec659dc 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ads/views/NativeAdBannerView.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ads/views/NativeAdBannerView.java @@ -20,7 +20,7 @@ */ public class NativeAdBannerView extends FrameLayout { - private int layoutRes = R.layout.large_home_banner_native_ad; + private int layoutRes = R.layout.ad_home_banner_large; public NativeAdBannerView(@NonNull Context context) { super(context); @@ -40,7 +40,7 @@ public NativeAdBannerView(@NonNull Context context, @Nullable AttributeSet attrs private void init(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { if (attrs != null) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NativeAdBannerView, defStyleAttr, 0); - layoutRes = a.getResourceId(R.styleable.NativeAdBannerView_nativeAdLayout, R.layout.large_home_banner_native_ad); + layoutRes = a.getResourceId(R.styleable.NativeAdBannerView_nativeAdLayout, R.layout.ad_home_banner_large); a.recycle(); } } diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java index a23d2477..8038b2e8 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java @@ -341,15 +341,15 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int adView.setLayoutParams(new RecyclerView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - adView.setNativeAdLayout(R.layout.android_studio_list_native_ad); + adView.setNativeAdLayout(R.layout.ad_android_studio_list); return new AdHolder(adView); } else if (viewType == TYPE_CATEGORY) { View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.android_studio_category_item, parent, false); + .inflate(R.layout.item_android_studio_category, parent, false); return new CategoryHolder(view); } else { View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.android_studio_lesson_item, parent, false); + .inflate(R.layout.item_android_studio_lesson, parent, false); return new LessonHolder(view); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6f0e138a..77c151a4 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -57,7 +57,7 @@ android:id="@+id/ad_view" android:layout_width="match_parent" android:layout_height="wrap_content" - app:nativeAdLayout="@layout/bottom_app_bar_native_ad" /> + app:nativeAdLayout="@layout/ad_bottom_app_bar" /> + app:nativeAdLayout="@layout/ad_home_banner_large" /> diff --git a/app/src/main/res/layout/about_native_ad.xml b/app/src/main/res/layout/ad_about.xml similarity index 100% rename from app/src/main/res/layout/about_native_ad.xml rename to app/src/main/res/layout/ad_about.xml diff --git a/app/src/main/res/layout/android_studio_list_native_ad.xml b/app/src/main/res/layout/ad_android_studio_list.xml similarity index 100% rename from app/src/main/res/layout/android_studio_list_native_ad.xml rename to app/src/main/res/layout/ad_android_studio_list.xml diff --git a/app/src/main/res/layout/ad_bottom_app_bar.xml b/app/src/main/res/layout/ad_bottom_app_bar.xml new file mode 100644 index 00000000..38d9d3e7 --- /dev/null +++ b/app/src/main/res/layout/ad_bottom_app_bar.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/large_home_banner_native_ad.xml b/app/src/main/res/layout/ad_home_banner_large.xml similarity index 100% rename from app/src/main/res/layout/large_home_banner_native_ad.xml rename to app/src/main/res/layout/ad_home_banner_large.xml diff --git a/app/src/main/res/layout/small_home_banner_native_ad.xml b/app/src/main/res/layout/ad_home_banner_small.xml similarity index 100% rename from app/src/main/res/layout/small_home_banner_native_ad.xml rename to app/src/main/res/layout/ad_home_banner_small.xml diff --git a/app/src/main/res/layout/bottom_app_bar_native_ad.xml b/app/src/main/res/layout/bottom_app_bar_native_ad.xml deleted file mode 100644 index a91f9e9d..00000000 --- a/app/src/main/res/layout/bottom_app_bar_native_ad.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/bottom_sheet_menu.xml b/app/src/main/res/layout/dialog_bottom_sheet_menu.xml similarity index 100% rename from app/src/main/res/layout/bottom_sheet_menu.xml rename to app/src/main/res/layout/dialog_bottom_sheet_menu.xml diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index b2bcdda6..8d9b6d56 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -175,7 +175,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" app:layout_constraintTop_toBottomOf="@id/card_view_about" - app:nativeAdLayout="@layout/about_native_ad" /> + app:nativeAdLayout="@layout/ad_about" /> + app:nativeAdLayout="@layout/ad_home_banner_large" /> + app:nativeAdLayout="@layout/ad_home_banner_small" /> From 966149f91acef7ef6452350d3b941de04940a20e Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Thu, 11 Sep 2025 09:03:49 +0300 Subject: [PATCH 2/4] Fix BottomSheetMenu binding after layout rename --- .../ui/components/navigation/BottomSheetMenuFragment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/components/navigation/BottomSheetMenuFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/components/navigation/BottomSheetMenuFragment.java index b59adeb4..50fe809e 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/components/navigation/BottomSheetMenuFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/components/navigation/BottomSheetMenuFragment.java @@ -11,19 +11,19 @@ import com.d4rk.androidtutorials.java.BuildConfig; import com.d4rk.androidtutorials.java.R; -import com.d4rk.androidtutorials.java.databinding.BottomSheetMenuBinding; +import com.d4rk.androidtutorials.java.databinding.DialogBottomSheetMenuBinding; import com.d4rk.androidtutorials.java.ui.screens.settings.SettingsActivity; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; public class BottomSheetMenuFragment extends BottomSheetDialogFragment { - private BottomSheetMenuBinding binding; + private DialogBottomSheetMenuBinding binding; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - binding = BottomSheetMenuBinding.inflate(inflater, container, false); + binding = DialogBottomSheetMenuBinding.inflate(inflater, container, false); binding.menuSettings.setOnClickListener(v -> { Intent intent = new Intent(requireContext(), SettingsActivity.class); From c8b87b55c7fb8bbd027e7cd1ea41febbb0186d0b Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Thu, 11 Sep 2025 09:08:03 +0300 Subject: [PATCH 3/4] Fix promoted app item binding --- .../androidtutorials/java/ui/screens/home/HomeFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java index 736f16e7..5230b3b0 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java @@ -55,8 +55,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat java.util.List apps = state.promotedApps(); for (int i = 0; i < apps.size(); i++) { PromotedApp app = apps.get(i); - com.d4rk.androidtutorials.java.databinding.PromotedAppItemBinding itemBinding = - com.d4rk.androidtutorials.java.databinding.PromotedAppItemBinding.inflate(inflater, promotedContainer, false); + com.d4rk.androidtutorials.java.databinding.ItemPromotedAppBinding itemBinding = + com.d4rk.androidtutorials.java.databinding.ItemPromotedAppBinding.inflate(inflater, promotedContainer, false); loadImage(app.iconUrl(), itemBinding.appIcon); itemBinding.appName.setText(app.name()); itemBinding.appDescription.setVisibility(android.view.View.GONE); From 90ef09dc7ba47cbd8733412c545d68e6290d5e30 Mon Sep 17 00:00:00 2001 From: D4rK7355608 Date: Thu, 11 Sep 2025 09:13:39 +0300 Subject: [PATCH 4/4] Refactor lesson item and ad views - Updated lesson item icon to use ShapeableImageView with Material3 styling. - Removed MaterialCardView from the ad layout for a flatter design. - Adjusted padding and margins for better visual consistency. --- app/src/main/res/layout/ad_bottom_app_bar.xml | 93 +++++++++---------- .../res/layout/item_android_studio_lesson.xml | 14 ++- 2 files changed, 51 insertions(+), 56 deletions(-) diff --git a/app/src/main/res/layout/ad_bottom_app_bar.xml b/app/src/main/res/layout/ad_bottom_app_bar.xml index 38d9d3e7..33a44dbb 100644 --- a/app/src/main/res/layout/ad_bottom_app_bar.xml +++ b/app/src/main/res/layout/ad_bottom_app_bar.xml @@ -1,74 +1,65 @@ - + android:orientation="vertical" + android:background="?attr/colorSurfaceContainer" + android:paddingHorizontal="16dp"> + + + android:gravity="center_vertical" + android:orientation="horizontal"> - + + android:layout_weight="1" + android:orientation="vertical"> - - - + android:ellipsize="end" + android:maxLines="1" + android:textAppearance="@style/TextAppearance.Material3.BodyMedium" /> - - - - - - + android:ellipsize="end" + android:maxLines="1" + android:textAppearance="@style/TextAppearance.Material3.BodySmall" /> + + - + diff --git a/app/src/main/res/layout/item_android_studio_lesson.xml b/app/src/main/res/layout/item_android_studio_lesson.xml index 67e73105..e970672e 100644 --- a/app/src/main/res/layout/item_android_studio_lesson.xml +++ b/app/src/main/res/layout/item_android_studio_lesson.xml @@ -11,16 +11,20 @@ - + android:background="?attr/colorPrimaryContainer" + android:contentDescription="@null" + android:scaleType="centerCrop" + app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Full" />