diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> (R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/item_hidden_trouble_l.xml b/app/src/main/res/layout/item_hidden_trouble_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_hidden_trouble_l.xml +++ b/app/src/main/res/layout/item_hidden_trouble_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> (R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/item_hidden_trouble_l.xml b/app/src/main/res/layout/item_hidden_trouble_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_hidden_trouble_l.xml +++ b/app/src/main/res/layout/item_hidden_trouble_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> @@ -10,8 +12,7 @@ android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="@dimen/dp_10" - android:src="@drawable/ic_library_video" /> + android:layout_margin="@dimen/dp_10" /> (R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/item_hidden_trouble_l.xml b/app/src/main/res/layout/item_hidden_trouble_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_hidden_trouble_l.xml +++ b/app/src/main/res/layout/item_hidden_trouble_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> @@ -10,8 +12,7 @@ android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="@dimen/dp_10" - android:src="@drawable/ic_library_video" /> + android:layout_margin="@dimen/dp_10" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt index 562a56b..9b8eb2f 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/CheckManifestActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityCheckManifestBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt index 6c07e69..97c9456 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/HiddenTroubleActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityHiddenTroubleBinding import com.casic.br.ar.app.model.DictionaryModel @@ -48,6 +49,14 @@ viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.textView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = menuAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt index 2f13051..87e9b3b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/LibraryActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import android.view.View +import android.widget.LinearLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityLibraryBinding @@ -67,6 +68,15 @@ viewHolder.setImageResource(R.id.imageView,imageSource) .setText(R.id.textView, item.name) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = libraryAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt index cb66171..3f6c21b 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/MainActivity.kt @@ -1,15 +1,21 @@ package com.casic.br.ar.app.view +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Message -import android.util.Log -import android.view.KeyEvent import android.view.View +import android.widget.LinearLayout +import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityMainBinding import com.casic.br.ar.app.external.Yolov8ncnn +import com.casic.br.ar.app.service.WebSocketMessageService import com.casic.br.ar.app.utils.LocaleConstant +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -24,6 +30,8 @@ private val kTag = "MainActivity" private val yolov8ncnn by lazy { Yolov8ncnn() } + private val marginOffset by lazy { 25.dp2px(this) } + private lateinit var itemAdapter: NormalRecyclerAdapter override fun handleMessage(msg: Message): Boolean { when (msg.what) { @@ -38,29 +46,52 @@ return true } - private var clickTime: Long = 0 - override fun initEvent() { - binding.startCheckButton.setOnClickListener { - navigatePageTo() - } - - binding.checkHistoryButton.setOnClickListener { - navigatePageTo() - } - - binding.libraryButton.setOnClickListener { - navigatePageTo() - } + itemAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + when (position) { + 0 -> navigatePageTo() + 1 -> navigatePageTo() + 2 -> navigatePageTo() + } + } + }) } override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - //初始化OpenCV OpenCVLoader.initLocal() + //算法服务 + startService(Intent(this, WebSocketMessageService::class.java)) -// startService(Intent(this, WebSocketMessageService::class.java)) + itemAdapter = object : NormalRecyclerAdapter( + R.layout.item_main_rv_l, arrayListOf("开始检查", "检查记录", "知识库") + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + val image = when (position) { + 0 -> R.drawable.ic_main_start_check + 1 -> R.drawable.ic_main_check_history + else -> R.drawable.ic_main_library + } + viewHolder.setImageResource(R.id.itemImageView, image) + .setText(R.id.itemTextView, item) + + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + if (hasFocus) { + v.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + v.setBackgroundResource(R.drawable.view_item_border) + } + } + } + } + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, 0, marginOffset, 0) + ) + binding.recyclerView.adapter = itemAdapter } override fun initViewBinding(): ActivityMainBinding { @@ -88,54 +119,4 @@ useDetect = false ) } - - override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyDown: $keyCode") - return super.onKeyDown(keyCode, event) - } - - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - Log.d(kTag, "onKeyUp: $keyCode") - return super.onKeyUp(keyCode, event) - } - - private var selectedIndex = 1 - -// override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { -// Log.d(kTag, "onKeyUp: $keyCode") -// when (keyCode) { -// KeyEvent.KEYCODE_DPAD_RIGHT -> { -// selectedIndex-- -// } -// -// KeyEvent.KEYCODE_DPAD_LEFT -> { -// selectedIndex++ -// } -// -// KeyEvent.KEYCODE_DPAD_CENTER -> { -// -// } -// } -// -// when (selectedIndex) { -// 1 -> { -// binding.startCheckTagView.visibility = View.VISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 2 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.VISIBLE -// binding.libraryTagView.visibility = View.INVISIBLE -// } -// -// 3 -> { -// binding.startCheckTagView.visibility = View.INVISIBLE -// binding.checkHistoryTagView.visibility = View.INVISIBLE -// binding.libraryTagView.visibility = View.VISIBLE -// } -// } -// return super.onKeyUp(keyCode, event) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt index c065d33..004bcfb 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/StandardFileActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityStandardFileBinding @@ -83,6 +85,15 @@ item: StandardFileModel.DataModel.RowsModel ) { viewHolder.setText(R.id.fileTitleView, item.name) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = standardFileAdapter diff --git a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt index 06e0770..7675d03 100644 --- a/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt +++ b/app/src/main/java/com/casic/br/ar/app/view/VideoGuideActivity.kt @@ -4,6 +4,8 @@ import android.os.Handler import android.os.Message import android.view.View +import android.widget.LinearLayout +import android.widget.RelativeLayout import androidx.lifecycle.ViewModelProvider import com.casic.br.ar.app.R import com.casic.br.ar.app.databinding.ActivityVideoGuideBinding @@ -93,6 +95,15 @@ } viewHolder.setImageResource(R.id.imageView, imageSource) .setText(R.id.fileTitleView, item.title) + viewHolder.getView(R.id.itemRootView) + .setOnFocusChangeListener { v, hasFocus -> + val relativeLayout = v.findViewById(R.id.childView) + if (hasFocus) { + relativeLayout.setBackgroundResource(R.drawable.view_item_border_selected) + } else { + relativeLayout.setBackgroundResource(R.drawable.view_item_border) + } + } } } binding.recyclerView.adapter = videoGuideAdapter diff --git a/app/src/main/res/drawable/view_item_border_selected.xml b/app/src/main/res/drawable/view_item_border_selected.xml new file mode 100644 index 0000000..7d9bfb1 --- /dev/null +++ b/app/src/main/res/drawable/view_item_border_selected.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3c4ef7..c29a350 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:orientation="horizontal" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_manifest_l.xml b/app/src/main/res/layout/item_check_manifest_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_check_manifest_l.xml +++ b/app/src/main/res/layout/item_check_manifest_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/item_hidden_trouble_l.xml b/app/src/main/res/layout/item_hidden_trouble_l.xml index b56a4ac..632dd63 100644 --- a/app/src/main/res/layout/item_hidden_trouble_l.xml +++ b/app/src/main/res/layout/item_hidden_trouble_l.xml @@ -1,16 +1,17 @@ + android:layout_height="wrap_content" /> @@ -10,8 +12,7 @@ android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_margin="@dimen/dp_10" - android:src="@drawable/ic_library_video" /> + android:layout_margin="@dimen/dp_10" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_standard_file_g.xml b/app/src/main/res/layout/item_standard_file_g.xml index ba849ed..55a40d3 100644 --- a/app/src/main/res/layout/item_standard_file_g.xml +++ b/app/src/main/res/layout/item_standard_file_g.xml @@ -1,12 +1,15 @@