InterfaceUtils kotlinerization, inline isLayoutRtl function

pull/594/head
olegivo 5 years ago
parent 98f06f4fa8
commit 7eb5d04cce

@ -20,12 +20,11 @@ package org.isoron.androidbase.utils
import android.content.Context import android.content.Context
import android.graphics.Typeface import android.graphics.Typeface
import android.util.DisplayMetrics
import android.util.TypedValue import android.util.TypedValue
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import android.widget.TextView.OnEditorActionListener import android.widget.TextView.OnEditorActionListener
import androidx.core.view.ViewCompat
object InterfaceUtils { object InterfaceUtils {
private var fontAwesome: Typeface? = null private var fontAwesome: Typeface? = null
@ -44,42 +43,51 @@ object InterfaceUtils {
} }
@JvmStatic @JvmStatic
fun dpToPixels(context: Context, dp: Float): Float { fun dpToPixels(context: Context, dp: Float): Float =
if (fixedResolution != null) return dp * fixedResolution!! getPixels(
val resources = context.resources context,
val metrics = resources.displayMetrics fixedResolutionTransform = { dp * it },
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics) actualResolutionTransform = { TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, it) }
} )
@JvmStatic @JvmStatic
fun spToPixels(context: Context, sp: Float): Float { fun spToPixels(context: Context, sp: Float): Float =
if (fixedResolution != null) return sp * fixedResolution!! getPixels(
val resources = context.resources context,
val metrics = resources.displayMetrics fixedResolutionTransform = { sp * it },
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, metrics) actualResolutionTransform = { TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, it) }
} )
@JvmStatic @JvmStatic
fun getDimension(context: Context, id: Int): Float { fun getDimension(context: Context, id: Int): Float {
val dim = context.resources.getDimension(id) val dim = context.resources.getDimension(id)
return if (fixedResolution == null) dim else { return fixedResolution
val dm = context.resources.displayMetrics ?.let { fixedRes ->
val actualDensity = dm.density val dm = context.resources.displayMetrics
dim / actualDensity * fixedResolution!! val actualDensity = dm.density
} dim / actualDensity * fixedRes
}
?: dim
} }
fun setupEditorAction(parent: ViewGroup, fun setupEditorAction(parent: ViewGroup, listener: OnEditorActionListener) {
listener: OnEditorActionListener) {
for (i in 0 until parent.childCount) { for (i in 0 until parent.childCount) {
val child = parent.getChildAt(i) when (val child = parent.getChildAt(i)) {
if (child is ViewGroup) setupEditorAction(child, listener) is ViewGroup -> setupEditorAction(child, listener)
if (child is TextView) child.setOnEditorActionListener(listener) is TextView -> child.setOnEditorActionListener(listener)
}
} }
} }
fun isLayoutRtl(view: View?): Boolean { private fun getPixels(
return ViewCompat.getLayoutDirection(view!!) == context: Context,
ViewCompat.LAYOUT_DIRECTION_RTL fixedResolutionTransform: (Float) -> Float,
} actualResolutionTransform: (DisplayMetrics) -> Float
): Float =
fixedResolution?.let(fixedResolutionTransform)
?: run {
val resources = context.resources
val metrics = resources.displayMetrics
return actualResolutionTransform(metrics)
}
} }

@ -26,6 +26,7 @@ import android.view.*
import android.view.ViewGroup.LayoutParams.* import android.view.ViewGroup.LayoutParams.*
import android.widget.* import android.widget.*
import android.widget.RelativeLayout.* import android.widget.RelativeLayout.*
import androidx.core.view.ViewCompat
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.isoron.androidbase.utils.* import org.isoron.androidbase.utils.*
import org.isoron.uhabits.* import org.isoron.uhabits.*
@ -89,7 +90,7 @@ fun Int.toMeasureSpec(mode: Int) =
fun Float.toMeasureSpec(mode: Int) = fun Float.toMeasureSpec(mode: Int) =
View.MeasureSpec.makeMeasureSpec(toInt(), mode) View.MeasureSpec.makeMeasureSpec(toInt(), mode)
fun View.isRTL() = InterfaceUtils.isLayoutRtl(this) fun View.isRTL() = ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL
fun View.getFontAwesome() = InterfaceUtils.getFontAwesome(context)!! fun View.getFontAwesome() = InterfaceUtils.getFontAwesome(context)!!
fun View.dim(id: Int) = InterfaceUtils.getDimension(context, id) fun View.dim(id: Int) = InterfaceUtils.getDimension(context, id)
fun View.sp(value: Float) = InterfaceUtils.spToPixels(context, value) fun View.sp(value: Float) = InterfaceUtils.spToPixels(context, value)

Loading…
Cancel
Save