优化
This commit is contained in:
@@ -5,6 +5,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.shuwei.intelligent.shelves.adapter.LogAdapter
|
||||
import com.shuwei.intelligent.shelves.base.BaseActivity
|
||||
import com.shuwei.intelligent.shelves.databinding.ActivityLogListBinding
|
||||
import com.shuwei.intelligent.shelves.dialog.CommonDialog
|
||||
import com.shuwei.intelligent.shelves.utils.ext.copyTextToClipboard
|
||||
import com.shuwei.intelligent.shelves.utils.ext.startActivity
|
||||
|
||||
class LogActivity : BaseActivity() {
|
||||
@@ -22,6 +24,7 @@ class LogActivity : BaseActivity() {
|
||||
LogAdapter(logList).apply {
|
||||
setOnItemClickListener { _, _, position ->
|
||||
if (isLogDir.not()) {
|
||||
showConfirmDialog(logList[position])
|
||||
return@setOnItemClickListener
|
||||
}
|
||||
startActivity<LogActivity> {
|
||||
@@ -32,6 +35,16 @@ class LogActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun showConfirmDialog(content:String) {
|
||||
CommonDialog(this).apply {
|
||||
dialogTitle = "温馨提示"
|
||||
dialogContent = content
|
||||
confirmBlock = {
|
||||
content?.copyTextToClipboard(this@LogActivity)
|
||||
}
|
||||
}.show()
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityLogListBinding.inflate(layoutInflater)
|
||||
@@ -41,6 +54,10 @@ class LogActivity : BaseActivity() {
|
||||
logDate = intent.getStringExtra(LOG_DATE) ?: ""
|
||||
binding.ivBack.setOnClickListener { finish() }
|
||||
binding.tvTitle.text = if (isLogDir) "全部日志" else logDate
|
||||
binding.tvTitle.setOnClickListener {
|
||||
logList.reverse()
|
||||
logAdapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
if (isLogDir) {
|
||||
logList.addAll(fileLogger.getLogFiles())
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.shuwei.intelligent.shelves.base
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import com.shuwei.intelligent.shelves.R
|
||||
import com.shuwei.intelligent.shelves.utils.ext.dp
|
||||
import com.shuwei.intelligent.shelves.utils.ext.hideKeyboard
|
||||
|
||||
abstract class BaseDialog(
|
||||
context: Context,
|
||||
var defWidth: Int = 400.dp,
|
||||
var defHeight: Int = 300.dp
|
||||
) : Dialog(context, R.style.DialogTheme) {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
val rootView = getRootView()
|
||||
setContentView(rootView)
|
||||
setCancelable(false)
|
||||
setCanceledOnTouchOutside(false)
|
||||
window?.apply {
|
||||
setLayout(defWidth, defHeight)
|
||||
setBackgroundDrawable(ColorDrawable())
|
||||
setGravity(Gravity.CENTER)
|
||||
}
|
||||
rootView.setOnClickListener { it.hideKeyboard() }
|
||||
initView()
|
||||
}
|
||||
|
||||
abstract fun getRootView(): View
|
||||
|
||||
abstract fun initView()
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.shuwei.intelligent.shelves.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import com.shuwei.intelligent.shelves.base.BaseDialog
|
||||
import com.shuwei.intelligent.shelves.databinding.DialogLayoutBinding
|
||||
|
||||
class CommonDialog(context: Context):BaseDialog(context) {
|
||||
|
||||
private lateinit var binding:DialogLayoutBinding
|
||||
|
||||
override fun getRootView(): View {
|
||||
binding = DialogLayoutBinding.inflate(LayoutInflater.from(context))
|
||||
return binding.root
|
||||
}
|
||||
|
||||
var dialogTitle:String?=null
|
||||
var dialogContent:String?=null
|
||||
var confirmBlock:(()->Unit)?=null
|
||||
override fun initView() {
|
||||
binding.btnConfirm.setOnClickListener {
|
||||
confirmBlock?.invoke()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
override fun show() {
|
||||
super.show()
|
||||
binding.tvDialogTitle.text = dialogTitle
|
||||
binding.tvDialogContent.text = dialogContent
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import android.os.Bundle
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.ActivityOptionsCompat
|
||||
@@ -22,6 +23,8 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
|
||||
fun Context.toast(
|
||||
message: String?,
|
||||
@@ -151,3 +154,24 @@ fun View.clickWithDebounce(delay: Long = 500, action: () -> Unit) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun View.hideKeyboard() {
|
||||
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
imm.hideSoftInputFromWindow(this.windowToken, 0)
|
||||
this.clearFocus() // 清除焦点避免键盘再次弹出
|
||||
}
|
||||
|
||||
fun String.copyTextToClipboard(context: Context) {
|
||||
// 获取系统服务中的ClipboardManager
|
||||
val clipboard: ClipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
|
||||
// 创建一个ClipData对象,包含要复制的文本
|
||||
val clip = ClipData.newPlainText("label", this)
|
||||
|
||||
// 将ClipData对象设置到剪贴板
|
||||
clipboard.setPrimaryClip(clip)
|
||||
|
||||
// 显示一个简单的Toast提示用户文本已复制
|
||||
Toast.makeText(context, "文本已复制到剪贴板", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user