mirror of
https://github.com/FatttSnake/OxygenToolbox.git
synced 2026-04-06 07:11:26 +08:00
Optimized NavigationView, the way to exit.
Add vibration and shadow to tool buttons.
This commit is contained in:
37
.idea/deploymentTargetDropDown.xml
generated
Normal file
37
.idea/deploymentTargetDropDown.xml
generated
Normal 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>
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.fatapp.oxygentoolbox">
|
package="com.fatapp.oxygentoolbox">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
@@ -46,5 +48,4 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -5,6 +5,7 @@ import android.view.View;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
|
|
||||||
import com.fatapp.oxygentoolbox.util.ResourceUtil;
|
import com.fatapp.oxygentoolbox.util.ResourceUtil;
|
||||||
|
import com.fatapp.oxygentoolbox.util.VibratorController;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
import com.google.android.material.navigation.NavigationView;
|
import com.google.android.material.navigation.NavigationView;
|
||||||
|
|
||||||
@@ -35,7 +36,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
drawer = findViewById(R.id.drawer_layout);
|
drawer = findViewById(R.id.drawer_layout);
|
||||||
navigationView = findViewById(R.id.nav_view);
|
navigationView = findViewById(R.id.nav_view);
|
||||||
mainActivity = this;
|
mainActivity = this;
|
||||||
ResourceUtil.init(getApplication());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -46,6 +46,8 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
//init
|
//init
|
||||||
initView();
|
initView();
|
||||||
initLayout();
|
initLayout();
|
||||||
|
ResourceUtil.init(getApplication());
|
||||||
|
VibratorController.init();
|
||||||
|
|
||||||
// shortCutCreateTest();
|
// shortCutCreateTest();
|
||||||
}
|
}
|
||||||
@@ -60,10 +62,12 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
navigationView.inflateMenu(R.menu.activity_main_drawer);
|
navigationView.inflateMenu(R.menu.activity_main_drawer);
|
||||||
navigationView.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
|
navigationView.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
|
||||||
if (navigationView.getMenu().getItem(0).isChecked()) {
|
if (navigationView.getMenu().getItem(0).isChecked()) {
|
||||||
|
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
||||||
fab.setVisibility(View.VISIBLE);
|
fab.setVisibility(View.VISIBLE);
|
||||||
} else if (navigationView.getMenu().getItem(4).isChecked()) {
|
} else if (navigationView.getMenu().getItem(4).isChecked()) {
|
||||||
System.exit(0);
|
finish();
|
||||||
} else {
|
} else {
|
||||||
|
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
|
||||||
fab.setVisibility(View.GONE);
|
fab.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.fatapp.oxygentoolbox.ui.home;
|
package com.fatapp.oxygentoolbox.ui.home;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
@@ -18,6 +20,7 @@ import com.fatapp.oxygentoolbox.R;
|
|||||||
import com.fatapp.oxygentoolbox.layout.FoldLayout;
|
import com.fatapp.oxygentoolbox.layout.FoldLayout;
|
||||||
import com.fatapp.oxygentoolbox.util.ToolsLauncher;
|
import com.fatapp.oxygentoolbox.util.ToolsLauncher;
|
||||||
import com.fatapp.oxygentoolbox.util.ToolsList;
|
import com.fatapp.oxygentoolbox.util.ToolsList;
|
||||||
|
import com.fatapp.oxygentoolbox.util.VibratorController;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -51,6 +54,7 @@ public class HomeFragment extends Fragment {
|
|||||||
initFoldLayout();
|
initFoldLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("ClickableViewAccessibility")
|
||||||
private void initFoldLayout() {
|
private void initFoldLayout() {
|
||||||
try {
|
try {
|
||||||
ToolsList.init(getResources().getAssets().open("json/BasicTools.json"));
|
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);
|
View toolButtonLayout = getLayoutInflater().inflate(R.layout.tool_button, null);
|
||||||
Button toolButton = toolButtonLayout.findViewById(R.id.tool_button);
|
Button toolButton = toolButtonLayout.findViewById(R.id.tool_button);
|
||||||
toolButton.setText(button.getText());
|
toolButton.setText(button.getText());
|
||||||
|
|
||||||
toolButton.setOnClickListener(v -> ToolsLauncher.launch(getContext(), button.getActivity()));
|
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);
|
autoLinefeedLayout.addView(toolButtonLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
</aapt:attr>
|
</aapt:attr>
|
||||||
</path>
|
</path>
|
||||||
<path
|
<path
|
||||||
android:fillColor="?attr/app_theme"
|
android:fillColor="@color/default_app_theme"
|
||||||
android:fillType="nonZero"
|
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: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"
|
android:strokeWidth="1"
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
android:id="@+id/nav_setting"
|
android:id="@+id/nav_setting"
|
||||||
android:icon="@drawable/ic_menu_setting"
|
android:icon="@drawable/ic_menu_setting"
|
||||||
android:title="@string/menu_setting" />
|
android:title="@string/menu_setting" />
|
||||||
|
</group>
|
||||||
|
<group android:checkableBehavior="single" android:id="@+id/nav_group_exit">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/nav_about"
|
android:id="@+id/nav_about"
|
||||||
android:icon="@drawable/ic_menu_about"
|
android:icon="@drawable/ic_menu_about"
|
||||||
|
|||||||
Reference in New Issue
Block a user