11 Commits

Author SHA1 Message Date
Binondi Borthakur
82982aa221 Added Android Freeware 2025-07-12 10:44:51 +05:30
Binondi Borthakur
6f151554f0 Updated Version 2025-07-12 10:34:45 +05:30
Binondi
5ecd3ec7d1 Merge remote-tracking branch 'origin/master' 2025-07-11 14:00:13 +05:30
Binondi
946953d4eb Fixed - App Crashing in lower android versions, added edge to edge for devices higher then android 15 2025-07-11 13:59:47 +05:30
Binondi Borthakur
18172f5191 Update README.md 2025-06-09 00:41:38 +05:30
Binondi Borthakur
603d96b672 Added - payment qr 2025-06-09 00:35:57 +05:30
Binondi Borthakur
78ea4596ea Update README.md 2025-06-09 00:34:48 +05:30
Binondi Borthakur
a70a569b57 Added - Payment QR 2025-06-09 00:31:00 +05:30
Binondi Borthakur
df0db1a479 Made Some. Changes 2025-06-09 00:30:18 +05:30
Binondi Borthakur
9cdc6eb1a4 Added - Payment QR 2025-06-09 00:21:45 +05:30
Binondi Borthakur
913af83b90 Updated Some Details 2025-06-09 00:11:45 +05:30
18 changed files with 263 additions and 161 deletions

View File

@@ -5,11 +5,11 @@
# 📂 Calculator Hide File App for Android 📂 # 📂 Calculator Hide File App for Android 📂
<a href="https://github.com/Binondi/Calculator-Hide-Files/releases/latest"> <a href="https://github.com/Binondi/Calculator-Hide-Files/releases/latest">
<img alt="Latest release" src="https://img.shields.io/badge/Releases-v1.4.0-blue?logo=github&style=for-the-badge"> <img alt="Latest release" src="https://img.shields.io/badge/Releases-v1.4.2-blue?logo=github&style=for-the-badge">
</a> </a>
<a href="https://github.com/Binondi/Calculator-Hide-Files/releases/latest"> <a href="https://github.com/Binondi/Calculator-Hide-Files/releases/latest">
<img alt="Downloads" src="https://img.shields.io/github/downloads/Binondi/Calculator-Hide-Files/total?style=for-the-badge"> <img alt="Downloads" src="https://img.shields.io/badge/downloads-1.1k-blue?logo=github&style=for-the-badge">
</a> </a>
<a href="LICENSE"> <a href="LICENSE">
@@ -23,7 +23,7 @@
<h4>Download</h4> <h4>Download</h4>
<a>[<img src="https://github.com/machiav3lli/oandbackupx/blob/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png" alt="Get it on GitHub" height="80">](https://github.com/binondi/Calculator-Hide-Files/releases) </a><a href="https://apt.izzysoft.de/fdroid/index/apk/devs.org.calculator"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" height="80"></a> <a>[<img src="https://github.com/machiav3lli/oandbackupx/blob/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png" alt="Get it on GitHub" height="80">](https://github.com/binondi/Calculator-Hide-Files/releases) </a><a href="https://apt.izzysoft.de/fdroid/index/apk/devs.org.calculator"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" height="80"></a> <a href="https://www.androidfreeware.net/download-apk-devs-org-calculator.html"><img src="https://www.androidfreeware.net/images/androidfreeware-badge.png" height="80"></a>
</div> </div>
@@ -134,6 +134,11 @@ If you find this app useful, please consider supporting the development. 🙏
[![Sponsor on GitHub](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/Binondi) [![Sponsor on GitHub](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/Binondi)
[![Donate via PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/BinondiBorthakur56) [![Donate via PayPal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/BinondiBorthakur56)
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/binondi) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/binondi)
- **UPI ID** 📱
``
binondi@naviaxis
``
--- ---
## 🔧 Contributing ## 🔧 Contributing

View File

@@ -13,8 +13,8 @@ android {
minSdk = 26 minSdk = 26
//noinspection OldTargetApi //noinspection OldTargetApi
targetSdk = 34 targetSdk = 34
versionCode = 6 versionCode = 7
versionName = "1.4.1" versionName = "1.4.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 4, "versionCode": 6,
"versionName": "1.3", "versionName": "1.4.1",
"outputFile": "app-release.apk" "outputFile": "app-release.apk"
} }
], ],

View File

