Skip to content

Commit 0dc6b98

Browse files
Refactor: Introduce LessonUiUtils to simplify lesson UI setup
This commit introduces a new `LessonUiUtils` class to centralize and simplify the setup of the description section in various lesson activities. Key changes include: - A new `setupDescriptionSection` method in `LessonUiUtils` that handles setting the description text, header, layout preview header, and loading the banner ad. - Refactoring multiple lesson activities (`LinearLayoutActivity`, `ChronometerActivity`, `ImageButtonsActivity`, etc.) to use the new utility method, reducing repetitive code. - Minor code cleanup, including import reordering in several files.
1 parent 86f0f20 commit 0dc6b98

File tree

28 files changed

+136
-68
lines changed

28 files changed

+136
-68
lines changed

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/alerts/alertdialog/AlertDialogActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
56
import com.d4rk.androidtutorials.java.R;
67
import com.d4rk.androidtutorials.java.databinding.ActivityAlertDialogBinding;
78
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/alerts/snackbar/SnackBarActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
56
import com.d4rk.androidtutorials.java.R;
67
import com.d4rk.androidtutorials.java.databinding.ActivitySnackBarBinding;
78
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/ShortcutsCategoryActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
import android.view.View;
66
import android.view.ViewGroup;
77

8+
import androidx.recyclerview.widget.LinearLayoutManager;
9+
import androidx.recyclerview.widget.RecyclerView;
10+
811
import com.d4rk.androidtutorials.java.R;
912
import com.d4rk.androidtutorials.java.ads.AdUtils;
13+
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1014
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.ShortcutItem;
1115
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.ShortcutsAdapter;
1216
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.ShortcutsRepository;
13-
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1417
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1518
import com.google.android.gms.ads.AdView;
1619

1720
import java.util.List;
1821

19-
import androidx.recyclerview.widget.LinearLayoutManager;
20-
import androidx.recyclerview.widget.RecyclerView;
21-
2222
import me.zhanghai.android.fastscroll.FastScrollScrollView;
2323
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
2424

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/buttons/ButtonsActivity.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons;
22

33
import android.os.Bundle;
4+
45
import com.d4rk.androidtutorials.java.R;
5-
import com.d4rk.androidtutorials.java.ads.AdUtils;
66
import com.d4rk.androidtutorials.java.databinding.ActivityButtonsBinding;
77
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
88
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons.tabs.ButtonsTabCodeFragment;
99
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.buttons.buttons.tabs.ButtonsTabLayoutFragment;
1010
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.common.LessonCodeTabsActivity;
11+
import com.d4rk.androidtutorials.java.ui.utils.LessonUiUtils;
1112
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1213
import com.google.android.material.snackbar.Snackbar;
1314

14-
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1515
import java.util.Arrays;
1616

17+
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
18+
1719
public class ButtonsActivity extends SyntaxFabActivity {
1820
private ActivityButtonsBinding binding;
1921

@@ -24,10 +26,9 @@ protected void onCreate(Bundle savedInstanceState) {
2426
setContentView(binding.getRoot());
2527
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), binding.getRoot());
2628

27-
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
28-
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
29-
binding.descriptionSection.descriptionText.setText(R.string.summary_buttons);
30-
AdUtils.loadBanner(binding.descriptionSection.adView);
29+
LessonUiUtils.setupDescriptionSection(binding.descriptionSection,
30+
R.string.summary_buttons,
31+
true);
3132

3233
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
3334
binding.buttonNormal.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.button_normal) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/buttons/tabs/ButtonsTabLayoutFragment.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.d4rk.androidtutorials.java.ads.AdUtils;
1414
import com.d4rk.androidtutorials.java.databinding.FragmentButtonsLayoutBinding;
1515
import com.d4rk.androidtutorials.java.utils.CodeViewUtils;
16+
1617
import java.util.LinkedHashMap;
1718
import java.util.Map;
1819

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/image/ImageButtonsActivity.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
56
import com.d4rk.androidtutorials.java.R;
6-
import com.d4rk.androidtutorials.java.ads.AdUtils;
77
import com.d4rk.androidtutorials.java.databinding.ActivityImageButtonsBinding;
88
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
99
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
10+
import com.d4rk.androidtutorials.java.ui.utils.LessonUiUtils;
1011
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1112
import com.google.android.material.snackbar.Snackbar;
1213

@@ -20,10 +21,9 @@ protected void onCreate(Bundle savedInstanceState) {
2021
setContentView(binding.getRoot());
2122
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), binding.getRoot());
2223

