From 4da26aa5627c32cfa747ad61e1820182e2232dac Mon Sep 17 00:00:00 2001 From: Silvananight17 Date: Tue, 23 Oct 2018 01:24:18 +0300 Subject: [PATCH] Code simplify --- .../goldenpie/devs/pincodeview/PinCodeView.kt | 70 +++++++++---------- .../devs/pincodeview/SinglePinView.kt | 2 - .../main/res/layout/pin_code_view_layout.xml | 1 + .../res/layout/single_pin_view_layout.xml | 40 ++++------- 4 files changed, 49 insertions(+), 64 deletions(-) diff --git a/library/src/main/java/com/goldenpie/devs/pincodeview/PinCodeView.kt b/library/src/main/java/com/goldenpie/devs/pincodeview/PinCodeView.kt index b28b7fa..181495c 100644 --- a/library/src/main/java/com/goldenpie/devs/pincodeview/PinCodeView.kt +++ b/library/src/main/java/com/goldenpie/devs/pincodeview/PinCodeView.kt @@ -27,23 +27,26 @@ import java.util.* open class PinCodeView : LinearLayout, View.OnClickListener { + private lateinit var pinLayout: LinearLayout + private lateinit var invisibleEditText: AppCompatEditText + + private lateinit var lockType: LockType + @ColorInt - private var innerCircleColor: Int = 0 + private var innerCircleColor = 0 @ColorInt - private var outerCircleColor: Int = 0 + private var outerCircleColor = 0 @ColorInt - private var errorColor: Int = 0 + private var errorColor = 0 + + private var pinCount = 0 + private var innerAlpha = 0f private var innerDrawable: Drawable? = null private var outerDrawable: Drawable? = null - private var pinCount: Int = 0 - private var innerAlpha: Float = 0.toFloat() private var tintInner = true private var tintOuter = true - private lateinit var pinLayout: LinearLayout - private lateinit var invisibleEditText: AppCompatEditText - private var lockType: LockType? = null private var pass: String? = null private var pinEnteredListener: Listeners.PinEnteredListener? = null @@ -100,10 +103,10 @@ open class PinCodeView : LinearLayout, View.OnClickListener { tintOuter = getBoolean(R.styleable.PinCodeView_pcv_pin_tint_outer, tintOuter) innerDrawable = getDrawable(R.styleable.PinCodeView_pcv_pin_inner_drawable) - innerDrawable?:run { innerDrawable = ContextCompat.getDrawable(context, R.drawable.circle) } + innerDrawable ?: run { innerDrawable = ContextCompat.getDrawable(context, R.drawable.circle) } outerDrawable = getDrawable(R.styleable.PinCodeView_pcv_pin_outer_drawable) - outerDrawable?:run { outerDrawable = ContextCompat.getDrawable(context, R.drawable.circle) } + outerDrawable ?: run { outerDrawable = ContextCompat.getDrawable(context, R.drawable.circle) } when (getInt(R.styleable.PinCodeView_pcv_pin_type, 0)) { 0 -> lockType = LockType.UNLOCK @@ -180,13 +183,12 @@ open class PinCodeView : LinearLayout, View.OnClickListener { if (pinCount <= 0) return - for (pin in pins) { - pin.innerPinView.alpha = innerAlpha - } + pins.asSequence() + .map { it.innerPinView } + .onEach { alpha = innerAlpha } + + (0 until s.length).forEach { pins[it].innerPinView.alpha = 1f } - for (i in 0 until s.length) { - pins[i].innerPinView.alpha = 1f - } if (lockType == LockType.ENTER_PIN && !pass.isNullOrEmpty() && s.isEmpty()) { pinReEnterListener?.onPinReEnterStarted() @@ -204,9 +206,7 @@ open class PinCodeView : LinearLayout, View.OnClickListener { invisibleEditText.text!!.clear() } else { if (pass != s.toString()) { - reset() - pinMismatchListener?.onPinMismatch() return @@ -229,20 +229,17 @@ open class PinCodeView : LinearLayout, View.OnClickListener { * Reset pin code view with error style */ fun reset() { - for (pin in pins) { - pin.innerPinView.setColorFilter(errorColor) - } + pins.onEach { it.innerPinView.setColorFilter(errorColor) } Handler().postDelayed({ - for (pin in pins) { - pin.innerPinView.apply { - if (tintInner) - setColorFilter(innerCircleColor) - else - clearColorFilter() - } - - } + pins.asSequence() + .map { it.innerPinView } + .onEach { + if (tintInner) + it.setColorFilter(innerCircleColor) + else + it.clearColorFilter() + } invisibleEditText.text!!.clear() }, 500) @@ -257,13 +254,12 @@ open class PinCodeView : LinearLayout, View.OnClickListener { } override fun onClick(v: View) { - val id = v.id - - if (id == R.id.pin_layout) { - with(invisibleEditText) { - clearFocus() - requestFocus() - } + when { + v.id == R.id.pin_layout -> + with(invisibleEditText) { + clearFocus() + requestFocus() + } } } diff --git a/library/src/main/java/com/goldenpie/devs/pincodeview/SinglePinView.kt b/library/src/main/java/com/goldenpie/devs/pincodeview/SinglePinView.kt index 9a54561..d9966e3 100644 --- a/library/src/main/java/com/goldenpie/devs/pincodeview/SinglePinView.kt +++ b/library/src/main/java/com/goldenpie/devs/pincodeview/SinglePinView.kt @@ -41,8 +41,6 @@ internal class SinglePinView : LinearLayout { outerPinView = findViewById(R.id.outer_pin_view) as AppCompatImageView innerPinView = findViewById(R.id.inner_pin_view) as AppCompatImageView } - - listOf(outerPinView, innerPinView).onEach { it.setImageResource(R.drawable.circle) } } fun setColors(innerColor: Int, outerColor: Int) { diff --git a/library/src/main/res/layout/pin_code_view_layout.xml b/library/src/main/res/layout/pin_code_view_layout.xml index 8b6df33..9798077 100644 --- a/library/src/main/res/layout/pin_code_view_layout.xml +++ b/library/src/main/res/layout/pin_code_view_layout.xml @@ -11,6 +11,7 @@ android:layout_marginLeft="24dp" android:layout_marginRight="24dp" android:clickable="true" + android:focusable="true" android:orientation="horizontal" /> - - + - - - - - \ No newline at end of file + + \ No newline at end of file