@@ -11,7 +11,10 @@ import android.view.WindowManager
import android.widget.EditText import android.widget.EditText
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import devs.org.calculator.R import devs.org.calculator.R
@@ -47,7 +50,12 @@ class HiddenActivity : AppCompatActivity() {
fileManager = FileManager(this, this) fileManager = FileManager(this, this)
folderManager = FolderManager() folderManager = FolderManager()
dialogUtil = DialogUtil(this) dialogUtil = DialogUtil(this)
enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
setupInitialUIState() setupInitialUIState()
setupClickListeners() setupClickListeners()

View File

@@ -24,6 +24,10 @@ import devs.org.calculator.utils.PrefsUtil
import net.objecthunter.exp4j.ExpressionBuilder import net.objecthunter.exp4j.ExpressionBuilder
import java.util.regex.Pattern import java.util.regex.Pattern
import androidx.core.content.edit import androidx.core.content.edit
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import devs.org.calculator.utils.StoragePermissionUtil
class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.DialogCallback { class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.DialogCallback {
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
@@ -36,6 +40,8 @@ class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.Dial
private val dialogUtil = DialogUtil(this) private val dialogUtil = DialogUtil(this)
private val fileManager = FileManager(this, this) private val fileManager = FileManager(this, this)
private val sp by lazy { getSharedPreferences("app", MODE_PRIVATE) } private val sp by lazy { getSharedPreferences("app", MODE_PRIVATE) }
private lateinit var storagePermissionUtil: StoragePermissionUtil
private lateinit var permissionLauncher: ActivityResultLauncher<Array<String>>
@RequiresApi(Build.VERSION_CODES.R) @RequiresApi(Build.VERSION_CODES.R)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@@ -43,15 +49,30 @@ class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.Dial
binding = ActivityMainBinding.inflate(layoutInflater) binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
enableEdgeToEdge() enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
insets
}
permissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { permissions ->
storagePermissionUtil.handlePermissionResult(permissions)
}
// Initialize StoragePermissionUtil
storagePermissionUtil = StoragePermissionUtil(this)
launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
handleActivityResult(result) handleActivityResult(result)
} }
if (sp.getBoolean("isFirst", true)){ if (sp.getBoolean("isFirst", true)){
binding.display.text = getString(R.string.enter_123456) binding.display.text = getString(R.string.enter_123456)
} }
if(!Environment.isExternalStorageManager()) {
if (!storagePermissionUtil.hasStoragePermission()) {
dialogUtil.showMaterialDialog( dialogUtil.showMaterialDialog(
getString(R.string.storage_permission), getString(R.string.storage_permission),
getString(R.string.to_ensure_the_app_works_properly_and_allows_you_to_easily_hide_or_un_hide_your_private_files_please_grant_storage_access_permission) + getString(R.string.to_ensure_the_app_works_properly_and_allows_you_to_easily_hide_or_un_hide_your_private_files_please_grant_storage_access_permission) +
@@ -61,7 +82,10 @@ class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.Dial
getString(R.string.later), getString(R.string.later),
object : DialogUtil.DialogCallback { object : DialogUtil.DialogCallback {
override fun onPositiveButtonClicked() { override fun onPositiveButtonClicked() {
fileManager.askPermission(this@MainActivity) storagePermissionUtil.requestStoragePermission(permissionLauncher) {
Toast.makeText(this@MainActivity, getString(R.string.permission_granted), Toast.LENGTH_SHORT).show()
}
} }
override fun onNegativeButtonClicked() { override fun onNegativeButtonClicked() {
@@ -75,9 +99,11 @@ class MainActivity : AppCompatActivity(), DialogActionsCallback, DialogUtil.Dial
getString(R.string.you_can_grant_permission_later_from_settings), getString(R.string.you_can_grant_permission_later_from_settings),
Toast.LENGTH_LONG).show() Toast.LENGTH_LONG).show()
} }
})
} }
)
}
setupNumberButton(binding.btn0, "0") setupNumberButton(binding.btn0, "0")
setupNumberButton(binding.btn00, "00") setupNumberButton(binding.btn00, "00")
setupNumberButton(binding.btn1, "1") setupNumberButton(binding.btn1, "1")

View File

@@ -6,7 +6,10 @@ import android.os.Handler
import android.os.Looper import android.os.Looper
import android.view.WindowManager import android.view.WindowManager
import android.widget.Toast import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import devs.org.calculator.R import devs.org.calculator.R
@@ -42,7 +45,12 @@ class PreviewActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityPreviewBinding.inflate(layoutInflater) binding = ActivityPreviewBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
fileManager = FileManager(this, this) fileManager = FileManager(this, this)
currentPosition = intent.getIntExtra("position", 0) currentPosition = intent.getIntExtra("position", 0)

View File

