Skip to content

Commit 4cd86be

Browse files
Refactor layouts and resolve FIXMEs
1 parent 8865e82 commit 4cd86be

File tree

10 files changed

+184
-646
lines changed

10 files changed

+184
-646
lines changed

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import android.view.MenuItem;
1414
import android.view.View;
1515
import android.view.ViewGroup;
16-
import android.widget.ImageView;
1716
import android.widget.TextView;
1817

1918
import androidx.annotation.NonNull;
@@ -450,21 +449,18 @@ private void applyCorners(boolean first, boolean last) {
450449
}
451450

452451
static class CategoryHolder extends RecyclerView.ViewHolder {
453-
final ImageView icon;
454452
final TextView title;
455453

456454
CategoryHolder(@NonNull View itemView) {
457455
super(itemView);
458-
icon = itemView.findViewById(R.id.category_icon);
459456
title = itemView.findViewById(R.id.category_title);
460457
}
461458

462459
void bind(Category category) {
463460
if (category.iconRes != 0) {
464-
icon.setImageResource(category.iconRes);
465-
icon.setVisibility(View.VISIBLE);
461+
title.setCompoundDrawablesRelativeWithIntrinsicBounds(category.iconRes, 0, 0, 0);
466462
} else {
467-
icon.setVisibility(View.GONE);
463+
title.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0);
468464
}
469465
title.setText(category.title);
470466
}
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,108 @@
11
package com.d4rk.androidtutorials.java.ui.screens.android.lessons.basics.shortcuts.tabs;
22

33
import android.os.Bundle;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
import android.widget.TextView;
48

9+
import androidx.annotation.NonNull;
10+
import androidx.recyclerview.widget.LinearLayoutManager;
11+
import androidx.recyclerview.widget.RecyclerView;
12+
13+
import com.d4rk.androidtutorials.java.R;
514
import com.d4rk.androidtutorials.java.databinding.ActivityShortcutsNavigationAndSearchingBinding;
615
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
716
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
817
import com.google.android.gms.ads.AdRequest;
918
import com.google.android.gms.ads.MobileAds;
1019

20+
import java.util.List;
21+
1122
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1223

