Skip to content

Commit

Permalink
refactor, feat: Use ViewBinding in DesignDrawer
Browse files Browse the repository at this point in the history
Also it have some refactoring
  • Loading branch information
aikrq committed Nov 30, 2024
1 parent 971b69a commit 12f94c4
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 100 deletions.
195 changes: 97 additions & 98 deletions app/src/main/java/com/besome/sketch/design/DesignDrawer.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
Expand All @@ -11,6 +12,8 @@

import com.google.android.material.card.MaterialCardView;
import pro.sketchware.R;
import pro.sketchware.databinding.DesignDrawerBinding;
import pro.sketchware.databinding.DesignDrawerItemBinding;

import a.a.a.mB;
import a.a.a.wB;
Expand All @@ -19,110 +22,112 @@
import mod.hey.studios.util.Helper;

public class DesignDrawer extends LinearLayout implements View.OnClickListener {
private DesignDrawerBinding binding;

public DesignDrawer(Context context) {
super(context);
initialize(context);
this(context, null);
}

public DesignDrawer(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
public DesignDrawer(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}

private DrawerItem addDrawerItem(int tag, boolean useSeparator, int iconResId, int titleResId, int descriptionResId) {
private DrawerItem addDrawerItem(int tag, int iconResId, int titleResId, int descriptionResId) {
DrawerItem drawerItem = new DrawerItem(getContext());
drawerItem.setContent(iconResId, Helper.getResString(drawerItem, titleResId), Helper.getResString(drawerItem, descriptionResId));
drawerItem.setOnClickListener(tag, this);
return drawerItem;
}

private void initialize(Context context) {
wB.a(context, this, R.layout.design_drawer);
private void addLayoutMenu(int tag, int iconResId, int titleResId, int descriptionResId) {
View drawerItem = addDrawerItem(tag, iconResId, titleResId, descriptionResId);
binding.layoutMenus.addView(drawerItem);
}

private void applyDrawerLayoutInsets() {
var layoutDirection = getResources().getConfiguration().getLayoutDirection();
Insetter.builder()
.padding(WindowInsetsCompat.Type.navigationBars(),
Side.create(layoutDirection == LAYOUT_DIRECTION_RTL, false,
layoutDirection == LAYOUT_DIRECTION_LTR, false))
.applyToView(findViewById(R.id.layout_drawer));
.applyToView(binding.layoutDrawer);
}

TextView tv_title_configuration = findViewById(R.id.tv_title_configuration);
tv_title_configuration.setText(Helper.getResString(tv_title_configuration, R.string.design_drawer_menu_title));
private void applyTitleInsets() {
Insetter.builder()
.margin(WindowInsetsCompat.Type.statusBars())
.applyToView(tv_title_configuration);
TextView global = findViewById(R.id.tv_title_global);
global.setText(Helper.getResString(global, R.string.design_drawer_menu_bottom_title));
LinearLayout menusLayout = findViewById(R.id.layout_menus);
LinearLayout bottomMenusLayout = findViewById(R.id.layout_bottom_menus);
.applyToView(binding.tvTitleConfiguration);
}

private void applyBottomMenuInsets() {
Insetter.builder()
.margin(WindowInsetsCompat.Type.navigationBars(), Side.BOTTOM)
.applyToView(bottomMenusLayout);
/* Add collection item */
bottomMenusLayout.addView(addDrawerItem(1, false,
R.drawable.ic_mtrl_bookmark, R.string.design_drawer_menu_title_collection, R.string.design_drawer_menu_description_collection
));
/* Add built-in Library Manager (AppCompat, Firebase, AdMob, Google Maps SDK) */
/* INCLUDES SECTION SEPARATOR */
menusLayout.addView(addDrawerItem(3, true,
R.drawable.ic_mtrl_category, R.string.design_drawer_menu_title_library, R.string.design_drawer_menu_description_library
));
/* Add View Manager */
menusLayout.addView(addDrawerItem(4, false,
R.drawable.ic_mtrl_devices, R.string.design_drawer_menu_title_view, R.string.design_drawer_menu_description_view
));
/* Add Image Manager */
menusLayout.addView(addDrawerItem(5, false,
R.drawable.ic_mtrl_image, R.string.design_drawer_menu_title_image, R.string.design_drawer_menu_description_image
));
/* Add Sound Manager */
menusLayout.addView(addDrawerItem(6, false,
R.drawable.ic_mtrl_music, R.string.design_drawer_menu_title_sound, R.string.design_drawer_menu_description_sound
));
/* Add Font Manager */
menusLayout.addView(addDrawerItem(7, false,
R.drawable.ic_mtrl_font, R.string.design_drawer_menu_title_font, R.string.design_drawer_menu_description_font
));
/* Add Java Manager */
menusLayout.addView(addDrawerItem(8, false,
R.drawable.ic_mtrl_java, R.string.text_title_menu_java, R.string.text_subtitle_menu_java
));
/* Add Resource Manager */
menusLayout.addView(addDrawerItem(9, false,
R.drawable.ic_mtrl_folder_code, R.string.text_title_menu_resource, R.string.text_subtitle_menu_resource
));
/* Add Asset Manager */
menusLayout.addView(addDrawerItem(10, false,
R.drawable.ic_mtrl_file_present, R.string.text_title_menu_assets, R.string.text_subtitle_menu_assets
));
/* Add Permission Manager */
menusLayout.addView(addDrawerItem(11, false,
R.drawable.ic_mtrl_shield_check, R.string.text_title_menu_permission, R.string.text_subtitle_menu_permission
));
/* Add AppCompat Injection Manager */
menusLayout.addView(addDrawerItem(12, false,
R.drawable.ic_mtrl_inject, R.string.design_drawer_menu_injection, R.string.design_drawer_menu_injection_subtitle
));
/* Add AndroidManifest Manager */
menusLayout.addView(addDrawerItem(13, false,
R.drawable.ic_mtrl_deployed_code, R.string.design_drawer_menu_androidmanifest, R.string.design_drawer_menu_androidmanifest_subtitle
));
/* Add Used Custom Blocks */
menusLayout.addView(addDrawerItem(20, false,
R.drawable.ic_mtrl_block, R.string.design_drawer_menu_customblocks, R.string.design_drawer_menu_customblocks_subtitle
));
/* Add ProGuard Manager */
menusLayout.addView(addDrawerItem(17, false,
R.drawable.ic_mtrl_shield_lock, R.string.design_drawer_menu_proguard, R.string.design_drawer_menu_proguard_subtitle));
/* Add StringFog Manager */
/* INCLUDES SECTION SEPARATOR */
menusLayout.addView(addDrawerItem(18, true,
R.drawable.ic_mtrl_regular_expression, R.string.design_drawer_menu_stringfog, R.string.design_drawer_menu_stringfog_subtitle));
/* Add Source Code Viewer */
menusLayout.addView(addDrawerItem(16, false,
R.drawable.ic_mtrl_frame_source, R.string.design_drawer_menu_title_source_code, R.string.design_drawer_menu_description_source_code));
/* Add Logcat Reader */
menusLayout.addView(addDrawerItem(22, false,
R.drawable.ic_mtrl_article, R.string.design_drawer_menu_title_logcat_reader, R.string.design_drawer_menu_subtitle_logcat_reader));
.applyToView(binding.layoutBottomMenus);
}

private void initialize(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
binding = DesignDrawerBinding.inflate(inflater, this, true);

applyDrawerLayoutInsets();
applyTitleInsets();
applyBottomMenuInsets();

binding.tvTitleConfiguration.setText(Helper.getResString(binding.tvTitleConfiguration, R.string.design_drawer_menu_title));
binding.tvTitleGlobal.setText(Helper.getResString(binding.tvTitleGlobal, R.string.design_drawer_menu_bottom_title));

binding.layoutBottomMenus.addView(
addDrawerItem(1, R.drawable.ic_mtrl_bookmark, R.string.design_drawer_menu_title_collection,
R.string.design_drawer_menu_description_collection));

addLayoutMenu(3, R.drawable.ic_mtrl_category, R.string.design_drawer_menu_title_library,
R.string.design_drawer_menu_description_library);

addLayoutMenu(4, R.drawable.ic_mtrl_devices, R.string.design_drawer_menu_title_view,
R.string.design_drawer_menu_description_view);

addLayoutMenu(5, R.drawable.ic_mtrl_image, R.string.design_drawer_menu_title_image,
R.string.design_drawer_menu_description_image);

addLayoutMenu(6, R.drawable.ic_mtrl_music, R.string.design_drawer_menu_title_sound,
R.string.design_drawer_menu_description_sound);

addLayoutMenu(7, R.drawable.ic_mtrl_font, R.string.design_drawer_menu_title_font,
R.string.design_drawer_menu_description_font);

addLayoutMenu(8, R.drawable.ic_mtrl_java, R.string.text_title_menu_java,
R.string.text_subtitle_menu_java);

addLayoutMenu(9, R.drawable.ic_mtrl_folder_code, R.string.text_title_menu_resource,
R.string.text_subtitle_menu_resource);

addLayoutMenu(10, R.drawable.ic_mtrl_file_present, R.string.text_title_menu_assets,
R.string.text_subtitle_menu_assets);

addLayoutMenu(11, R.drawable.ic_mtrl_shield_check, R.string.text_title_menu_permission,
R.string.text_subtitle_menu_permission);

addLayoutMenu(12, R.drawable.ic_mtrl_inject, R.string.design_drawer_menu_injection,
R.string.design_drawer_menu_injection_subtitle);

addLayoutMenu(13, R.drawable.ic_mtrl_deployed_code, R.string.design_drawer_menu_androidmanifest,
R.string.design_drawer_menu_androidmanifest_subtitle);

addLayoutMenu(20, R.drawable.ic_mtrl_block, R.string.design_drawer_menu_customblocks,
R.string.design_drawer_menu_customblocks_subtitle);

addLayoutMenu(17, R.drawable.ic_mtrl_shield_lock, R.string.design_drawer_menu_proguard,
R.string.design_drawer_menu_proguard_subtitle);

addLayoutMenu(18, R.drawable.ic_mtrl_regular_expression, R.string.design_drawer_menu_stringfog,
R.string.design_drawer_menu_stringfog_subtitle);

addLayoutMenu(16, R.drawable.ic_mtrl_frame_source, R.string.design_drawer_menu_title_source_code,
R.string.design_drawer_menu_description_source_code);

addLayoutMenu(22, R.drawable.ic_mtrl_article, R.string.design_drawer_menu_title_logcat_reader,
R.string.design_drawer_menu_subtitle_logcat_reader);
}

@Override
Expand Down Expand Up @@ -205,33 +210,27 @@ public void onClick(View v) {
}

private static class DrawerItem extends LinearLayout {
private final MaterialCardView root;
private final ImageView imgIcon;
private final TextView titleTextView;
private final TextView subTitleTextView;
private final DesignDrawerItemBinding binding;

public DrawerItem(Context context) {
this(context, null);
}

public DrawerItem(Context context, AttributeSet set) {
super(context, set);
wB.a(context, this, R.layout.design_drawer_item);
root = findViewById(R.id.root);
imgIcon = findViewById(R.id.img_icon);
titleTextView = findViewById(R.id.tv_root_title);
subTitleTextView = findViewById(R.id.tv_sub_title);
public DrawerItem(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = LayoutInflater.from(context);
binding = DesignDrawerItemBinding.inflate(inflater, this, true);
}

public void setContent(int iconResId, String rootTitleText, String subTitleText) {
imgIcon.setImageResource(iconResId);
titleTextView.setText(rootTitleText);
subTitleTextView.setText(subTitleText);
binding.imgIcon.setImageResource(iconResId);
binding.tvRootTitle.setText(rootTitleText);
binding.tvSubTitle.setText(subTitleText);
}

public void setOnClickListener(int tag, OnClickListener listener) {
root.setTag(tag);
root.setOnClickListener(listener);
binding.getRoot().setTag(tag);
binding.getRoot().setOnClickListener(listener);
}
}
}
5 changes: 3 additions & 2 deletions app/src/main/res/layout/design_drawer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:textAppearance="?attr/textAppearanceBodyMedium"
android:textAppearance="?attr/textAppearanceBodyLarge"
tools:text="@string/design_drawer_menu_title" />

<com.google.android.material.divider.MaterialDivider
Expand Down Expand Up @@ -52,13 +52,14 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:textAppearance="?textAppearanceBodyMedium"
android:textAppearance="?textAppearanceBodyLarge"
tools:text="@string/design_drawer_menu_bottom_title" />
</LinearLayout>

<LinearLayout
android:id="@+id/layout_bottom_menus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="4dp"
android:orientation="vertical" />
</LinearLayout>

0 comments on commit 12f94c4

Please sign in to comment.