From 2d705457f8bf92924a715981605a699727175de5 Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Thu, 21 May 2026 01:37:37 +0500 Subject: [PATCH] animate lock and eye icons in action bar (top) --- .../sh/sar/basedbank/ui/home/HomeActivity.kt | 14 ++++- .../main/res/drawable/avd_hide_amounts.xml | 58 +++++++++++++++++++ app/src/main/res/drawable/avd_lock.xml | 52 +++++++++++++++++ .../main/res/drawable/avd_show_amounts.xml | 57 ++++++++++++++++++ app/src/main/res/drawable/ic_lock.xml | 14 ++++- 5 files changed, 192 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/avd_hide_amounts.xml create mode 100644 app/src/main/res/drawable/avd_lock.xml create mode 100644 app/src/main/res/drawable/avd_show_amounts.xml diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt index 9c233c4..df61ab6 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt @@ -427,14 +427,24 @@ fun applyNavLabelVisibility() { override fun onOptionsItemSelected(item: MenuItem): Boolean { if (item.itemId == R.id.action_lock) { - lock() + val avd = getDrawable(R.drawable.avd_lock) as? android.graphics.drawable.AnimatedVectorDrawable + if (avd != null) { + item.icon = avd + avd.start() + Handler(Looper.getMainLooper()).postDelayed({ lock() }, 200) + } else { + lock() + } return true } if (item.itemId == R.id.action_hide_amounts) { val newHidden = !(viewModel.hideAmounts.value ?: false) viewModel.hideAmounts.value = newHidden getSharedPreferences("prefs", MODE_PRIVATE).edit().putBoolean("hide_amounts", newHidden).apply() - invalidateOptionsMenu() + val avd = getDrawable(if (newHidden) R.drawable.avd_hide_amounts else R.drawable.avd_show_amounts) + as? android.graphics.drawable.AnimatedVectorDrawable + item.icon = avd + avd?.start() return true } return super.onOptionsItemSelected(item) diff --git a/app/src/main/res/drawable/avd_hide_amounts.xml b/app/src/main/res/drawable/avd_hide_amounts.xml new file mode 100644 index 0000000..f2a780a --- /dev/null +++ b/app/src/main/res/drawable/avd_hide_amounts.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/avd_lock.xml b/app/src/main/res/drawable/avd_lock.xml new file mode 100644 index 0000000..39be77f --- /dev/null +++ b/app/src/main/res/drawable/avd_lock.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/avd_show_amounts.xml b/app/src/main/res/drawable/avd_show_amounts.xml new file mode 100644 index 0000000..90cb717 --- /dev/null +++ b/app/src/main/res/drawable/avd_show_amounts.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml index 72682a1..a37434e 100644 --- a/app/src/main/res/drawable/ic_lock.xml +++ b/app/src/main/res/drawable/ic_lock.xml @@ -5,7 +5,19 @@ android:viewportWidth="24" android:viewportHeight="24" android:tint="?attr/colorControlNormal"> + + + + + + android:fillType="evenOdd" + android:pathData="M6,8H18c1.1,0 2,0.9 2,2V20c0,1.1-0.9,2-2,2H6c-1.1,0-2,-0.9-2,-2V10c0,-1.1 0.9,-2 2,-2zM12,15c-1.1,0-2,0.9-2,2s0.9,2 2,2 2,-0.9 2,-2-0.9,-2-2,-2z"/> +