desc:焦点控制

main
xiaowusky 2 years ago
parent 5421ad151c
commit 7565581995

@ -1,14 +1,22 @@
package com.yinuo.safetywatcher.watcher.base package com.yinuo.safetywatcher.watcher.base
import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.LayoutInflater.Factory2
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.databinding.ActivityBaseBinding import com.yinuo.safetywatcher.databinding.ActivityBaseBinding
import com.yinuo.safetywatcher.watcher.constant.NAMESPACE_ANDROID
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar
import com.yinuo.safetywatcher.watcher.utils.trySetCommonBg
abstract class BaseActivity : AppCompatActivity() { abstract class BaseActivity : AppCompatActivity() {
@ -19,6 +27,7 @@ abstract class BaseActivity : AppCompatActivity() {
var loadingDialog: CommonDialog? = null; var loadingDialog: CommonDialog? = null;
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setViewFactory()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(baseBinding.root) setContentView(baseBinding.root)
setChildContent() setChildContent()
@ -77,4 +86,39 @@ abstract class BaseActivity : AppCompatActivity() {
abstract fun generateContentView(): View abstract fun generateContentView(): View
abstract fun initView() abstract fun initView()
private fun setViewFactory() {
val inflater = LayoutInflater.from(this)
inflater.factory2 = object : Factory2 {
override fun onCreateView(
parent: View?,
name: String,
context: Context,
attrs: AttributeSet
): View? {
val booleanValue =
attrs.getAttributeBooleanValue(NAMESPACE_ANDROID, "focusable", false)
var view: View? = null
if (booleanValue) {
view = tryCreateView(name, context, attrs)
view?.trySetCommonBg()
}
return view
}
override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? {
return onCreateView(null, name, context, attrs)
}
}
}
private fun tryCreateView(name: String, context: Context, attrs: AttributeSet): View? {
return when (name) {
"LinearLayout" -> LinearLayout(context, attrs)
"TextView" -> TextView(context, attrs)
else -> {
null
}
}
}
} }

@ -17,3 +17,5 @@ const val DELAY_TIME_OPEN_CAMERA = 10
//检测重连摄像头延时 //检测重连摄像头延时
const val DELAY_TIME_CHECK_CAMERA = 5 const val DELAY_TIME_CHECK_CAMERA = 5
const val NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android"

@ -18,6 +18,7 @@ import com.yinuo.safetywatcher.databinding.LayoutTopbarBinding
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
import com.yinuo.safetywatcher.watcher.utils.SimHelper import com.yinuo.safetywatcher.watcher.utils.SimHelper
import com.yinuo.safetywatcher.watcher.utils.WifiHelper import com.yinuo.safetywatcher.watcher.utils.WifiHelper
import com.yinuo.safetywatcher.watcher.utils.trySetCommonBg
class CommonTopBar : LinearLayout { class CommonTopBar : LinearLayout {
constructor(context: Context?) : this(context, null) constructor(context: Context?) : this(context, null)
@ -142,8 +143,10 @@ class CommonTopBar : LinearLayout {
opView.setTextColor(Color.WHITE) opView.setTextColor(Color.WHITE)
opView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30f) opView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30f)
opView.tag = option.type opView.tag = option.type
opView.focusable = FOCUSABLE
opView.background = AppCompatResources.getDrawable(context, R.mipmap.op_bg) opView.background = AppCompatResources.getDrawable(context, R.mipmap.op_bg)
opView.setOnClickListener(opClickListener) opView.setOnClickListener(opClickListener)
opView.trySetCommonBg()
mBinding?.opsContainer?.addView(opView, opLayoutParams) mBinding?.opsContainer?.addView(opView, opLayoutParams)
if (index != list.size - 1) { if (index != list.size - 1) {
mBinding?.opsContainer?.addView(Space(context), opSpaceLayoutParams) mBinding?.opsContainer?.addView(Space(context), opSpaceLayoutParams)

@ -1,9 +1,26 @@
package com.yinuo.safetywatcher.watcher.utils package com.yinuo.safetywatcher.watcher.utils
import android.R
import android.content.Context import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.StateListDrawable
import android.view.View
import android.widget.Toast import android.widget.Toast
import com.yinuo.safetywatcher.watcher.ui.view.CommonToast import com.yinuo.safetywatcher.watcher.ui.view.CommonToast
fun Context.showToast(msg: String) { fun Context.showToast(msg: String) {
CommonToast(this).makeCommonText(this, msg, Toast.LENGTH_SHORT).show() CommonToast(this).makeCommonText(this, msg, Toast.LENGTH_SHORT).show()
} }
private val focusableStateKey: IntArray = intArrayOf(R.attr.state_focused)
fun View?.trySetCommonBg() {
this?.apply {
val bg = StateListDrawable()
val currentBackground = this.background
val drawable = ColorDrawable(Color.RED)
bg.addState(focusableStateKey, drawable)
bg.addState(intArrayOf(), currentBackground)
this.background = bg
}
}

@ -11,6 +11,8 @@
android:layout_height="@dimen/_100dp" android:layout_height="@dimen/_100dp"
android:background="@drawable/cloud_sync_btn_bg" android:background="@drawable/cloud_sync_btn_bg"
android:gravity="center" android:gravity="center"
android:focusedByDefault="true"
android:focusable="true"
android:text="@string/sync_sensor_txt" android:text="@string/sync_sensor_txt"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_30dp" /> android:textSize="@dimen/_30dp" />
@ -33,6 +35,7 @@
android:layout_marginTop="@dimen/_50dp" android:layout_marginTop="@dimen/_50dp"
android:background="@drawable/cloud_sync_btn_bg" android:background="@drawable/cloud_sync_btn_bg"
android:gravity="center" android:gravity="center"
android:focusable="true"
android:text="@string/sync_video_txt" android:text="@string/sync_video_txt"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_30dp" /> android:textSize="@dimen/_30dp" />
@ -44,6 +47,7 @@
android:layout_marginTop="@dimen/_50dp" android:layout_marginTop="@dimen/_50dp"
android:background="@drawable/cloud_sync_btn_bg" android:background="@drawable/cloud_sync_btn_bg"
android:gravity="center" android:gravity="center"
android:focusable="true"
android:text="@string/sync_once_txt" android:text="@string/sync_once_txt"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_30dp" /> android:textSize="@dimen/_30dp" />

@ -25,6 +25,7 @@
android:background="@drawable/save_btn_bg" android:background="@drawable/save_btn_bg"
android:paddingHorizontal="@dimen/_18dp" android:paddingHorizontal="@dimen/_18dp"
android:paddingVertical="@dimen/_12dp" android:paddingVertical="@dimen/_12dp"
android:focusable="true"
android:text="@string/modify_params" android:text="@string/modify_params"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_32dp" /> android:textSize="@dimen/_32dp" />

@ -26,6 +26,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:focusedByDefault="true" android:focusedByDefault="true"
android:focusable="true"
android:nextFocusDown="@id/item_query" android:nextFocusDown="@id/item_query"
android:paddingStart="@dimen/_66dp"> android:paddingStart="@dimen/_66dp">
@ -49,6 +50,7 @@
android:layout_height="@dimen/_88dp" android:layout_height="@dimen/_88dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:focusable="true"
android:paddingStart="@dimen/_66dp"> android:paddingStart="@dimen/_66dp">
<ImageView <ImageView
@ -70,6 +72,7 @@
android:id="@+id/item_wraning" android:id="@+id/item_wraning"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_88dp" android:layout_height="@dimen/_88dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_66dp"> android:paddingStart="@dimen/_66dp">
@ -92,6 +95,7 @@
android:id="@+id/item_recovery" android:id="@+id/item_recovery"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_88dp" android:layout_height="@dimen/_88dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_66dp"> android:paddingStart="@dimen/_66dp">
@ -113,6 +117,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_88dp" android:layout_height="@dimen/_88dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_66dp"> android:paddingStart="@dimen/_66dp">

@ -42,6 +42,7 @@
android:background="@drawable/cancel_btn_bg" android:background="@drawable/cancel_btn_bg"
android:gravity="center" android:gravity="center"
android:text="@string/cancel" android:text="@string/cancel"
android:focusable="true"
android:textColor="@color/white_30" android:textColor="@color/white_30"
android:textSize="@dimen/_36dp" /> android:textSize="@dimen/_36dp" />
@ -54,6 +55,7 @@
android:background="@drawable/confirm_btn_bg" android:background="@drawable/confirm_btn_bg"
android:gravity="center" android:gravity="center"
android:text="@string/confirm" android:text="@string/confirm"
android:focusable="true"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_36dp" /> android:textSize="@dimen/_36dp" />
</RelativeLayout> </RelativeLayout>

@ -40,6 +40,7 @@
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:focusable="true"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
<ImageView <ImageView

@ -25,6 +25,8 @@
android:background="@drawable/save_btn_bg" android:background="@drawable/save_btn_bg"
android:paddingHorizontal="@dimen/_18dp" android:paddingHorizontal="@dimen/_18dp"
android:paddingVertical="@dimen/_12dp" android:paddingVertical="@dimen/_12dp"
android:focusedByDefault="true"
android:focusable="true"
android:text="@string/modify_params" android:text="@string/modify_params"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_32dp" /> android:textSize="@dimen/_32dp" />

@ -12,6 +12,7 @@
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:focusable="true"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
<ImageView <ImageView
@ -37,6 +38,7 @@
android:id="@+id/item_light" android:id="@+id/item_light"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -64,6 +66,7 @@
android:id="@+id/item_query" android:id="@+id/item_query"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -91,6 +94,7 @@
android:id="@+id/item_wraning" android:id="@+id/item_wraning"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -118,6 +122,7 @@
android:id="@+id/item_video" android:id="@+id/item_video"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -145,6 +150,7 @@
android:id="@+id/item_sensor" android:id="@+id/item_sensor"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -172,6 +178,7 @@
android:id="@+id/item_cloud" android:id="@+id/item_cloud"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -199,6 +206,7 @@
android:id="@+id/item_net" android:id="@+id/item_net"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">
@ -226,6 +234,7 @@
android:id="@+id/item_recovery" android:id="@+id/item_recovery"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/_108dp" android:layout_height="@dimen/_108dp"
android:focusable="true"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/_121dp"> android:paddingStart="@dimen/_121dp">

@ -77,6 +77,7 @@
android:text="@string/cancel" android:text="@string/cancel"
android:textColor="@color/white_30" android:textColor="@color/white_30"
android:textSize="@dimen/_36dp" android:textSize="@dimen/_36dp"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
@ -91,6 +92,7 @@
android:text="@string/confirm" android:text="@string/confirm"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/_36dp" android:textSize="@dimen/_36dp"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -25,6 +25,7 @@
android:layout_marginStart="@dimen/_20dp" android:layout_marginStart="@dimen/_20dp"
android:paddingVertical="@dimen/_12dp" android:paddingVertical="@dimen/_12dp"
android:paddingHorizontal="@dimen/_18dp" android:paddingHorizontal="@dimen/_18dp"
android:focusable="true"
android:textSize="@dimen/_32dp" android:textSize="@dimen/_32dp"
android:textColor="@color/white" android:textColor="@color/white"
android:background="@drawable/save_btn_bg"/> android:background="@drawable/save_btn_bg"/>

@ -9,8 +9,9 @@
<LinearLayout <LinearLayout
android:id="@+id/back_area" android:id="@+id/back_area"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:gravity="center_vertical" android:gravity="center_vertical"
android:focusable="true"
android:paddingStart="16dp"> android:paddingStart="16dp">
<ImageView <ImageView

@ -13,7 +13,7 @@ project.ext {
versions = [ versions = [
compileSdkVersion : 33, compileSdkVersion : 33,
buildToolsVersion : "33.0.3", buildToolsVersion : "33.0.3",
minSdkVersion : 24, minSdkVersion : 26,
targetSdkVersion : 28, targetSdkVersion : 28,
versionCode : 1, versionCode : 1,
versionName : "1.0", versionName : "1.0",

Loading…
Cancel
Save