23-
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
24-
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
25-
binding.descriptionSection.descriptionText.setText(R.string.summary_image_buttons);
26-
AdUtils.loadBanner(binding.descriptionSection.adView);
24+
LessonUiUtils.setupDescriptionSection(binding.descriptionSection,
25+
R.string.summary_image_buttons,
26+
true);
2727

2828
binding.imageButton.setOnClickListener(v ->
2929
Snackbar.make(binding.getRoot(), R.string.snack_image_button, Snackbar.LENGTH_SHORT).show()

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/buttons/switches/SwitchActivity.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
56
import com.d4rk.androidtutorials.java.R;
6-
import com.d4rk.androidtutorials.java.ads.AdUtils;
77
import com.d4rk.androidtutorials.java.databinding.ActivitySwitchBinding;
88
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
99
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
10+
import com.d4rk.androidtutorials.java.ui.utils.LessonUiUtils;
1011
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1112
import com.google.android.material.snackbar.Snackbar;
1213

@@ -22,10 +23,9 @@ protected void onCreate(Bundle savedInstanceState) {
2223
setContentView(binding.getRoot());
2324

2425
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), binding.getRoot());
25-
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
26-
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
27-
binding.descriptionSection.descriptionText.setText(R.string.summary_toggle);
28-
AdUtils.loadBanner(binding.descriptionSection.adView);
26+
LessonUiUtils.setupDescriptionSection(binding.descriptionSection,
27+
R.string.summary_toggle,
28+
true);
2929

3030
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
3131
setOnClickListeners();

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/clocks/chronometer/ChronometerActivity.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import androidx.annotation.Nullable;
88

99
import com.d4rk.androidtutorials.java.R;
10-
import com.d4rk.androidtutorials.java.ads.AdUtils;
1110
import com.d4rk.androidtutorials.java.databinding.ActivityChronometerBinding;
1211
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
1312
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
13+
import com.d4rk.androidtutorials.java.ui.utils.LessonUiUtils;
1414
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1515

1616
public class ChronometerActivity extends SyntaxFabActivity {
@@ -24,10 +24,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
2424

2525
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), binding.getRoot());
2626

27-
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
28-
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
29-
binding.descriptionSection.descriptionText.setText(R.string.summary_chronometer);
30-
AdUtils.loadBanner(binding.descriptionSection.adView);
27+
LessonUiUtils.setupDescriptionSection(binding.descriptionSection,
28+
R.string.summary_chronometer,
29+
true);
3130

3231
setupSyntaxFab(binding.floatingButtonShowSyntax, () -> {
3332
Intent intent = new Intent(this, CodeActivity.class);

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/clocks/clock/ClockActivity.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock;
22

33
import android.os.Bundle;
4+
45
import com.d4rk.androidtutorials.java.R;
5-
import com.d4rk.androidtutorials.java.ads.AdUtils;
66
import com.d4rk.androidtutorials.java.databinding.ActivityClockBinding;
77
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
88
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock.tabs.ClockTabCodeFragment;
99
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.clocks.clock.tabs.ClockTabLayoutFragment;
1010
import com.d4rk.androidtutorials.java.ui.screens.android.lessons.common.LessonCodeTabsActivity;
11+
import com.d4rk.androidtutorials.java.ui.utils.LessonUiUtils;
1112
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeHelper;
1213

13-
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1414
import java.util.Arrays;
1515

16+
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
17+
1618
public class ClockActivity extends SyntaxFabActivity {
1719
private ActivityClockBinding binding;
1820

@@ -23,10 +25,9 @@ protected void onCreate(Bundle savedInstanceState) {
2325
setContentView(binding.getRoot());
2426
EdgeToEdgeHelper.applyEdgeToEdge(getWindow(), binding.getRoot());
2527

26-
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
27-
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
28-
binding.descriptionSection.descriptionText.setText(R.string.summary_clocks);
29-
AdUtils.loadBanner(binding.descriptionSection.adView);
28+
LessonUiUtils.setupDescriptionSection(binding.descriptionSection,
29+
R.string.summary_clocks,
30+
true);
3031

3132

3233
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/clocks/datepicker/DatePickerActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.DatePickerDialog;
44
import android.content.Intent;
55
import android.os.Bundle;
6+
67
import com.d4rk.androidtutorials.java.databinding.ActivityDatePickerBinding;
78
import com.d4rk.androidtutorials.java.ui.components.navigation.SyntaxFabActivity;
89
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;

0 commit comments

Comments
 (0)