Optimized NavigationView, the way to exit.

Add vibration and shadow to tool buttons.
This commit is contained in:
2022-04-03 01:17:47 +08:00
parent 6c662f8389
commit b2f7ccb29d
7 changed files with 102 additions and 4 deletions

View File

@@ -5,6 +5,7 @@ import android.view.View;
import android.view.Menu;
import com.fatapp.oxygentoolbox.util.ResourceUtil;
import com.fatapp.oxygentoolbox.util.VibratorController;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.navigation.NavigationView;
@@ -35,7 +36,6 @@ public class MainActivity extends AppCompatActivity {
drawer = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
mainActivity = this;
ResourceUtil.init(getApplication());
}
@Override
@@ -46,6 +46,8 @@ public class MainActivity extends AppCompatActivity {
//init
initView();
initLayout();
ResourceUtil.init(getApplication());
VibratorController.init();
// shortCutCreateTest();
}
@@ -60,10 +62,12 @@ public class MainActivity extends AppCompatActivity {
navigationView.inflateMenu(R.menu.activity_main_drawer);
navigationView.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
if (navigationView.getMenu().getItem(0).isChecked()) {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
fab.setVisibility(View.VISIBLE);
} else if (navigationView.getMenu().getItem(4).isChecked()) {
System.exit(0);
finish();
} else {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
fab.setVisibility(View.GONE);
}
});

View File

@@ -1,8 +1,10 @@
package com.fatapp.oxygentoolbox.ui.home;
import android.annotation.SuppressLint;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -18,6 +20,7 @@ import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.layout.FoldLayout;
import com.fatapp.oxygentoolbox.util.ToolsLauncher;
import com.fatapp.oxygentoolbox.util.ToolsList;
import com.fatapp.oxygentoolbox.util.VibratorController;
import java.io.IOException;
import java.util.ArrayList;
@@ -51,6 +54,7 @@ public class HomeFragment extends Fragment {
initFoldLayout();
}
@SuppressLint("ClickableViewAccessibility")
private void initFoldLayout() {
try {
ToolsList.init(getResources().getAssets().open("json/BasicTools.json"));
@@ -68,7 +72,25 @@ public class HomeFragment extends Fragment {
View toolButtonLayout = getLayoutInflater().inflate(R.layout.tool_button, null);
Button toolButton = toolButtonLayout.findViewById(R.id.tool_button);
toolButton.setText(button.getText());
toolButton.setOnClickListener(v -> ToolsLauncher.launch(getContext(), button.getActivity()));
toolButton.setOnTouchListener((v, event) -> {
if (event.getAction()== MotionEvent.ACTION_DOWN) {
v.animate().translationZ(8f).setDuration(100L);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
v.animate().translationZ(0).setDuration(100L);
}
return false;
});
toolButton.setOnLongClickListener(v -> {
v.animate().translationZ(0).setDuration(100L);
VibratorController.vibrate(1);
return false;
});
autoLinefeedLayout.addView(toolButtonLayout);
}

View File

@@ -0,0 +1,32 @@
package com.fatapp.oxygentoolbox.util;
import android.app.Service;
import android.os.Vibrator;
public class VibratorController {
private static boolean hasVib;
private static Vibrator sVib;
public static void init() {
sVib = (Vibrator) ResourceUtil.getApplication().getSystemService(Service.VIBRATOR_SERVICE);
hasVib = sVib.hasVibrator();
}
public static void vibrate(long milliseconds) {
if (hasVib) {
sVib.vibrate(milliseconds);
}
}
public static void vibrate(long[] pattern,int repeat){
if (hasVib) {
sVib.vibrate(pattern,repeat);
}
}
public static void cancel(){
if (hasVib) {
sVib.cancel();
}
}
}