首页UI修改

This commit is contained in:
huangjian
2023-03-17 15:50:50 +08:00
parent 3642ae2748
commit deac16a90a
16 changed files with 185 additions and 60 deletions

View File

@@ -526,7 +526,7 @@ class RoomEffectView @JvmOverloads constructor(
1.0f,
0.0f,
false
), "msm_copywriting"
), "tgs_copywriting"
)
val drawable = SVGADrawable(videoItem, dynamicEntity)
svgaImageView.setImageDrawable(drawable)

View File

@@ -314,13 +314,13 @@ class HomeViewModel : BaseViewModel() {
)
}
fun getNewFriendList() {
fun getNewFriendList(gender: Int? = null) {
safeLaunch(
onError = {
_newFriendLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getNewFriendList()
val result = HomeModel.getNewFriendList(gender)
_newFriendLiveData.value = ListResult.success(result, 1)
}
)

View File

@@ -8,6 +8,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.utils.loadAvatar
import com.nnbc123.app.ui.utils.loadFromAssets
import com.nnbc123.app.vip.VipHelper
@@ -31,11 +32,11 @@ class RoomNewFriendsAdapter :
helper.setBackgroundRes(
R.id.ll_gender_age,
if (item.gender == 1) R.drawable.shape_ff9cce_corner else R.drawable.shape_65d3f7_corner
if (item.gender == 1) R.drawable.shape_65d3f7_corner else R.drawable.shape_ff9cce_corner
)
helper.setBackgroundRes(
helper.setImageResource(
R.id.iv_gender,
if (item.gender == 1) R.drawable.ic_home_woman else R.drawable.ic_home_man
if (item.gender == 1) R.drawable.ic_home_man else R.drawable.ic_home_woman
)
val tvOnlineText = helper.getView<TextView>(R.id.tv_online_text)
val svgaLiving = helper.getView<SVGAImageView>(R.id.svga_living)
@@ -44,8 +45,6 @@ class RoomNewFriendsAdapter :
if (item.inRoomUid != 0L) {
viewOnline.isVisible = true
svgaLiving.isVisible = true
tvOnlineText.isVisible = true
tvOnlineText.text = "直播中"
svgaLiving.loadFromAssets("svga/home_living.svga")
llOnline.setOnClickListener {
@@ -53,12 +52,10 @@ class RoomNewFriendsAdapter :
}
} else {
viewOnline.isVisible = false
svgaLiving.isVisible = false
tvOnlineText.isVisible = false
svgaLiving.setImageResource(R.drawable.ic_new_friends_msg)
tvOnlineText.text = "和TA聊"
llOnline.setOnClickListener {
NimP2PMessageActivity.start(mContext, item.uid.toString())
}
}

View File

@@ -2,6 +2,7 @@ package com.nnbc123.app.home.fragment
import android.graphics.Color
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.LinearLayout
import android.widget.TextView
@@ -24,8 +25,10 @@ import com.nnbc123.app.home.adapter.HomeSingleAnchorAdapter
import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.app.ui.widget.NewFriendsFilterWindow
import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.nnbc123.core.auth.AuthModel
@@ -163,7 +166,7 @@ class RecommendFragment : BaseFragment(),
dialogManager.dismissDialog()
it?.let {
if (it.isNotEmpty()) {
AVRoomActivity.start(context, it.toLong())
NimP2PMessageActivity.start(context, it)
}
}
}
@@ -186,6 +189,31 @@ class RecommendFragment : BaseFragment(),
mBinding.tvNewRefresh.setOnClickListener {
homeViewModel.getNewFriendList()
}
mBinding.tvNewFilter.setOnClickListener {
val popup = NewFriendsFilterWindow(
mContext,
mBinding.tvNewFilter.text.toString()
)
popup.setOnClickListener {
popup.dismiss()
when (it.id) {
R.id.tv_all -> {
homeViewModel.getNewFriendList()
mBinding.tvNewFilter.text = "全部"
}
R.id.tv_man -> {
homeViewModel.getNewFriendList(1)
mBinding.tvNewFilter.text = "男生"
}
R.id.tv_woman -> {
homeViewModel.getNewFriendList(2)
mBinding.tvNewFilter.text = "女生"
}
}
}
popup.show(mBinding.tvNewFilter, Gravity.BOTTOM)
}
}
private fun initRefreshView() {

View File

@@ -7,15 +7,9 @@ import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomHotBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.RoomHotAdapter
import com.nnbc123.app.home.adapter.RoomNewFriendsAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.user.bean.UserInfo
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomNewFriendsFragment : BaseViewBindingFragment<FragmentRoomHotBinding>() {
@@ -60,18 +54,4 @@ class RoomNewFriendsFragment : BaseViewBindingFragment<FragmentRoomHotBinding>()
homeViewModel.getNewFriendList()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -0,0 +1,63 @@
package com.nnbc123.app.ui.widget;
import android.content.Context;
import android.graphics.Color;
import android.util.Pair;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.nnbc123.app.R;
import java.util.LinkedList;
import java.util.List;
import razerdp.basepopup.BasePopupWindow;
public class NewFriendsFilterWindow extends BasePopupWindow {
private final Context context;
private View.OnClickListener listener;
private TextView tvAll;
private TextView tvMan;
private TextView tvWoman;
public NewFriendsFilterWindow(Context context,String selectText) {
super(context);
this.context = context;
setContentView(createPopupById(R.layout.new_friends_filter_window));
setOutSideDismiss(true);
setBackgroundColor(Color.TRANSPARENT);
hideKeyboardOnShow(false);
setPopupAnimationStyle(-1);
tvAll = findViewById(R.id.tv_all);
tvMan = findViewById(R.id.tv_man);
tvWoman = findViewById(R.id.tv_woman);
switch (selectText) {
case "全部":
tvAll.setBackgroundResource(R.drawable.shape_fef411_4dp_round);
break;
case "男生":
tvMan.setBackgroundResource(R.drawable.shape_fef411_4dp_round);
break;
case "女生":
tvWoman.setBackgroundResource(R.drawable.shape_fef411_4dp_round);
break;
}
}
public void setOnClickListener(View.OnClickListener listener) {
this.listener = listener;
tvAll.setOnClickListener(listener);
tvMan.setOnClickListener(listener);
tvWoman.setOnClickListener(listener);
}
public void show(View anchor, int popupGravity) {
setPopupGravity(popupGravity);
showPopupWindow(anchor);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

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

View File

@@ -245,9 +245,10 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/dp_10"
android:text="如有任何问题请咨询客服ID88001"
android:text="如有任何问题请咨询客服"
android:textColor="@color/text_secondary_878b9c"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -154,10 +154,12 @@
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="如果您的手机号已丢失\n请咨询客服ID88001"
android:text="如果您的手机号已丢失请咨询客服"
android:textColor="@color/text_secondary_878b9c"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</layout>

View File

@@ -76,7 +76,9 @@
android:id="@+id/ll_resource"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="15dp"
android:orientation="horizontal">
<ImageView
@@ -85,23 +87,20 @@
android:layout_height="0dp"
android:src="@drawable/ic_resource_0"
app:layout_constraintDimensionRatio="94:120"
app:layout_constraintEnd_toStartOf="@id/iv_resource_1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.25" />
app:layout_constraintWidth_percent="0.274" />
<ImageView
android:id="@+id/iv_resource_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:src="@drawable/ic_resource_1"
app:layout_constraintDimensionRatio="120:56"
app:layout_constraintEnd_toStartOf="@id/iv_resource_2"
app:layout_constraintStart_toEndOf="@id/iv_resource_0"
app:layout_constraintTop_toTopOf="@id/iv_resource_0"
app:layout_constraintWidth_percent="0.32" />
app:layout_constraintWidth_percent="0.355" />
<ImageView
android:id="@+id/iv_resource_2"
@@ -111,9 +110,8 @@
android:src="@drawable/ic_resource_2"
app:layout_constraintDimensionRatio="120:56"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_resource_1"
app:layout_constraintTop_toTopOf="@id/iv_resource_0"
app:layout_constraintWidth_percent="0.32" />
app:layout_constraintWidth_percent="0.355" />
<ImageView
android:id="@+id/iv_resource_3"
@@ -122,8 +120,8 @@
android:src="@drawable/ic_resource_3"
app:layout_constraintBottom_toBottomOf="@id/iv_resource_0"
app:layout_constraintDimensionRatio="243:56"
app:layout_constraintStart_toStartOf="@id/iv_resource_1"
app:layout_constraintWidth_percent="0.65" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_percent="0.705" />
<LinearLayout
android:layout_width="wrap_content"
@@ -271,7 +269,7 @@
android:layout_width="65dp"
android:layout_height="23dp"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="15dp"
android:layout_marginEnd="74dp"
android:background="@drawable/shape_white_round_23dp"
android:drawableEnd="@drawable/ic_home_refresh_new"
android:drawablePadding="3dp"
@@ -286,12 +284,11 @@
android:layout_height="23dp"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="15dp"
android:visibility="gone"
android:background="@drawable/shape_white_round_23dp"
android:drawableEnd="@drawable/ic_home_arrow_new"
android:drawablePadding="3dp"
android:gravity="center_vertical"
android:text="所有"
android:text="全部"
android:textColor="#ff878b9c"
android:textSize="11sp" />

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="102dp"
android:layout_height="136dp"
android:background="@drawable/bg_custom_popup_window"
android:orientation="vertical">
<TextView
android:id="@+id/tv_all"
android:layout_width="50dp"
android:layout_height="26dp"
android:gravity="center"
android:text="全部"
android:layout_marginStart="31dp"
android:layout_marginTop="24dp"
android:textColor="@color/text_normal_282828"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_man"
android:layout_width="50dp"
android:layout_height="26dp"
android:gravity="center"
android:text="男生"
android:layout_marginStart="31dp"
android:textColor="@color/text_normal_282828"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_woman"
android:layout_width="50dp"
android:layout_height="26dp"
android:gravity="center"
android:text="女生"
android:layout_marginStart="31dp"
android:textColor="@color/text_normal_282828"
android:textSize="12sp" />
</LinearLayout>

View File

@@ -228,19 +228,19 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
return;
}
boolean sendMessage = (sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() < sendMessageSwitchLevel) || DemoCache.readNeedBoxMsg();
mBinding.ivOpen.setEnabled(false);
//mBinding.ivOpen.setEnabled(false);
long startTime = System.currentTimeMillis();
BoxModel.get().openBox(boxType, count, sendMessage)
.compose(bindToLifecycle())
.doOnError(throwable -> {
mBinding.ivOpen.setEnabled(true);
// mBinding.ivOpen.setEnabled(true);
SingleToastUtil.showToast(throwable.getMessage());
})
.toObservable()
.delay(startTime - System.currentTimeMillis() + 300, TimeUnit.MILLISECONDS)
//.delay(startTime - System.currentTimeMillis() + 300, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(openBoxResult ->{
mBinding.ivOpen.setEnabled(true);
//mBinding.ivOpen.setEnabled(true);
changeKeyNum(openBoxResult.getRemainKeyNum());
mBinding.svgaGiftBg.startAnimation();
})

View File

@@ -209,9 +209,9 @@ object HomeModel : BaseModel() {
api.getServiceGiftRecord()
}
suspend fun getNewFriendList(): List<UserInfo>? =
suspend fun getNewFriendList(gender: Int?): List<UserInfo>? =
launchRequest {
api.getNewFriendList()
api.getNewFriendList(gender)
}
private interface Api {
@@ -288,7 +288,6 @@ object HomeModel : BaseModel() {
suspend fun getPlayRoom(): ServiceResult<List<HomeRoomInfo>>
/**
* 首页资源位
*
@@ -464,7 +463,7 @@ object HomeModel : BaseModel() {
* @return
*/
@GET("/home/newFriend")
suspend fun getNewFriendList(): ServiceResult<List<UserInfo>>
suspend fun getNewFriendList(@Query("gender") gender: Int?): ServiceResult<List<UserInfo>>
}
}

View File

@@ -16,6 +16,7 @@ import com.bumptech.glide.request.FutureTarget;
import com.bumptech.glide.request.target.Target;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.nnbc123.core.DemoCache;
import com.nnbc123.core.auth.event.LogoutEvent;
import com.nnbc123.core.base.BaseModel;
import com.nnbc123.core.bean.response.ServiceResult;
import com.nnbc123.core.certification.CertificationModel;
@@ -53,6 +54,7 @@ import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.SingleSource;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
@@ -107,6 +109,7 @@ public class InitialModel extends BaseModel implements IInitialModel {
@Nullable
private InitInfo cacheInitInfo;
private Disposable heartbeatDisposable;
private InitialModel() {
api = RxNet.create(Api.class);
@@ -201,11 +204,11 @@ public class InitialModel extends BaseModel implements IInitialModel {
api.init()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).doFinally(new Action() {
@Override
public void run() {
requesting = false;
}
})
@Override
public void run() {
requesting = false;
}
})
.flatMap((Function<ServiceResult<InitInfo>, SingleSource<InitInfo>>) initInfoServiceResult -> {
if (initInfoServiceResult.isSuccess() && initInfoServiceResult.getData() != null) {
CurrentTimeUtils.initTime(initInfoServiceResult.getTimestamp());
@@ -435,9 +438,15 @@ public class InitialModel extends BaseModel implements IInitialModel {
startApp();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLogoutEvent(LogoutEvent event) {
if (heartbeatDisposable != null) heartbeatDisposable.dispose();
}
@Override
public void heartbeat() {
Observable.timer(30, TimeUnit.SECONDS)
if (heartbeatDisposable != null) heartbeatDisposable.dispose();
heartbeatDisposable = Observable.timer(30, TimeUnit.SECONDS)
.flatMap(aLong -> api.heartbeat())
.subscribeOn(Schedulers.io())
.doFinally(this::heartbeat)

View File

@@ -96,6 +96,8 @@ dependencies {
api 'com.github.getActivity:ToastUtils:10.3'
api 'io.github.razerdp:BasePopup:3.2.1'
}
repositories {
mavenCentral()