From 4d0ae413952839c9479adb795262aecd5a72580b Mon Sep 17 00:00:00 2001 From: llw <1317057860@qq.com> Date: Mon, 29 Aug 2022 15:20:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E5=BA=95=E9=83=A8=E8=A1=A8=E6=83=85=E5=88=97=E8=A1=A8=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=96=B9=E5=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 17 ++++ .idea/misc.xml | 7 +- app/src/main/AndroidManifest.xml | 8 -- app/src/main/java/com/llw/socket/SocketApp.kt | 2 - .../java/com/llw/socket/adapter/MsgAdapter.kt | 3 + .../java/com/llw/socket/ui/BaseActivity.kt | 4 +- .../java/com/llw/socket/ui/ClientActivity.kt | 64 ++++++++++-- .../com/llw/socket/ui/SelectTypeActivity.kt | 1 - .../java/com/llw/socket/ui/ServerActivity.kt | 57 ++++++++--- .../java/com/llw/socket/ui/TestActivity.kt | 56 ----------- app/src/main/res/drawable/ic_delete_emoji.xml | 9 ++ app/src/main/res/layout/activity_client.xml | 97 +++++++------------ app/src/main/res/layout/activity_server.xml | 13 ++- app/src/main/res/layout/activity_test.xml | 15 --- app/src/main/res/layout/bottom_sheet_edit.xml | 1 + app/src/main/res/values/colors.xml | 2 +- 16 files changed, 179 insertions(+), 177 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 app/src/main/java/com/llw/socket/ui/TestActivity.kt create mode 100644 app/src/main/res/drawable/ic_delete_emoji.xml delete mode 100644 app/src/main/res/layout/activity_test.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..586bdc7 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ef1662c..27e7f7f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,6 +5,7 @@ + @@ -12,10 +13,12 @@ - + + - + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ef454ce..a566a7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,15 +18,7 @@ android:supportsRtl="true" android:theme="@style/Theme.SocketDemo" tools:targetApi="31"> - - - - - - ) : RecyclerView.Adapter() { diff --git a/app/src/main/java/com/llw/socket/ui/BaseActivity.kt b/app/src/main/java/com/llw/socket/ui/BaseActivity.kt index 351601a..13bb7f5 100644 --- a/app/src/main/java/com/llw/socket/ui/BaseActivity.kt +++ b/app/src/main/java/com/llw/socket/ui/BaseActivity.kt @@ -3,6 +3,7 @@ package com.llw.socket.ui import android.content.Context import android.content.Intent import android.net.wifi.WifiManager +import android.os.Looper import android.view.LayoutInflater import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -29,7 +30,8 @@ open class BaseActivity: AppCompatActivity() { /** * 显示Toast */ - protected fun showMsg(msg: CharSequence?) = Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() + protected fun showMsg(msg: CharSequence?) = + Toast.makeText(this, msg, Toast.LENGTH_SHORT).show() /** * 跳转页面 diff --git a/app/src/main/java/com/llw/socket/ui/ClientActivity.kt b/app/src/main/java/com/llw/socket/ui/ClientActivity.kt index f3ba953..2003a20 100644 --- a/app/src/main/java/com/llw/socket/ui/ClientActivity.kt +++ b/app/src/main/java/com/llw/socket/ui/ClientActivity.kt @@ -1,11 +1,18 @@ package com.llw.socket.ui import android.os.Bundle +import android.os.Looper import android.util.Log import android.view.LayoutInflater +import android.widget.LinearLayout import androidx.appcompat.app.AlertDialog +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.bottomsheet.BottomSheetBehavior import com.llw.socket.R +import com.llw.socket.SocketApp +import com.llw.socket.adapter.EmojiAdapter import com.llw.socket.adapter.MsgAdapter import com.llw.socket.bean.Message import com.llw.socket.client.ClientCallback @@ -31,6 +38,11 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { //消息适配器 private lateinit var msgAdapter: MsgAdapter + //是否显示表情 + private var isShowEmoji = false + + private var bottomSheetBehavior: BottomSheetBehavior? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityClientBinding.inflate(layoutInflater) @@ -42,11 +54,8 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { private fun initView() { binding.toolbar.setNavigationOnClickListener { onBackPressed() } - //显示emoji - binding.ivEmoji.setOnClickListener { - //显示底部弹窗 - showEmojiDialog(this, this) - } + //初始化BottomSheet + initBottomSheet() //连接服务/断开连接 客户端处理 binding.tvConnectService.setOnClickListener { @@ -60,8 +69,8 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { binding.tvConnectService.text = if (connectSocket) "关闭连接" else "连接服务" } //发送消息给服务端 - binding.btnSendMsg.setOnClickListener { - val msg = binding.etMsg.text.toString().trim() + binding.layBottomSheetEdit.btnSendMsg.setOnClickListener { + val msg = binding.layBottomSheetEdit.etMsg.text.toString().trim() if (msg.isEmpty()) { showMsg("请输入要发送的信息");return@setOnClickListener } @@ -71,7 +80,7 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { showMsg("当前未开启服务或连接服务");return@setOnClickListener } SocketClient.sendToServer(msg) - binding.etMsg.setText("") + binding.layBottomSheetEdit.etMsg.setText("") updateList(2, msg) } //初始化列表 @@ -82,6 +91,39 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { } } + private fun initBottomSheet() { + //Emoji布局 + bottomSheetBehavior = + BottomSheetBehavior.from(binding.layBottomSheetEdit.bottomSheet).apply { + state = BottomSheetBehavior.STATE_HIDDEN + isHideable = false + isDraggable = false + } + binding.layBottomSheetEdit.rvEmoji.apply { + layoutManager = GridLayoutManager(context, 6) + adapter = EmojiAdapter(SocketApp.instance().emojiList).apply { + setOnItemClickListener(object : EmojiAdapter.OnClickListener { + override fun onItemClick(position: Int) { + val charSequence = SocketApp.instance().emojiList[position] + checkedEmoji(charSequence) + } + }) + } + } + //显示emoji + binding.layBottomSheetEdit.ivEmoji.setOnClickListener { + if (isShowEmoji) { + isShowEmoji = false + bottomSheetBehavior!!.state = BottomSheetBehavior.STATE_COLLAPSED + binding.layBottomSheetEdit.ivEmoji.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_emoji)) + } else { + isShowEmoji = true + bottomSheetBehavior!!.state = BottomSheetBehavior.STATE_EXPANDED + binding.layBottomSheetEdit.ivEmoji.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_emoji_checked)) + } + } + } + private fun showEditDialog() { val dialogBinding = DialogEditIpBinding.inflate(LayoutInflater.from(this@ClientActivity), null, false) @@ -109,7 +151,9 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { */ override fun receiveServerMsg(msg: String) = updateList(1, msg) - override fun otherMsg(msg: String) = showMsg(msg) + override fun otherMsg(msg: String) { + Log.d(TAG, "otherMsg: $msg") + } /** * 更新列表 @@ -125,7 +169,7 @@ class ClientActivity : BaseActivity(), ClientCallback, EmojiCallback { } override fun checkedEmoji(charSequence: CharSequence) { - binding.etMsg.apply { + binding.layBottomSheetEdit.etMsg.apply { setText(text.toString() + charSequence) setSelection(text.toString().length)//光标置于最后 } diff --git a/app/src/main/java/com/llw/socket/ui/SelectTypeActivity.kt b/app/src/main/java/com/llw/socket/ui/SelectTypeActivity.kt index fcfec5d..c3310d0 100644 --- a/app/src/main/java/com/llw/socket/ui/SelectTypeActivity.kt +++ b/app/src/main/java/com/llw/socket/ui/SelectTypeActivity.kt @@ -1,7 +1,6 @@ package com.llw.socket.ui import android.os.Bundle -import android.util.Log import android.widget.Button import com.llw.socket.R diff --git a/app/src/main/java/com/llw/socket/ui/ServerActivity.kt b/app/src/main/java/com/llw/socket/ui/ServerActivity.kt index 7946fd8..d548da7 100644 --- a/app/src/main/java/com/llw/socket/ui/ServerActivity.kt +++ b/app/src/main/java/com/llw/socket/ui/ServerActivity.kt @@ -1,8 +1,10 @@ package com.llw.socket.ui import android.os.Bundle +import android.os.Looper import android.util.Log import android.view.MenuItem +import android.view.View import android.widget.LinearLayout import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager @@ -38,7 +40,6 @@ class ServerActivity : BaseActivity(), ServerCallback, EmojiCallback { //是否显示表情 private var isShowEmoji = false - // private var bottomSheetBehavior: BottomSheetBehavior? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -56,18 +57,6 @@ class ServerActivity : BaseActivity(), ServerCallback, EmojiCallback { } //初始化BottomSheet initBottomSheet() - //显示emoji - binding.layBottomSheetEdit.ivEmoji.setOnClickListener { - if (isShowEmoji) { - isShowEmoji = false - bottomSheetBehavior!!.state = BottomSheetBehavior.STATE_COLLAPSED - binding.layBottomSheetEdit.ivEmoji.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_emoji)) - } else { - isShowEmoji = true - bottomSheetBehavior!!.state = BottomSheetBehavior.STATE_EXPANDED - binding.layBottomSheetEdit.ivEmoji.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_emoji_checked)) - } - } //开启服务/关闭服务 服务端处理 binding.tvStartService.setOnClickListener { @@ -111,6 +100,7 @@ class ServerActivity : BaseActivity(), ServerCallback, EmojiCallback { isHideable = false isDraggable = false } + //表情列表适配器 binding.layBottomSheetEdit.rvEmoji.apply { layoutManager = GridLayoutManager(context, 6) adapter = EmojiAdapter(SocketApp.instance().emojiList).apply { @@ -122,6 +112,43 @@ class ServerActivity : BaseActivity(), ServerCallback, EmojiCallback { }) } } + //显示emoji + binding.layBottomSheetEdit.ivEmoji.setOnClickListener { + bottomSheetBehavior!!.state = + if (isShowEmoji) BottomSheetBehavior.STATE_COLLAPSED else BottomSheetBehavior.STATE_EXPANDED + } + //BottomSheet显示隐藏的相关处理 + bottomSheetBehavior!!.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { + override fun onStateChanged(bottomSheet: View, newState: Int) { + when (newState) { + BottomSheetBehavior.STATE_EXPANDED -> {//显示 + isShowEmoji = true + binding.layBottomSheetEdit.ivEmoji.setImageDrawable( + ContextCompat.getDrawable( + this@ServerActivity, + R.drawable.ic_emoji_checked + ) + ) + } + BottomSheetBehavior.STATE_COLLAPSED -> {//隐藏 + isShowEmoji = false + binding.layBottomSheetEdit.ivEmoji.setImageDrawable( + ContextCompat.getDrawable( + this@ServerActivity, + R.drawable.ic_emoji + ) + ) + } + else -> isShowEmoji = false + } + Log.e(TAG, "onStateChanged: $newState") + } + + override fun onSlide(bottomSheet: View, slideOffset: Float) { + + } + + }) } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -136,7 +163,9 @@ class ServerActivity : BaseActivity(), ServerCallback, EmojiCallback { */ override fun receiveClientMsg(success: Boolean, msg: String) = updateList(2, msg) - override fun otherMsg(msg: String) = showMsg(msg) + override fun otherMsg(msg: String) { + Log.d(TAG, "otherMsg: $msg") + } /** * 更新列表 diff --git a/app/src/main/java/com/llw/socket/ui/TestActivity.kt b/app/src/main/java/com/llw/socket/ui/TestActivity.kt deleted file mode 100644 index d635872..0000000 --- a/app/src/main/java/com/llw/socket/ui/TestActivity.kt +++ /dev/null @@ -1,56 +0,0 @@ -package com.llw.socket.ui - -import android.os.Bundle -import android.view.View -import android.widget.LinearLayout -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback -import com.llw.socket.R - - -class TestActivity : AppCompatActivity() { - - private var isExpanded = false - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_test) - - // get the bottom sheet view - val llBottomSheet = findViewById(R.id.bottom_sheet) as LinearLayout - val tvTest = findViewById(R.id.tv_test) - - // init the bottom sheet behavior - val bottomSheetBehavior: BottomSheetBehavior<*> = BottomSheetBehavior.from(llBottomSheet) - - // change the state of the bottom sheet - bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED - bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED - bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN - - // set the peek height -// bottomSheetBehavior.peekHeight = 240 - - // set hideable or not - bottomSheetBehavior.isHideable = false - bottomSheetBehavior.isDraggable = false - - tvTest.setOnClickListener { - if (isExpanded) { - bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED - isExpanded = false - } else { - bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED - isExpanded = true - } - } - - // set callback for changes - bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetCallback() { - override fun onStateChanged(bottomSheet: View, newState: Int) {} - override fun onSlide(bottomSheet: View, slideOffset: Float) {} - }) - } -} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_delete_emoji.xml b/app/src/main/res/drawable/ic_delete_emoji.xml new file mode 100644 index 0000000..e4a9ac6 --- /dev/null +++ b/app/src/main/res/drawable/ic_delete_emoji.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_client.xml b/app/src/main/res/layout/activity_client.xml index d8e8823..8ea287b 100644 --- a/app/src/main/res/layout/activity_client.xml +++ b/app/src/main/res/layout/activity_client.xml @@ -1,71 +1,48 @@ - - - - - - - - - - - - - - + android:layout_height="match_parent" + android:layout_marginBottom="50dp" + android:orientation="vertical"> + + + + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_server.xml b/app/src/main/res/layout/activity_server.xml index 624ee72..0b295bd 100644 --- a/app/src/main/res/layout/activity_server.xml +++ b/app/src/main/res/layout/activity_server.xml @@ -2,16 +2,15 @@ @@ -39,11 +38,11 @@ + android:layout_height="match_parent" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml deleted file mode 100644 index e4e515c..0000000 --- a/app/src/main/res/layout/activity_test.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_edit.xml b/app/src/main/res/layout/bottom_sheet_edit.xml index e51605a..8963957 100644 --- a/app/src/main/res/layout/bottom_sheet_edit.xml +++ b/app/src/main/res/layout/bottom_sheet_edit.xml @@ -48,6 +48,7 @@ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d3e2fde..4b62c99 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,5 +7,5 @@ #FF018786 #FF000000 #FFFFFFFF - + #F8F8F8 \ No newline at end of file