diff --git a/android/app/src/main/java/com/hyzq/boss/MainActivity.java b/android/app/src/main/java/com/hyzq/boss/MainActivity.java index 9d467a1..5c347f6 100644 --- a/android/app/src/main/java/com/hyzq/boss/MainActivity.java +++ b/android/app/src/main/java/com/hyzq/boss/MainActivity.java @@ -68,6 +68,7 @@ public class MainActivity extends AppCompatActivity { private Button refreshButton; private View conversationQuickActionsOverlay; private View conversationQuickActionsScrim; + private View conversationQuickActionsMenu; private View quickActionAddDevice; private View quickActionScan; private View quickActionGroupChat; @@ -204,6 +205,7 @@ public class MainActivity extends AppCompatActivity { refreshButton = findViewById(R.id.refresh_button); conversationQuickActionsOverlay = findViewById(R.id.conversation_quick_actions_overlay); conversationQuickActionsScrim = findViewById(R.id.conversation_quick_actions_scrim); + conversationQuickActionsMenu = findViewById(R.id.conversation_quick_actions_menu); quickActionAddDevice = findViewById(R.id.quick_action_add_device); quickActionScan = findViewById(R.id.quick_action_scan); quickActionGroupChat = findViewById(R.id.quick_action_group_chat); @@ -959,7 +961,7 @@ public class MainActivity extends AppCompatActivity { } private void showConversationQuickActions() { - if (conversationQuickActionsOverlay == null || conversationQuickActionsVisible + if (conversationQuickActionsOverlay == null || conversationQuickActionsMenu == null || conversationQuickActionsVisible || !"conversations".equals(activeTab) || conversationSelectionMode || conversationSearchMode) { return; } @@ -967,21 +969,22 @@ public class MainActivity extends AppCompatActivity { conversationQuickActionsOverlay.setVisibility(View.VISIBLE); conversationQuickActionsOverlay.bringToFront(); conversationQuickActionsScrim.setAlpha(0f); - prepareConversationQuickAction(quickActionAddDevice); - prepareConversationQuickAction(quickActionScan); - prepareConversationQuickAction(quickActionGroupChat); + prepareConversationQuickActionMenu(); conversationQuickActionsScrim.animate() .alpha(1f) - .setDuration(160L) + .setDuration(140L) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .start(); + conversationQuickActionsMenu.animate() + .alpha(1f) + .translationY(0f) + .setDuration(180L) .setInterpolator(new AccelerateDecelerateInterpolator()) .start(); - animateConversationQuickAction(quickActionAddDevice, -BossUi.dp(this, 12), BossUi.dp(this, 84), 0L); - animateConversationQuickAction(quickActionScan, -BossUi.dp(this, 90), BossUi.dp(this, 50), 24L); - animateConversationQuickAction(quickActionGroupChat, -BossUi.dp(this, 172), BossUi.dp(this, 14), 48L); } private void hideConversationQuickActions(boolean animated) { - if (conversationQuickActionsOverlay == null) { + if (conversationQuickActionsOverlay == null || conversationQuickActionsMenu == null) { return; } if (!conversationQuickActionsVisible && conversationQuickActionsOverlay.getVisibility() != View.VISIBLE) { @@ -991,71 +994,39 @@ public class MainActivity extends AppCompatActivity { if (!animated) { conversationQuickActionsOverlay.setVisibility(View.GONE); conversationQuickActionsScrim.setAlpha(0f); - resetConversationQuickAction(quickActionAddDevice); - resetConversationQuickAction(quickActionScan); - resetConversationQuickAction(quickActionGroupChat); + resetConversationQuickActionMenu(); return; } conversationQuickActionsScrim.animate() .alpha(0f) + .setDuration(120L) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .start(); + conversationQuickActionsMenu.animate() + .alpha(0f) + .translationY(-BossUi.dp(this, 8)) .setDuration(140L) .setInterpolator(new AccelerateDecelerateInterpolator()) .start(); - collapseConversationQuickAction(quickActionAddDevice, 0L); - collapseConversationQuickAction(quickActionScan, 20L); - collapseConversationQuickAction(quickActionGroupChat, 40L); conversationQuickActionsOverlay.postDelayed(() -> { if (!conversationQuickActionsVisible) { conversationQuickActionsOverlay.setVisibility(View.GONE); - resetConversationQuickAction(quickActionAddDevice); - resetConversationQuickAction(quickActionScan); - resetConversationQuickAction(quickActionGroupChat); + resetConversationQuickActionMenu(); } - }, 190L); + }, 150L); } - private void prepareConversationQuickAction(View actionView) { - actionView.setVisibility(View.VISIBLE); - actionView.setAlpha(0f); - actionView.setScaleX(0.86f); - actionView.setScaleY(0.86f); - actionView.setTranslationX(0f); - actionView.setTranslationY(0f); + private void prepareConversationQuickActionMenu() { + conversationQuickActionsMenu.setVisibility(View.VISIBLE); + conversationQuickActionsMenu.setAlpha(0f); + conversationQuickActionsMenu.setTranslationY(-BossUi.dp(this, 8)); } - private void animateConversationQuickAction(View actionView, float translationX, float translationY, long delayMs) { - actionView.animate() - .alpha(1f) - .scaleX(1f) - .scaleY(1f) - .translationX(translationX) - .translationY(translationY) - .setStartDelay(delayMs) - .setDuration(180L) - .setInterpolator(new AccelerateDecelerateInterpolator()) - .start(); - } - - private void collapseConversationQuickAction(View actionView, long delayMs) { - actionView.animate() - .alpha(0f) - .scaleX(0.88f) - .scaleY(0.88f) - .translationX(0f) - .translationY(0f) - .setStartDelay(delayMs) - .setDuration(140L) - .setInterpolator(new AccelerateDecelerateInterpolator()) - .start(); - } - - private void resetConversationQuickAction(View actionView) { - actionView.animate().cancel(); - actionView.setAlpha(0f); - actionView.setScaleX(0.86f); - actionView.setScaleY(0.86f); - actionView.setTranslationX(0f); - actionView.setTranslationY(0f); + private void resetConversationQuickActionMenu() { + conversationQuickActionsMenu.animate().cancel(); + conversationQuickActionsMenu.setAlpha(0f); + conversationQuickActionsMenu.setTranslationY(-BossUi.dp(this, 8)); + conversationQuickActionsMenu.setVisibility(View.GONE); } static boolean matchesConversationQuery(JSONObject item, String rawQuery) { diff --git a/android/app/src/main/res/drawable/bg_conversation_quick_actions_menu.xml b/android/app/src/main/res/drawable/bg_conversation_quick_actions_menu.xml new file mode 100644 index 0000000..8b95f63 --- /dev/null +++ b/android/app/src/main/res/drawable/bg_conversation_quick_actions_menu.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml index e1ba745..db3ac6b 100644 --- a/android/app/src/main/res/layout/activity_main.xml +++ b/android/app/src/main/res/layout/activity_main.xml @@ -273,59 +273,62 @@ android:paddingTop="22dp" android:paddingRight="20dp"> -