Skip to content

Instantly share code, notes, and snippets.

View nicemak's full-sized avatar
👨‍💻
Working

Mohsin Ahmed Khan nicemak

👨‍💻
Working
  • Sr. Android Developer @ Bosch Pharma Pvt. Ltd.
  • Karachi, Pakistan
View GitHub Profile
@nicemak
nicemak / FormatIBAN.kt
Created December 7, 2024 05:04 — forked from G00fY2/FormatIBAN.kt
Extension function to format IBAN Strings
fun String.formatIBAN(): String {
val iban = replace("\\s+".toRegex(), "").uppercase(Locale.getDefault())
val maxLength = (iban.length * 1.25).roundToInt()
val result = StringBuilder(maxLength)
iban.forEachIndexed { index, c ->
when {
index > 0 && index % 4 == 0 -> result.append(" $c")
else -> result.append(c)
}
}
@nicemak
nicemak / editText_IBAN_mask.kt
Created December 7, 2024 04:57 — forked from jrgavilanes/editText_IBAN_mask.kt
Example edit text with IBAN mask XXXX XXXX XXXX XXXX XXXX XXXX
package com.example.test
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import com.example.test.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
package com.example.livedatatest
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
fun isTextMoreThan(editText: EditText, charNumber: Int): Boolean {
return if (editText.text.toString().length >= charNumber) {
editText.background =
ContextCompat.getDrawable(requireContext(), R.drawable.shape_edit_text)
editText.background.alpha = 180
true
} else {
editText.background = ContextCompat.getDrawable(
requireContext(),
@nicemak
nicemak / MakingPasswordDialog.kt
Created December 7, 2024 04:37 — forked from brownsoo/MakingPasswordDialog.kt
Making a input password dialog programmatically
// activity with android:windowSoftInputMode="stateHidden"
private fun showPasswordDialog() {
val context = this.context ?: return
val editText = EditText(context)
editText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
editText.filters = arrayOf(InputFilter.LengthFilter(4))
val frame = FrameLayout(context)
frame.addView(editText)
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.widget.EditText
/**
* Created by Konstantin Tskhovrebov (aka @terrakok) on 18.09.17.
*/
class SmartField<T: Any>(
private val editText: EditText,
@nicemak
nicemak / NumberTextWatcher.kt
Created December 7, 2024 04:32 — forked from ahulyk/NumberTextWatcher.kt
Format number in android EditText after editing
package com.toastme.widget
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
import java.math.BigDecimal
import java.text.DecimalFormat
class NumberTextWatcher(private val editText: EditText) : TextWatcher {
@nicemak
nicemak / fix-duplicate-class-android-studio.md
Created June 21, 2024 04:49 — forked from danielcshn/fix-duplicate-class-android-studio.md
Fix Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-* Android Studio | 2022.2.1

📜 Info:

  • Android Studio Flamingo | 2022.2.1
  • Build #AI-222.4459.24.2221.9862592, built on March 31, 2023
  • Gradle JDK: jbr-17 (JetBrains Runtime version 17.0.6)
  • Windows 11 (version 10.0.22000.1817)

🐛 Bug/Error log:

@nicemak
nicemak / CircularTimerListener.kt
Last active October 25, 2022 05:56
CircularTimerView
interface CircularTimerListener {
fun updateDataOnTick(remainingTimeInMs: Long): String?
fun onTimerFinished()
}
@nicemak
nicemak / DownloadProgressLiveData.kt
Created June 27, 2022 04:40 — forked from typebrook/DownloadProgressLiveData.kt
Observe Download manager progress using LiveData and Coroutine #android #kotlin #livedata
data class DownloadItem(
val bytesDownloadedSoFar: Long = -1,
val totalSizeBytes: Long = -1,
val status: Int,
val uri: String
)
class DownloadProgressLiveData(private val activity: Activity) :
LiveData<List<DownloadItem>>(),
CoroutineScope {