房间播放背景音乐入口修改

This commit is contained in:
huangjian
2022-10-10 17:18:56 +08:00
parent 4f7815a692
commit 17da9fed96
7 changed files with 116 additions and 140 deletions

View File

@@ -14,6 +14,8 @@ import android.text.TextUtils
import android.view.MotionEvent
import android.view.View
import android.view.ViewStub
import android.view.animation.AnimationUtils
import android.view.animation.LinearInterpolator
import android.widget.EditText
import android.widget.ImageView
import android.widget.RelativeLayout
@@ -25,14 +27,45 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.netease.nim.uikit.common.antispam.AntiSpamEvent
import com.netease.nimlib.sdk.StatusCode
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
import com.orhanobut.logger.Logger
import com.tbruyelle.rxpermissions2.RxPermissions
import com.trello.rxlifecycle3.android.FragmentEvent
import com.mango.core.Constants
import com.mango.core.DemoCache
import com.mango.core.UriProvider
import com.mango.core.auth.AuthModel
import com.mango.core.bean.RoomMicInfo
import com.mango.core.gift.GiftModel
import com.mango.core.gift.bean.GiftInfo
import com.mango.core.helper.AtProxy
import com.mango.core.home.bean.BannerInfo
import com.mango.core.im.custom.bean.RoomFollowOwnerAttachment
import com.mango.core.im.custom.bean.RoomFollowOwnerAttachment2
import com.mango.core.manager.AudioEngineManager
import com.mango.core.manager.AvRoomDataManager
import com.mango.core.manager.IMNetEaseManager
import com.mango.core.manager.RoomEvent
import com.mango.core.mentoring_relationship.event.MentoringStopCountingEvent
import com.mango.core.music.event.MusicPauseEvent
import com.mango.core.music.event.MusicPlayingEvent
import com.mango.core.music.event.MusicStopEvent
import com.mango.core.room.anotherroompk.ShowGiftDialogEvent
import com.mango.core.room.anotherroompk.ShowUserInfoDialogEvent
import com.mango.core.room.bean.RoomContributeUserInfo
import com.mango.core.room.bean.RoomInfo
import com.mango.core.room.event.RoomAtEvent
import com.mango.core.room.event.RoomClearScreenEvent
import com.mango.core.room.game.GameStatus
import com.mango.core.room.giftvalue.helper.GiftValueMrg
import com.mango.core.room.queue.bean.MicMemberInfo
import com.mango.core.share.bean.SessionType
import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol
import com.mango.core.super_admin.SaConstant
import com.mango.core.super_admin.model.SuperAdminModel
import com.mango.core.super_admin.util.SuperAdminUtil
import com.mango.core.user.UserModel
import com.mango.core.user.bean.BaseInfo
import com.mango.core.user.bean.UserInfo
import com.mango.core.utils.CurrentTimeUtils
import com.mango.core.utils.net.VipLevelNotEnoughException
import com.mango.moshen.R
import com.mango.moshen.avroom.BottomViewListenerWrapper
import com.mango.moshen.avroom.SoftKeyBoardListener
@@ -56,6 +89,8 @@ import com.mango.moshen.event.OpenRoomIntroEvent
import com.mango.moshen.friend.view.SelectFriendActivity
import com.mango.moshen.home.adapter.RoomActAdapter
import com.mango.moshen.home.adapter.RoomActAdapter.RoomActClickListener
import com.mango.moshen.music.widget.MusicPlayerView
import com.mango.moshen.room_chat.activity.RoomMsgActivity
import com.mango.moshen.shipantics.PullRadishActivity
import com.mango.moshen.treasure_box.widget.GoldBoxHelper
import com.mango.moshen.ui.utils.loadAvatar
@@ -71,51 +106,20 @@ import com.mango.moshen.ui.widget.rollviewpager.RollPagerView
import com.mango.moshen.ui.widget.rollviewpager.Util
import com.mango.moshen.ui.widget.rollviewpager.hintview.ColorPointHintView
import com.mango.moshen.utils.KeyBoardUtils
import com.mango.moshen.music.widget.MusicPlayerView
import com.mango.moshen.room_chat.activity.RoomMsgActivity
import com.mango.xchat_android_constants.XChatConstants
import com.mango.core.Constants
import com.mango.core.DemoCache
import com.mango.core.UriProvider
import com.mango.core.auth.AuthModel
import com.mango.core.bean.RoomMicInfo
import com.mango.core.gift.GiftModel
import com.mango.core.gift.bean.GiftInfo
import com.mango.core.helper.AtProxy
import com.mango.core.home.bean.BannerInfo
import com.mango.core.im.custom.bean.RoomFollowOwnerAttachment
import com.mango.core.im.custom.bean.RoomFollowOwnerAttachment2
import com.mango.core.manager.AudioEngineManager
import com.mango.core.manager.AvRoomDataManager
import com.mango.core.manager.IMNetEaseManager
import com.mango.core.manager.RoomEvent
import com.mango.core.mentoring_relationship.event.MentoringStopCountingEvent
import com.mango.core.room.anotherroompk.ShowGiftDialogEvent
import com.mango.core.room.anotherroompk.ShowUserInfoDialogEvent
import com.mango.core.room.bean.RoomContributeUserInfo
import com.mango.core.room.bean.RoomInfo
import com.mango.core.room.event.RoomAtEvent
import com.mango.core.room.event.RoomClearScreenEvent
import com.mango.core.room.game.GameStatus
import com.mango.core.room.giftvalue.helper.GiftValueMrg
import com.mango.core.room.queue.bean.MicMemberInfo
import com.mango.core.share.bean.SessionType
import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol
import com.mango.core.super_admin.SaConstant
import com.mango.core.super_admin.model.SuperAdminModel
import com.mango.core.super_admin.util.SuperAdminUtil
import com.mango.core.user.UserModel
import com.mango.core.user.bean.BaseInfo
import com.mango.core.user.bean.UserInfo
import com.mango.core.utils.CurrentTimeUtils
import com.mango.core.utils.LogUtils
import com.mango.core.utils.net.VipLevelNotEnoughException
import com.mango.xchat_android_library.net.rxnet.utils.RxNetWorkUtils
import com.mango.xchat_android_library.rxbus.RxBus
import com.mango.xchat_android_library.utils.*
import com.mango.xchat_android_library.utils.config.BasicConfig
import com.netease.nim.uikit.common.antispam.AntiSpamEvent
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.netease.nimlib.sdk.StatusCode
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
import com.orhanobut.logger.Logger
import com.tbruyelle.rxpermissions2.RxPermissions
import com.trello.rxlifecycle3.android.FragmentEvent
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus
@@ -143,6 +147,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
private var musicPlayerView: MusicPlayerView? = null
private var ivRadishEntrance: View? = null
private var mVsMusicPlayer: ViewStub? = null
private var ivMusicFlag: ImageView? = null
private var mDisposable: Disposable? = null
private var isCloseScreen = false
private var isOpenRedPackage = false
@@ -188,6 +193,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
inputSend = mView.findViewById(R.id.input_send)
microView = mView.findViewById(R.id.micro_view)
mVsMusicPlayer = mView.findViewById(R.id.vs_music_player)
ivMusicFlag = mView.findViewById(R.id.iv_music_flag)
ivRadishEntrance = mView.findViewById(R.id.iv_radish_entrance)
messageView.setClickConsumer {
if (!TextUtils.isEmpty(it) && it != "0") {
@@ -224,6 +230,9 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
atProxy?.insertAitMember(account, name)
}
softKeyboardListener()
ivMusicFlag?.setOnClickListener {
musicPlayerView?.showBoxInAnim()
}
}
@SuppressLint("CheckResult")
@@ -518,11 +527,27 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
musicPlayerView = mVsMusicPlayer?.inflate() as? MusicPlayerView
}
musicPlayerView?.visibility = View.VISIBLE
ivMusicFlag?.isVisible = true
} else {
musicPlayerView?.visibility = View.GONE
ivMusicFlag?.isVisible = false
}
}
private fun playFlagRotateAnim() {
val operatingAnim = AnimationUtils.loadAnimation(
context, R.anim.rotate_quick_anim
)
val lin = LinearInterpolator()
operatingAnim.interpolator = lin
ivMusicFlag?.startAnimation(operatingAnim)
}
private fun stopFlagRotateAnim() {
ivMusicFlag?.clearAnimation()
}
/**
* 检查是否关注房主,然后弹出
*/
@@ -626,6 +651,22 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
messageView.clear()
}
@Subscribe(threadMode = ThreadMode.MAIN)
open fun onMusicPlaying(event: MusicPlayingEvent?) {
playFlagRotateAnim()
}
@Subscribe(threadMode = ThreadMode.MAIN)
open fun onMusicPause(event: MusicPauseEvent?) {
stopFlagRotateAnim()
}
@Subscribe(threadMode = ThreadMode.MAIN)
open fun onMusicStop(event: MusicStopEvent?) {
stopFlagRotateAnim()
}
@CallSuper
override fun onClick(v: View) {
when (v.id) {

View File

@@ -3,9 +3,9 @@
android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="#1709CC"
android:startColor="#2B00CA"
android:angle="180"
android:endColor="#8c1709CC"
android:startColor="#332B00CA"
android:type="linear"
android:useLevel="true" />

View File

@@ -136,6 +136,16 @@
android:textSize="10dp"
android:visibility="visible" />
<ImageView
android:id="@+id/iv_music_flag"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_alignTop="@id/tv_hour_rank"
android:layout_marginStart="4dp"
android:layout_toEndOf="@id/tv_hour_rank"
android:src="@drawable/icon_music_flag"
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_dating_step"
android:layout_width="wrap_content"

View File

@@ -165,6 +165,17 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/contribute_list" />
<ImageView
android:id="@+id/iv_music_flag"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/icon_music_flag"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/tv_hour_rank"
app:layout_constraintTop_toTopOf="@id/tv_hour_rank" />
<FrameLayout
android:id="@+id/fl_speedy_message"
android:layout_width="0dp"

View File

@@ -46,16 +46,13 @@ import java.util.List;
*/
public class MusicPlayerView extends FrameLayout implements View.OnClickListener, SeekBar.OnSeekBarChangeListener {
private FrameLayout musicFlagLayout;
private RelativeLayout musicBoxLayout;
private ImageView musicFlag;
private ImageView musicListMore;
private ImageView musicPlayPause;
private ImageView nextBtn;
private ImageView musicPlayCycle;
private SeekBar volumeSeekBar;
private TextView musicName;
private String imageBg;
private View layoutMusicBgClick;
public MusicPlayerView(Context context) {
@@ -74,9 +71,6 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
private void init() {
EventBus.getDefault().register(this);
LayoutInflater.from(getContext()).inflate(R.layout.layout_music_player_view, this, true);
musicFlagLayout = findViewById(R.id.music_flag_layout);
musicFlagLayout.setOnClickListener(this);
musicFlag = findViewById(R.id.music_flag);
musicBoxLayout = findViewById(R.id.music_box_layout);
musicBoxLayout.setOnClickListener(this);
musicListMore = findViewById(R.id.music_list_more);
@@ -105,58 +99,22 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
updateView();
}
public void setImageBg(String imageBg) {
// this.imageBg = imageBg;
}
private void playFlagRotateAnim() {
Animation operatingAnim = AnimationUtils.loadAnimation(getContext(), R.anim.rotate_quick_anim);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
musicFlag.startAnimation(operatingAnim);
}
private void stopFlagRotateAnim() {
musicFlag.clearAnimation();
}
private void showFlagInAnim() {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(musicBoxLayout, "translationX", 0, -UIUtil.dip2px(getContext(), 317)).setDuration(150);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
ObjectAnimator objectAnimatorFlag = ObjectAnimator.ofFloat(
musicFlagLayout,
"translationX",
UIUtil.dip2px(getContext(), 76),
0)
.setDuration(150);
objectAnimatorFlag.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimatorFlag.setStartDelay(150);
objectAnimatorFlag.addListener(new AnimatorListenerAdapter() {
objectAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
public void onAnimationEnd(Animator animation) {
layoutMusicBgClick.setVisibility(GONE);
}
});
objectAnimatorFlag.start();
}
private void showBoxInAnim() {
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(
musicFlagLayout,
"translationX",
0,
UIUtil.dip2px(getContext(), 76))
.setDuration(150);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();
public void showBoxInAnim() {
ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(musicBoxLayout, "translationX", -UIUtil.dip2px(getContext(), 317), 0).setDuration(150);
objectAnimator1.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator1.setStartDelay(150);
objectAnimator1.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
@@ -172,22 +130,12 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
}
public void release() {
stopFlagRotateAnim();
EventBus.getDefault().unregister(this);
// stopMusic();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.music_flag_layout:
showBoxInAnim();
if (AvRoomDataManager.get().isCpRoom()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_CP_ROOM_MUSIC_CLICK, "音乐");
} else {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MP_ROOM_MUSIC_CLICK, "音乐");
}
break;
case R.id.layout_music_bg_click:
showFlagInAnim();
break;
@@ -256,11 +204,9 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
} else {
musicPlayPause.setImageResource(R.drawable.icon_music_pause);
}
playFlagRotateAnim();
} else {
musicName.setText("暂无歌曲播放");
musicPlayPause.setImageResource(R.drawable.icon_music_pause);
stopFlagRotateAnim();
}
}
@@ -268,13 +214,11 @@ public class MusicPlayerView extends FrameLayout implements View.OnClickListener
public void onMusicPlaying(MusicPlayingEvent event) {
LocalMusicBean localMusicInfo = PlayerModel.get().getCurrent();
updateView();
playFlagRotateAnim();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMusicPause(MusicPauseEvent event) {
updateView();
}
@Subscribe(threadMode = ThreadMode.MAIN)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -4,36 +4,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/music_flag_layout"
android:layout_width="76dp"
android:layout_height="24dp"
android:layout_gravity="end"
android:background="@drawable/bg_room_music_player"
tools:visibility="visible">
<ImageView
android:id="@+id/music_flag"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="1dp"
android:layout_gravity="start|center_vertical"
android:layout_marginEnd="2dp"
android:src="@drawable/icon_music_flag" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="25dp"
android:lines="1"
android:text="播放音乐"
android:textColor="@color/white"
android:textSize="12dp" />
</FrameLayout>
<RelativeLayout
android:id="@+id/layout_music_bg_click"
android:layout_width="match_parent"