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

37
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="G:\Android\Avd\Pixel_4_API_31.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-04-02T05:34:24.063753700Z" />
<runningDeviceTargetsSelectedWithDialog>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="G:\Android\Avd\Pixel_4_API_31.avd" />
</Key>
</deviceKey>
</Target>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="G:\Android\Avd\Pixel_4_API_30.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetsSelectedWithDialog>
</component>
</project>

View File

@@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.fatapp.oxygentoolbox">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
@@ -46,5 +48,4 @@
</intent-filter>
</activity>
</application>
</manifest>

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();
}
}
}

View File

@@ -23,7 +23,7 @@
</aapt:attr>
</path>
<path
android:fillColor="?attr/app_theme"
android:fillColor="@color/default_app_theme"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"

View File

@@ -16,6 +16,8 @@
android:id="@+id/nav_setting"
android:icon="@drawable/ic_menu_setting"
android:title="@string/menu_setting" />
</group>
<group android:checkableBehavior="single" android:id="@+id/nav_group_exit">
<item
android:id="@+id/nav_about"
android:icon="@drawable/ic_menu_about"