desc:焦点控制

main
xiaowusky 2 years ago
parent 5421ad151c
commit 7565581995

@ -1,14 +1,22 @@
package com.yinuo.safetywatcher.watcher.base
import android.content.Context
import android.os.Bundle
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.LayoutInflater.Factory2
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.yinuo.safetywatcher.R
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.CommonTopBar
import com.yinuo.safetywatcher.watcher.utils.trySetCommonBg
abstract class BaseActivity : AppCompatActivity() {
@ -19,6 +27,7 @@ abstract class BaseActivity : AppCompatActivity() {
var loadingDialog: CommonDialog? = null;
override fun onCreate(savedInstanceState: Bundle?) {
setViewFactory()
super.onCreate(savedInstanceState)
setContentView(baseBinding.root)
setChildContent()
@ -77,4 +86,39 @@ abstract class BaseActivity : AppCompatActivity() {
abstract fun generateContentView(): View
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
}
}
}
}

@ -16,4 +16,6 @@ const val CAMERA_URL = "rtsp://admin:123456@192.168.5.200:554/h264/ch1/main/av_s
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.SimHelper
import com.yinuo.safetywatcher.watcher.utils.WifiHelper
import com.yinuo.safetywatcher.watcher.utils.trySetCommonBg
class CommonTopBar : LinearLayout {
constructor(context: Context?) : this(context, null)
@ -142,8 +143,10 @@ class CommonTopBar : LinearLayout {
opView.setTextColor(Color.WHITE)
opView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30f)
opView.tag = option.type
opView.focusable = FOCUSABLE
opView.background = AppCompatResources.getDrawable(context, R.mipmap.op_bg)
opView.setOnClickListener(opClickListener)
opView.trySetCommonBg()
mBinding?.opsContainer?.addView(opView, opLayoutParams)
if (index != list.size - 1) {
mBinding?.opsContainer?.addView(Space(context), opSpaceLayoutParams)

@ -1,9 +1,26 @@
package com.yinuo.safetywatcher.watcher.utils
import android.R
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 com.yinuo.safetywatcher.watcher.ui.view.CommonToast
fun Context.showToast(msg: String) {
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:background="@drawable/cloud_sync_btn_bg"
android:gravity="center"
android:focusedByDefault="true"
android:focusable="true"
android:text="@string/sync_sensor_txt"
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />
@ -33,6 +35,7 @@
android:layout_marginTop="@dimen/_50dp"
android:background="@drawable/cloud_sync_btn_bg"
android:gravity="center"
android:focusable="true"
android:text="@string/sync_video_txt"
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />
@ -44,6 +47,7 @@
android:layout_marginTop="@dimen/_50dp"
android:background="@drawable/cloud_sync_btn_bg"
android:gravity="center"
android:focusable="true"
android:text="@string/sync_once_txt"
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />

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

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

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

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

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

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

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

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

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

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

Loading…
Cancel
Save