@@ -6,9 +6,12 @@ import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.EditText import android.widget.EditText
import android.widget.Toast import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@@ -29,6 +32,12 @@ class SettingsActivity : AppCompatActivity() {
binding = ActivitySettingsBinding.inflate(layoutInflater) binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
prefs = PrefsUtil(this) prefs = PrefsUtil(this)
enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
DEV_GITHUB_URL = getString(R.string.github_profile) DEV_GITHUB_URL = getString(R.string.github_profile)
GITHUB_URL = getString(R.string.calculator_hide_files, DEV_GITHUB_URL) GITHUB_URL = getString(R.string.calculator_hide_files, DEV_GITHUB_URL)
setupUI() setupUI()

View File

@@ -5,7 +5,10 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.android.material.color.DynamicColors import com.google.android.material.color.DynamicColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
@@ -26,7 +29,12 @@ class SetupPasswordActivity : AppCompatActivity() {
binding = ActivitySetupPasswordBinding.inflate(layoutInflater) binding = ActivitySetupPasswordBinding.inflate(layoutInflater)
binding2 = ActivityChangePasswordBinding.inflate(layoutInflater) binding2 = ActivityChangePasswordBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
prefsUtil = PrefsUtil(this) prefsUtil = PrefsUtil(this)
hasPassword = prefsUtil.hasPassword() hasPassword = prefsUtil.hasPassword()

View File

@@ -40,6 +40,9 @@ import android.widget.CheckBox
import android.widget.CompoundButton import android.widget.CompoundButton
import android.app.AlertDialog import android.app.AlertDialog
import android.view.WindowManager import android.view.WindowManager
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import devs.org.calculator.adapters.FileAdapter import devs.org.calculator.adapters.FileAdapter
class ViewFolderActivity : AppCompatActivity() { class ViewFolderActivity : AppCompatActivity() {
@@ -71,6 +74,12 @@ class ViewFolderActivity : AppCompatActivity() {
binding = ActivityViewFolderBinding.inflate(layoutInflater) binding = ActivityViewFolderBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
setupAnimations() setupAnimations()
initialize() initialize()
setupClickListeners() setupClickListeners()

View File

@@ -7,6 +7,7 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Environment import android.os.Environment
import android.provider.Settings import android.provider.Settings
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
@@ -16,17 +17,12 @@ import androidx.core.net.toUri
class StoragePermissionUtil(private val activity: AppCompatActivity) { class StoragePermissionUtil(private val activity: AppCompatActivity) {
private val requestPermissionLauncher = activity.registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { permissions ->
if (permissions.all { it.value }) {
onPermissionGranted?.invoke()
}
}
private var onPermissionGranted: (() -> Unit)? = null private var onPermissionGranted: (() -> Unit)? = null
fun requestStoragePermission(onGranted: () -> Unit) { fun requestStoragePermission(
launcher: ActivityResultLauncher<Array<String>>,
onGranted: () -> Unit
) {
onPermissionGranted = onGranted onPermissionGranted = onGranted
when { when {
@@ -45,7 +41,7 @@ class StoragePermissionUtil(private val activity: AppCompatActivity) {
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
) )
requestPermissionLauncher.launch(permissions) launcher.launch(permissions)
} }
} }
} }
@@ -66,4 +62,10 @@ class StoragePermissionUtil(private val activity: AppCompatActivity) {
writePermission == PermissionChecker.PERMISSION_GRANTED writePermission == PermissionChecker.PERMISSION_GRANTED
} }
} }
fun handlePermissionResult(permissions: Map<String, Boolean>) {
if (permissions.all { it.value }) {
onPermissionGranted?.invoke()
}
}
} }

View File

@@ -5,9 +5,19 @@
android:id="@+id/main" android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="16dp"
tools:context=".activities.SetupPasswordActivity"> tools:context=".activities.SetupPasswordActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/tvTitle" android:id="@+id/tvTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -33,8 +43,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:singleLine="true" android:inputType="number"
android:inputType="number" /> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
@@ -51,8 +61,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:singleLine="true" android:inputType="number"
android:inputType="number" /> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
@@ -75,4 +85,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnChangePassword" /> app:layout_constraintTop_toBottomOf="@id/btnChangePassword" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/main"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">

View File

@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/main"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".activities.SettingsActivity"> tools:context=".activities.SettingsActivity">

View File

@@ -5,9 +5,20 @@
android:id="@+id/main" android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:padding="16dp"
tools:context=".activities.SetupPasswordActivity"> tools:context=".activities.SetupPasswordActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:padding="18dp"
android:gravity="center_horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/tvTitle" android:id="@+id/tvTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -33,8 +44,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:singleLine="true" android:inputType="number"
android:inputType="number" /> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
@@ -51,8 +62,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:singleLine="true" android:inputType="number"
android:inputType="number" /> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
@@ -105,4 +116,5 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnSavePassword" /> app:layout_constraintTop_toBottomOf="@id/btnSavePassword" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -4,6 +4,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView

View File

@@ -1,5 +1,5 @@
[versions] [versions]
agp = "8.10.1" agp = "8.11.1"
documentfile = "1.1.0" documentfile = "1.1.0"
exp4j = "0.4.8" exp4j = "0.4.8"
glide = "4.16.0" glide = "4.16.0"

View File

@@ -1,6 +1,6 @@
#Sun Nov 03 19:53:13 IST 2024 #Sun Nov 03 19:53:13 IST 2024
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

BIN
media/payment_qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB