聊天历史选择器
This commit is contained in:
		
							parent
							
								
									ad06ee3411
								
							
						
					
					
						commit
						cfee7191c8
					
				|  | @ -6,6 +6,7 @@ import kotlinx.parcelize.Parcelize | |||
| @Parcelize | ||||
| data class ChatHistory( | ||||
|     var id: Int? = 0, | ||||
|     var imgUrl: String?, | ||||
|     var time: Long, | ||||
|     var describle: String | ||||
| ) : Parcelable { | ||||
|  |  | |||
|  | @ -11,9 +11,11 @@ import com.remax.visualnovel.R | |||
| import com.remax.visualnovel.databinding.LayoutChatMenuViewBinding | ||||
| import com.remax.visualnovel.entity.response.ChatBackground | ||||
| import com.remax.visualnovel.entity.response.ChatBubble | ||||
| import com.remax.visualnovel.entity.response.ChatHistory | ||||
| import com.remax.visualnovel.entity.response.ChatMode | ||||
| import com.remax.visualnovel.entity.response.ChatSound | ||||
| import com.remax.visualnovel.ui.chat.ui.expandableSelector.SelectorItem | ||||
| import java.util.Date | ||||
| 
 | ||||
| class ChatSettingView @JvmOverloads constructor( | ||||
|     context: Context, | ||||
|  | @ -34,6 +36,7 @@ class ChatSettingView @JvmOverloads constructor( | |||
|         initSoundSelectorView() | ||||
|         initBubbleSelectView() | ||||
|         initBackgroundSelectView() | ||||
|         initHistoryListView() | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -221,4 +224,38 @@ class ChatSettingView @JvmOverloads constructor( | |||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     fun initHistoryListView() { | ||||
|         val items = listOf( | ||||
|             ChatHistory( | ||||
|                 imgUrl = "", | ||||
|                 time = Date().time - 3600*100*1, | ||||
|                 describle = "上次聊天记录 11111", | ||||
|             ), | ||||
|             ChatHistory( | ||||
|                 imgUrl = "", | ||||
|                 time = Date().time - 3600*100*2, | ||||
|                 describle = "上次聊天记录 2222", | ||||
|             ), | ||||
|             ChatHistory( | ||||
|                 imgUrl = "", | ||||
|                 time = Date().time - 3600*100*3, | ||||
|                 describle = "上次聊天记录 333", | ||||
|             ), | ||||
|             ChatHistory( | ||||
|                 imgUrl = "", | ||||
|                 time = Date().time - 3600*100*4, | ||||
|                 describle = "上次聊天记录 444", | ||||
|             ),ChatHistory( | ||||
|                 imgUrl = "", | ||||
|                 time = Date().time - 3600*100*5, | ||||
|                 describle = "上次聊天记录 5555", | ||||
|             ) | ||||
| 
 | ||||
|         ) | ||||
| 
 | ||||
|         mBinding.historySelectView.setItems(items) | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,77 @@ | |||
| package com.remax.visualnovel.ui.chat.ui.expandableSelector | ||||
| 
 | ||||
| import android.content.Context | ||||
| import android.util.AttributeSet | ||||
| import android.view.LayoutInflater | ||||
| import android.widget.LinearLayout | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import com.drake.brv.annotaion.DividerOrientation | ||||
| import com.drake.brv.utils.bindingAdapter | ||||
| import com.drake.brv.utils.divider | ||||
| import com.drake.brv.utils.grid | ||||
| import com.drake.brv.utils.linear | ||||
| import com.drake.brv.utils.models | ||||
| import com.drake.brv.utils.setup | ||||
| import com.remax.visualnovel.R | ||||
| import com.remax.visualnovel.databinding.LayoutItemSettingHistoryBinding | ||||
| import com.remax.visualnovel.databinding.LayoutSettingBgSubViewBinding | ||||
| import com.remax.visualnovel.entity.response.ChatHistory | ||||
| import com.remax.visualnovel.extension.glide.load | ||||
| import java.text.SimpleDateFormat | ||||
| 
 | ||||
| 
 | ||||
| class ExpandHistorySubView @JvmOverloads constructor( | ||||
|     context: Context, | ||||
|     attrs: AttributeSet? = null, | ||||
|     defStyleAttr: Int = 0 | ||||
| ) : LinearLayout(context, attrs, defStyleAttr) { | ||||
|     private lateinit var items: List<ChatHistory> | ||||
|     private var mBinding: LayoutSettingBgSubViewBinding | ||||
| 
 | ||||
| 
 | ||||
|     init { | ||||
|         mBinding = LayoutSettingBgSubViewBinding.inflate(LayoutInflater.from(context), this, true) | ||||
|         with(mBinding) { | ||||
|             initRv(itemsRv) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun initRv(itemsRv: RecyclerView) { | ||||
|         itemsRv.linear() | ||||
|             .divider { | ||||
|                 setDivider(10, true) | ||||
|                 orientation = DividerOrientation.VERTICAL | ||||
|             }.setup { | ||||
|                 addType<ChatHistory>(R.layout.layout_item_setting_history) | ||||
| 
 | ||||
|                 onClick(R.id.root) { | ||||
|                     itemsRv.bindingAdapter.models?.filterIsInstance<ChatHistory>()?.forEach { item -> | ||||
|                         openChatHistory(item) | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 onBind { | ||||
|                     val item = getModel<ChatHistory>() | ||||
|                     with(getBinding<LayoutItemSettingHistoryBinding>()) { | ||||
|                         if (!item.imgUrl.isNullOrEmpty()) { | ||||
|                             ivActorAvatar.load(item.imgUrl) | ||||
|                         } | ||||
| 
 | ||||
|                         tvChatTime.text = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.time) | ||||
|                         tvChatDes.text = item.describle | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|     } | ||||
| 
 | ||||
|     fun setItems(newItems: List<ChatHistory>) { | ||||
|         items = newItems | ||||
|         mBinding.itemsRv.models = items | ||||
|     } | ||||
| 
 | ||||
|     fun openChatHistory(history: ChatHistory) { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  | @ -275,6 +275,11 @@ | |||
|             android:layout_height="wrap_content" | ||||
|             android:orientation="vertical" | ||||
|             android:layout_marginTop="10dp" > | ||||
|             <com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandHistorySubView | ||||
|                 android:id="@+id/history_select_view" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 /> | ||||
| 
 | ||||
|         </com.remax.visualnovel.widget.uitoken.view.UITokenLinearLayout> | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,56 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <com.remax.visualnovel.widget.uitoken.view.UITokenRelativeLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="wrap_content" | ||||
|     android:orientation="vertical" | ||||
|     app:backgroundColorToken="@string/color_chat_setting_item_bg" | ||||
|     app:radiusToken="@string/radius_l" | ||||
|     android:padding="@dimen/dp_12" > | ||||
| 
 | ||||
| 
 | ||||
|     <com.remax.visualnovel.widget.uitoken.view.UITokenImageView | ||||
|         android:id="@+id/iv_actor_avatar" | ||||
|         android:layout_width="@dimen/dp_25" | ||||
|         android:layout_height="@dimen/dp_25" | ||||
|         android:layout_centerVertical="true" /> | ||||
| 
 | ||||
|     <com.remax.visualnovel.widget.uitoken.view.UITokenImageView | ||||
|         android:id="@+id/arrow" | ||||
|         android:layout_width="16dp" | ||||
|         android:layout_height="16dp" | ||||
|         android:layout_alignParentEnd="true" | ||||
|         android:layout_centerVertical="true" | ||||
|         android:src="@mipmap/setting_arrow_right"/> | ||||
| 
 | ||||
| 
 | ||||
|     <com.remax.visualnovel.widget.uitoken.view.UITokenLinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:orientation="vertical" | ||||
|         android:layout_centerVertical="true" | ||||
|         android:layout_marginHorizontal="@dimen/dp_8" | ||||
|         android:layout_toStartOf="@+id/arrow" | ||||
|         android:layout_toEndOf="@+id/iv_actor_avatar" | ||||
|         > | ||||
|         <com.remax.visualnovel.widget.uitoken.view.UITokenTextView | ||||
|             android:id="@+id/tv_chat_time" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textSize="@dimen/sp_12" | ||||
|             android:textColor="@color/gray9" | ||||
|             android:textStyle="normal"/> | ||||
| 
 | ||||
|         <com.remax.visualnovel.widget.uitoken.view.UITokenTextView | ||||
|             android:id="@+id/tv_chat_des" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginTop="@dimen/dp_6" | ||||
|             android:textSize="@dimen/sp_14" | ||||
|             android:textColor="@color/gray6" | ||||
|             android:textStyle="normal"/> | ||||
| 
 | ||||
|     </com.remax.visualnovel.widget.uitoken.view.UITokenLinearLayout> | ||||
| 
 | ||||
| </com.remax.visualnovel.widget.uitoken.view.UITokenRelativeLayout> | ||||
|  | @ -190,6 +190,7 @@ | |||
|     <color name="chat_send_bg">#ff565563</color> | ||||
|     <color name="gray3">#ff333333</color> | ||||
|     <color name="gray6">#ff666666</color> | ||||
|     <color name="gray9">#ff999999</color> | ||||
|     <color name="grayf6">#fff6f6f6</color> | ||||
| 
 | ||||
|     <!--  chat settings  --> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue