Skip to content

Commit 4a03669

Browse files
Refactor lesson activities to use common description and ad layouts
This commit refactors several lesson activities and their layouts to use new reusable layouts for the description section and section headers. - Introduces `lesson_description_section.xml` which includes a header, a card for the description text, and a `NativeAdBannerView`. - Introduces `lesson_section_header.xml` for displaying section titles like "Description" and "Layout Preview". - Introduces `ad_lesson_description.xml` for the native ad displayed within the description section. - Updates the following activities to utilize these new layouts and populate them dynamically: - `ButtonsActivity.java` and `activity_buttons.xml` - `ImageButtonsActivity.java` and `activity_image_buttons.xml` - `ClockActivity.java` and `activity_clock.xml` - `LinearLayoutActivity.java` and `activity_linear_layout.xml` - `ChronometerActivity.java` and `activity_chronometer.xml` - `SwitchActivity.java` and `activity_switch.xml` - `ProgressBarActivity.java` and `activity_progress_bar.xml` - In each updated activity, `AdUtils.loadBanner()` is now called to load an ad into the `description_section.adView`. - Text for description headers, layout preview headers, and description content is now set programmatically in the respective Java activity files.
1 parent a915957 commit 4a03669

File tree

17 files changed

+217
-172
lines changed

17 files changed

+217
-172
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.os.Looper;
77

88
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
910
import com.d4rk.androidtutorials.java.databinding.ActivityButtonsBinding;
1011
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1112
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
@@ -25,6 +26,11 @@ protected void onCreate(Bundle savedInstanceState) {
2526

2627
EdgeToEdgeDelegate.apply(this, binding.constraintLayout);
2728

29+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
30+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
31+
binding.descriptionSection.descriptionText.setText(R.string.summary_buttons);
32+
AdUtils.loadBanner(binding.descriptionSection.adView);
33+
2834
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2935
binding.buttonNormal.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.button_normal) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());
3036
binding.buttonOutlined.setOnClickListener(view -> Snackbar.make(binding.getRoot(), getString(R.string.button_outlined) + " " + getString(R.string.snack_bar_clicked), Snackbar.LENGTH_SHORT).show());

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.os.Looper;
77

