feat:完成房间主题背景设置功能

This commit is contained in:
max
2024-05-22 14:04:47 +08:00
parent 494628918d
commit 9d96b25208
13 changed files with 263 additions and 5 deletions

View File

@@ -265,6 +265,9 @@
android:name=".avroom.activity.RoomSettingActivity"
android:label="@string/main_androidmanifest_07"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.activity.RoomBgSettingActivity"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.activity.RoomManagerListActivity"
android:label="@string/main_androidmanifest_08"

View File

@@ -0,0 +1,77 @@
package com.chwl.app.avroom.activity
import android.annotation.SuppressLint
import androidx.core.view.WindowCompat
import com.chwl.app.R
import com.chwl.app.avroom.adapter.RoomBgAdapter
import com.chwl.app.base.BaseViewBindingActivity
import com.chwl.app.databinding.RoomBgSettingActivityBinding
import com.chwl.core.auth.AuthModel
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.room.model.RoomSettingModel
import com.chwl.library.utils.ResUtil
import com.netease.nim.uikit.StatusBarUtil
class RoomBgSettingActivity : BaseViewBindingActivity<RoomBgSettingActivityBinding>() {
private val adapter = RoomBgAdapter()
private val model = RoomSettingModel()
override fun init() {
initWhiteTitleBar(ResUtil.getString(R.string.room_theme))
mTitleBar.setTitleColor(resources.getColor(R.color.white))
mTitleBar.setLeftImageResource(R.drawable.arrow_left_white)
binding.recyclerView.adapter = adapter
adapter.selectItem(AvRoomDataManager.get().mCurrentRoomInfo?.backPic)
adapter.setOnItemClickListener { _, view, position ->
adapter.getItem(position)?.let {
if (adapter.getSelectItem() != it) {
showUpdateRoomBackgroundTips(it)
}
}
}
val list = listOf(
"https://image.molistar.xyz/BG.webp",
"https ://image.molistar.xyz/BG2.webp",
"https ://image.molistar.xyz/BG3.webp",
"https ://image.molistar.xyz/BG4.webp",
"https ://image.molistar.xyz/BG5.webp",
"https ://image.molistar.xyz/BG6.webp"
)
adapter.setNewData(list)
}
private fun showUpdateRoomBackgroundTips(url: String) {
dialogManager.showOkCancelDialog(
getString(R.string.room_theme_changed_tips),
getString(R.string.btn_text_confirm_select_team_member)
) {
updateRoomBackground(url)
}
}
@SuppressLint("CheckResult")
private fun updateRoomBackground(url: String) {
dialogManager.showProgressDialog(this)
model.updateRoomBackground(AuthModel.get().currentUid, url)
.compose(bindToLifecycle()).subscribe({
dialogManager.dismissDialog()
toast(R.string.avroom_dialog_roomimposedialog_04)
adapter.selectItem(url)
}, {
dialogManager.dismissDialog()
toast(it.message)
})
}
override fun needSteepStateBar(): Boolean {
return true
}
override fun setStatusBar() {
StatusBarUtil.transparencyBar(this)
StatusBarUtil.StatusBarLightMode(this)
WindowCompat.getInsetsController(window, window.decorView).let {
it.isAppearanceLightStatusBars = false
}
}
}

View File

@@ -156,6 +156,7 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
managerLayout.setOnClickListener(this);
blackLayout.setOnClickListener(this);
mRoomBgLayout.setOnClickListener(this);
binding.layoutTheme.setOnClickListener(this);
binding.switchAudio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
@@ -324,6 +325,9 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.layout_theme:
startActivity(new Intent(context, RoomBgSettingActivity.class));
break;
case R.id.manager_layout:
RoomManagerListActivity.start(this);
break;

View File

@@ -0,0 +1,45 @@
package com.chwl.app.avroom.adapter
import android.graphics.drawable.Drawable
import android.view.View
import android.widget.ImageView
import androidx.core.view.isVisible
import com.bumptech.glide.Glide
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.target.Target
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.ui.utils.load
class RoomBgAdapter : BaseQuickAdapter<String, BaseViewHolder>(R.layout.room_bg_setting_item) {
private var selectItem: String? = null
override fun convertPayloads(
helper: BaseViewHolder,
item: String?,
payloads: MutableList<Any>
) {
super.convertPayloads(helper, item, payloads)
convertStatus(helper, item)
}
override fun convert(helper: BaseViewHolder, item: String?) {
val imageView = helper.getView<ImageView>(R.id.iv_image)
imageView.load(item)
convertStatus(helper, item)
}
private fun convertStatus(helper: BaseViewHolder, item: String?) {
val statusView = helper.getView<View>(R.id.tv_status)
statusView.isVisible = item == selectItem
}
fun getSelectItem() = selectItem
fun selectItem(url: String?) {
selectItem = url
notifyItemRangeChanged(0, itemCount, true)
}
}

View File