1324
public class NavigationAndSearchingShortcutsActivity extends UpNavigationActivity {
1425
@Override
1526
protected void onCreate(Bundle savedInstanceState) {
1627
super.onCreate(savedInstanceState);
17-
com.d4rk.androidtutorials.java.databinding.ActivityShortcutsNavigationAndSearchingBinding binding = ActivityShortcutsNavigationAndSearchingBinding.inflate(getLayoutInflater());
28+
ActivityShortcutsNavigationAndSearchingBinding binding = ActivityShortcutsNavigationAndSearchingBinding.inflate(getLayoutInflater());
1829
setContentView(binding.getRoot());
1930
MobileAds.initialize(this);
2031

2132
EdgeToEdgeDelegate edgeToEdgeDelegate = new EdgeToEdgeDelegate(this);
22-
edgeToEdgeDelegate.applyEdgeToEdge(binding.scrollView);
33+
edgeToEdgeDelegate.applyEdgeToEdge(binding.shortcutList);
2334

2435
binding.adView.loadAd(new AdRequest.Builder().build());
25-
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
36+
new FastScrollerBuilder(binding.shortcutList).useMd2Style().build();
37+
38+
List<Shortcut> shortcuts = List.of(
39+
new Shortcut(getString(R.string.press_shift_twice), getString(R.string.search_everything)),
40+
new Shortcut("Ctrl + F", getString(R.string.find)),
41+
new Shortcut("F3", getString(R.string.find_next)),
42+
new Shortcut("Shift + F3", getString(R.string.find_previous)),
43+
new Shortcut("Ctrl + R", getString(R.string.replace)),
44+
new Shortcut("Ctrl + Shift + A", getString(R.string.find_action)),
45+
new Shortcut("Ctrl + Alt + Shift + N", getString(R.string.search_by_symbol_name)),
46+
new Shortcut("Ctrl + N", getString(R.string.find_class)),
47+
new Shortcut("Ctrl + Shift + N", getString(R.string.find_file)),
48+
new Shortcut("Ctrl + Shift + F", getString(R.string.find_path)),
49+
new Shortcut("Ctrl + F12", getString(R.string.open_file_structure)),
50+
new Shortcut("Alt + Right/Left Arrow", getString(R.string.navigate_between_open_tabs)),
51+
new Shortcut("F4/Ctrl +Enter", getString(R.string.jump_to_source)),
52+
new Shortcut("Shift + F4", getString(R.string.open_current_editor_tab_in_new_window)),
53+
new Shortcut("Ctrl + E", getString(R.string.recently_opened_files)),
54+
new Shortcut("Ctrl + Shift + E", getString(R.string.recently_edited_files)),
55+
new Shortcut("Ctrl + Shift + Backspace", getString(R.string.go_to_last_edit_location)),
56+
new Shortcut("Ctrl + F4", getString(R.string.close_active_editor_tabs)),
57+
new Shortcut("Esc", getString(R.string.return_to_editor_window)),
58+
new Shortcut("Shift + Esc", getString(R.string.hide_active_window)),
59+
new Shortcut("Ctrl + G", getString(R.string.go_to_line)),
60+
new Shortcut("Ctrl + H", getString(R.string.open_type_hierarchy)),
61+
new Shortcut("Ctrl + Shift + H", getString(R.string.open_v_hierarchy)),
62+
new Shortcut("Ctrl + Alt + H", getString(R.string.open_call_hierarchy))
63+
);
64+
65+
binding.shortcutList.setLayoutManager(new LinearLayoutManager(this));
66+
binding.shortcutList.setAdapter(new ShortcutsAdapter(shortcuts));
2667
}
68+
69+
private static class ShortcutsAdapter extends RecyclerView.Adapter<ShortcutsAdapter.ShortcutHolder> {
70+
private final List<Shortcut> items;
71+
72+
ShortcutsAdapter(List<Shortcut> items) {
73+
this.items = items;
74+
}
75+
76+
@NonNull
77+
@Override
78+
public ShortcutHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
79+
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shortcut, parent, false);
80+
return new ShortcutHolder(view);
81+
}
82+
83+
@Override
84+
public void onBindViewHolder(@NonNull ShortcutHolder holder, int position) {
85+
Shortcut item = items.get(position);
86+
holder.key.setText(item.key);
87+
holder.description.setText(item.description);
88+
}
89+
90+
@Override
91+
public int getItemCount() {
92+
return items.size();
93+
}
94+
95+
static class ShortcutHolder extends RecyclerView.ViewHolder {
96+
final TextView key;
97+
final TextView description;
98+
99+
ShortcutHolder(@NonNull View itemView) {
100+
super(itemView);
101+
key = itemView.findViewById(R.id.shortcut_key);
102+
description = itemView.findViewById(R.id.shortcut_description);
103+
}
104+
}
105+
}
106+
107+
private record Shortcut(String key, String description) { }
27108
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/data/room/Note.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
public class Note {
1111
@PrimaryKey(autoGenerate = true)
1212
public int id;
13-
public String text; // FIXME: Declaration can have final modifier
13+
public final String text;
1414

1515
public Note(String text) {
1616
this.text = text;

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding/BottomLabelsFragment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public class BottomLabelsFragment extends Fragment {
2020
private FragmentOnboardingBottomLabelsBinding binding;
2121
private OnboardingViewModel viewModel;
2222
private MaterialRadioButton[] radioButtons;
23-
private View[] optionCards; // FIXME: Field can be converted to a local variable
2423

2524
@Nullable
2625
@Override
@@ -40,7 +39,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
4039
binding.optionUnlabeled.radioButton
4140
};
4241

43-
optionCards = new View[]{
42+
View[] optionCards = new View[]{
4443
binding.cardLabeled,
4544
binding.cardSelected,
4645
binding.cardUnlabeled

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding/FontFragment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public class FontFragment extends Fragment {
2121
private FragmentOnboardingFontBinding binding;
2222
private OnboardingViewModel viewModel;
2323
private MaterialRadioButton[] radioButtons;
24-
private View[] optionCards; // FIXME: Field can be converted to a local variable
2524

2625
@Nullable
2726
@Override
@@ -45,7 +44,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
4544
binding.optionGoogleSansCode.radioButton
4645
};
4746

48-
optionCards = new View[]{
47+
View[] optionCards = new View[]{
4948
binding.cardAudiowide,
5049
binding.cardFiraCode,
5150
binding.cardJetbrainsMono,

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/onboarding/OnboardingActivity.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ public void onPageSelected(int position) {
8181

8282
new TabLayoutMediator(binding.tabIndicator, binding.viewPager, (tab, position) -> {
8383
ImageView dot = new ImageView(this);
84-
dot.setImageResource(R.drawable.onboarding_dot_unselected);
85-
int margin = dpToPx(2);
84+
dot.setImageResource(R.drawable.onboarding_dot_unselected);
85+
int margin = Math.round(TypedValue.applyDimension(
86+
TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics()));
8687
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
8788
LinearLayout.LayoutParams.WRAP_CONTENT,
8889
LinearLayout.LayoutParams.WRAP_CONTENT);
@@ -173,10 +174,7 @@ private void updateButtons(int position) {
173174
}
174175
}
175176

176-
private int dpToPx(int dp) { // FIXME: Value of parameter 'dp' is always '2'
177-
return Math.round(TypedValue.applyDimension(
178-
TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()));
179-
}
177+
180178

181179
private static class OnboardingPagerAdapter extends FragmentStateAdapter {
182180

0 commit comments

Comments
 (0)