88
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
910
import com.d4rk.androidtutorials.java.databinding.ActivityImageButtonsBinding;
1011
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1112
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
@@ -24,6 +25,11 @@ protected void onCreate(Bundle savedInstanceState) {
2425

2526
EdgeToEdgeDelegate.apply(this, binding.container);
2627

28+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
29+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
30+
binding.descriptionSection.descriptionText.setText(R.string.summary_image_buttons);
31+
AdUtils.loadBanner(binding.descriptionSection.adView);
32+
2733
binding.imageButton.setOnClickListener(v ->
2834
Snackbar.make(binding.getRoot(), R.string.snack_image_button, Snackbar.LENGTH_SHORT).show()
2935
);

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.os.Looper;
77

88
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
910
import com.d4rk.androidtutorials.java.databinding.ActivitySwitchBinding;
1011
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1112
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
@@ -26,6 +27,11 @@ protected void onCreate(Bundle savedInstanceState) {
2627

2728
EdgeToEdgeDelegate.apply(this, binding.container);
2829

30+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
31+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
32+
binding.descriptionSection.descriptionText.setText(R.string.summary_toggle);
33+
AdUtils.loadBanner(binding.descriptionSection.adView);
34+
2935
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
3036
setOnClickListeners();
3137
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import androidx.annotation.Nullable;
1010

11+
import com.d4rk.androidtutorials.java.R;
12+
import com.d4rk.androidtutorials.java.ads.AdUtils;
1113
import com.d4rk.androidtutorials.java.databinding.ActivityChronometerBinding;
1214
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1315
import com.d4rk.androidtutorials.java.ui.screens.android.CodeActivity;
@@ -26,6 +28,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
2628

2729
EdgeToEdgeDelegate.apply(this, binding.container);
2830

31+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
32+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
33+
binding.descriptionSection.descriptionText.setText(R.string.summary_chronometer);
34+
AdUtils.loadBanner(binding.descriptionSection.adView);
35+
2936
binding.floatingButtonShowSyntax.setOnClickListener(v -> {
3037
Intent intent = new Intent(this, CodeActivity.class);
3138
intent.putExtra("lesson_name", "Chronometer");

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.os.Handler;
66
import android.os.Looper;
77

8+
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
810
import com.d4rk.androidtutorials.java.databinding.ActivityClockBinding;
911
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1012
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
@@ -23,6 +25,11 @@ protected void onCreate(Bundle savedInstanceState) {
2325

2426
EdgeToEdgeDelegate.apply(this, binding.container);
2527

28+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
29+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
30+
binding.descriptionSection.descriptionText.setText(R.string.summary_clocks);
31+
AdUtils.loadBanner(binding.descriptionSection.adView);
32+
2633

2734
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2835
binding.floatingButtonShowSyntax.setOnClickListener(view -> startActivity(new Intent(this, ClockCodeActivity.class)));

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/layouts/linear/LinearLayoutActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.os.Handler;
66
import android.os.Looper;
77

8+
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
810
import com.d4rk.androidtutorials.java.databinding.ActivityLinearLayoutBinding;
911
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1012
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
@@ -23,6 +25,11 @@ protected void onCreate(Bundle savedInstanceState) {
2325

2426
EdgeToEdgeDelegate.apply(this, binding.container);
2527

28+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
29+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
30+
binding.descriptionSection.descriptionText.setText(R.string.summary_linear_layout_compat);
31+
AdUtils.loadBanner(binding.descriptionSection.adView);
32+
2633
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2734
binding.floatingButtonShowSyntax.setOnClickListener(v -> startActivity(new Intent(LinearLayoutActivity.this, LinearLayoutCodeActivity.class)));
2835
handler.postDelayed(() -> binding.floatingButtonShowSyntax.shrink(), 5000);

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/progress/progressbar/ProgressBarActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.os.Handler;
66
import android.os.Looper;
77

8+
import com.d4rk.androidtutorials.java.R;
9+
import com.d4rk.androidtutorials.java.ads.AdUtils;
810
import com.d4rk.androidtutorials.java.databinding.ActivityProgressBarBinding;
911
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1012
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
@@ -23,6 +25,11 @@ protected void onCreate(Bundle savedInstanceState) {
2325

2426
EdgeToEdgeDelegate.apply(this, binding.container);
2527

28+
binding.descriptionSection.descriptionHeader.getRoot().setText(R.string.description);
29+
binding.layoutPreviewHeader.getRoot().setText(R.string.layout_preview);
30+
binding.descriptionSection.descriptionText.setText(R.string.summary_progress_bar);
31+
AdUtils.loadBanner(binding.descriptionSection.adView);
32+
2633
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2734
binding.progressBar.hide();
2835
binding.buttonDownloadHorizontal.setOnClickListener(v -> {

app/src/main/res/layout/activity_buttons.xml

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,15 @@
1818
android:orientation="vertical"
1919
android:paddingHorizontal="24dp">
2020

21-
<com.google.android.material.textview.MaterialTextView
22-
style="@style/TextAppearance.Material3.HeadlineLarge"
23-
android:layout_width="wrap_content"
24-
android:layout_height="wrap_content"
25-
android:layout_marginTop="24dp"
26-
android:text="@string/description" />
27-
28-
<com.google.android.material.card.MaterialCardView
29-
android:layout_width="match_parent"
30-
android:layout_height="wrap_content"
31-
android:layout_marginVertical="24dp"
32-
app:cardCornerRadius="24dp"
33-
app:contentPadding="24dp">
34-
35-
<com.google.android.material.textview.MaterialTextView
36-
android:layout_width="match_parent"
37-
android:layout_height="wrap_content"
38-
android:text="@string/summary_buttons" />
39-
</com.google.android.material.card.MaterialCardView>
40-
41-
<com.google.android.material.textview.MaterialTextView
42-
style="@style/TextAppearance.Material3.HeadlineLarge"
43-
android:layout_width="wrap_content"
44-
android:layout_height="wrap_content"
45-
android:text="@string/layout_preview" />
21+
<include
22+
android:id="@+id/description_section"
23+
layout="@layout/lesson_description_section" />
24+
25+
<include
26+
android:id="@+id/layout_preview_header"
27+
layout="@layout/lesson_section_header"
28+
android:layout_marginTop="0dp"
29+
tools:text="@string/layout_preview" />
4630

4731
<com.google.android.material.textview.MaterialTextView
4832
android:id="@+id/text_view_normal_button"

app/src/main/res/layout/activity_chronometer.xml

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,15 @@
1919
android:orientation="vertical"
2020
android:paddingHorizontal="24dp">
2121

22-
<com.google.android.material.textview.MaterialTextView
23-
style="@style/TextAppearance.Material3.HeadlineLarge"
24-
android:layout_width="wrap_content"
25-
android:layout_height="wrap_content"
26-
android:layout_marginTop="24dp"
27-
android:text="@string/description" />
28-
29-
<com.google.android.material.card.MaterialCardView
30-
android:layout_width="match_parent"
31-
android:layout_height="wrap_content"
32-
android:layout_marginVertical="24dp"
33-
app:cardCornerRadius="24dp"
34-
app:contentPadding="24dp">
35-
36-
<com.google.android.material.textview.MaterialTextView
37-
android:layout_width="match_parent"
38-
android:layout_height="wrap_content"
39-
android:text="@string/summary_chronometer" />
40-
</com.google.android.material.card.MaterialCardView>
22+
<include
23+
android:id="@+id/description_section"
24+
layout="@layout/lesson_description_section" />
4125

42-
<com.google.android.material.textview.MaterialTextView
43-
style="@style/TextAppearance.Material3.HeadlineLarge"
44-
android:layout_width="wrap_content"
45-
android:layout_height="wrap_content"
46-
android:text="@string/layout_preview" />
26+
<include
27+
android:id="@+id/layout_preview_header"
28+
layout="@layout/lesson_section_header"
29+
android:layout_marginTop="0dp"
30+
tools:text="@string/layout_preview" />
4731

4832
<Chronometer
4933
android:id="@+id/chronometer"

app/src/main/res/layout/activity_clock.xml

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,15 @@
1919
android:orientation="vertical"
2020
android:paddingHorizontal="24dp">
2121

22-
<com.google.android.material.textview.MaterialTextView
23-
style="@style/TextAppearance.Material3.HeadlineLarge"
24-
android:layout_width="wrap_content"
25-
android:layout_height="wrap_content"
26-
android:layout_marginTop="24dp"
27-
android:text="@string/description" />
28-
29-
<com.google.android.material.card.MaterialCardView
30-
android:layout_width="match_parent"
31-
android:layout_height="wrap_content"
32-
android:layout_marginVertical="24dp"
33-
app:cardCornerRadius="24dp"
34-
app:contentPadding="24dp">
35-
36-
<com.google.android.material.textview.MaterialTextView
37-
android:layout_width="match_parent"
38-
android:layout_height="wrap_content"
39-
android:text="@string/summary_clocks" />
40-
</com.google.android.material.card.MaterialCardView>
22+
<include
23+
android:id="@+id/description_section"
24+
layout="@layout/lesson_description_section" />
4125

42-
<com.google.android.material.textview.MaterialTextView
43-
style="@style/TextAppearance.Material3.HeadlineLarge"
44-
android:layout_width="wrap_content"
45-
android:layout_height="wrap_content"
46-
android:text="@string/layout_preview" />
26+
<include
27+
android:id="@+id/layout_preview_header"
28+
layout="@layout/lesson_section_header"
29+
android:layout_marginTop="0dp"
30+
tools:text="@string/layout_preview" />
4731

4832
<com.google.android.material.textview.MaterialTextView
4933
android:id="@+id/simpleAnalogClockText"

0 commit comments

Comments
 (0)