@@ -293,7 +293,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
public void setRoomBg(RoomInfo roomInfo) {
if (svgaRoomBg == null) return;
updateView(roomInfo);
AVRoomActivity.setBackBg(mContext, roomInfo, svgaRoomBg, bgPicture);
}
@@ -316,7 +315,6 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
addTipMsg();
case RoomEvent.ROOM_INFO_UPDATE:
updateView(AvRoomDataManager.get().mCurrentRoomInfo);
setRoomBg(AvRoomDataManager.get().mCurrentRoomInfo);
break;
case RoomEvent.RECEIVE_NORMALE_GIFT:
onReceiveGiftMsg(roomEvent.getGiftReceiveInfo());
@@ -449,7 +447,7 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
.replace(R.id.container, roomFragment)
.commitAllowingStateLoss();
}
setRoomBg(currentRoomInfo);
gameMainBinding.setRoomInfo(currentRoomInfo);
updateHasAnimationEffect();
roomTitle.setText(RegexUtil.getPrintableString(currentRoomInfo.getTitle()));

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp" />
<solid android:color="#B2AFFF" />
</shape>

View File

@@ -225,6 +225,44 @@
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:background="@color/line_353548" />
<RelativeLayout
android:id="@+id/layout_theme"
android:layout_width="match_parent"
android:layout_height="44dp"
android:onClick="@{click}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_15"
android:text="@string/room_theme"
android:textColor="@color/text_title_color"
android:textSize="@dimen/sp_15" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/dp_16"
android:drawableEnd="@drawable/arrow_right"
android:drawablePadding="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxWidth="250dp"
android:maxLines="1"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
<View
android:layout_width="match_parent"

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#181526"
android:orientation="vertical">
<com.chwl.app.base.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/dp_5"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2"
tools:listitem="@layout/room_bg_setting_item" />
</LinearLayout>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginHorizontal="@dimen/dp_7"
android:layout_marginVertical="@dimen/dp_8"
android:scaleType="centerCrop"
android:src="@drawable/default_cover"
app:layout_constraintDimensionRatio="166:206"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_b2afff_5dp"
android:paddingHorizontal="@dimen/dp_6"
android:paddingVertical="@dimen/dp_3"
android:text="@string/layout_item_live_tag_01"
android:textColor="@color/white"
android:textSize="@dimen/dp_13"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/iv_image"
app:layout_constraintTop_toTopOf="@id/iv_image"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1550,7 +1550,7 @@
<string name="avroom_presenter_roomnewbiepresenter_02">بالفعل في الأسفل</string>
<string name="avroom_presenter_roomsettingpresenter_01">فتح وضع الخروج</string>
<string name="avroom_recommendcard_myrecommendcardactivity_01">غير مستخدم</string>
<string name="avroom_recommendcard_myrecommendcardactivity_02">في الاستخدام</string>
<string name="avroom_recommendcard_myrecommendcardactivity_02">قيد الاستخدام</string>
<string name="avroom_recommendcard_myrecommendcardactivity_03">مستخدم</string>
<string name="avroom_recommendcard_myrecommendcardactivity_04">منتهية الصلاحية</string>
<string name="avroom_recommendcard_recommendcardlistadapter_01">وقت الاستخدام 2019/01/13 20:00-21:00</string>
@@ -3475,7 +3475,7 @@
<string name="layout_item_ktv_type_room_02">أقوى حفلة سطح أقوى حفلة سطح أقوى حفلة سطح أقوى حفلة سطح أقوى حفلة سطح</string>
<string name="layout_item_ktv_type_room_03">100 على الانترنت</string>
<string name="layout_item_lately_give_01">رسالة حب</string>
<string name="layout_item_live_tag_01">في الاستخدام</string>
<string name="layout_item_live_tag_01">قيد الاستخدام</string>
<string name="layout_item_lucky_money_member_list_01">يجب أن يكون طول الاسم داخل عشرة أحرف</string>
<string name="layout_item_lucky_money_member_list_02">100 فول الذهب</string>
<string name="layout_item_lucky_money_member_list_03">فول الذهب</string>
@@ -5279,4 +5279,7 @@
<string name="fans_team_9">نجح في ترك نادي المعجبين</string>
<string name="gift_value">قيمة الهدايا</string>
<string name="room_theme">خلفية الغرفة</string>
<string name="room_theme_changed_tips">هل أنت متأكد أنك تريد اختيار هذه الصورة لتكون خلفية لغرفتك؟</string>
</resources>

View File

@@ -5223,4 +5223,6 @@
<string name="fans_team_9">退出粉絲團成功!</string>
<string name="gift_value">禮物值</string>
<string name="room_theme">房間主題</string>
<string name="room_theme_changed_tips">確認選擇這張圖片作為房間主題嗎?</string>
</resources>

View File

@@ -5261,6 +5261,9 @@ You cannot join again within 24 hours after leaving</string>
<string name="fans_team_9">Successfully exited the fan club!</string>
<string name="gift_value">Gift Value</string>
<string name="room_theme">Room Background</string>
<string name="room_theme_changed_tips">Are you sure you want to select this image as the room background?</string>
</resources>