From 5f27031620cea944248245acc6a09a436d5dc97d Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 21 Oct 2022 18:28:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunbao/common/manager/IMLoginManager.java | 10 +- .../com/yunbao/common/utils/RouteUtil.java | 9 +- .../main/res/layout/view_effects_settings.xml | 2 +- common/src/main/res/values-en/strings.xml | 3 + common/src/main/res/values/strings.xml | 10 + .../live/activity/LiveAudienceActivity.java | 2 +- .../yunbao/main/activity/MainActivity.java | 23 +- .../yunbao/main/activity/SettingActivity.java | 185 ++++++++- .../com/yunbao/main/dialog/HintDialog.java | 55 +++ main/src/main/res/drawable/bc_reward.xml | 5 + main/src/main/res/layout/activity_setting.xml | 355 +++++++++++++++++- main/src/main/res/layout/view_hint.xml | 54 +++ .../res/mipmap-xxxhdpi/special_icon_off.png | Bin 0 -> 8170 bytes .../res/mipmap-xxxhdpi/special_icon_on.png | Bin 0 -> 7660 bytes 14 files changed, 682 insertions(+), 31 deletions(-) create mode 100644 main/src/main/java/com/yunbao/main/dialog/HintDialog.java create mode 100644 main/src/main/res/drawable/bc_reward.xml create mode 100644 main/src/main/res/layout/view_hint.xml create mode 100644 main/src/main/res/mipmap-xxxhdpi/special_icon_off.png create mode 100644 main/src/main/res/mipmap-xxxhdpi/special_icon_on.png diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index 995bcc223..3cbf73f24 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -32,6 +32,15 @@ public class IMLoginManager extends BaseCacheManager { private final static String IS_CHAT = "isChat"; private final static String IS_SLIDE = "isSlide"; private final static String IS_FLOAT = "is_float"; + private final static String IS_HINT = "is_hint"; + + public boolean isHint() { + return TextUtils.equals("1", getString(IS_HINT)) || TextUtils.isEmpty(getString(IS_HINT)); + } + + public void initISHint(String isHint) { + put(IS_HINT, isHint); + } /** * 存储是否打开悬浮窗权限提示 @@ -43,7 +52,6 @@ public class IMLoginManager extends BaseCacheManager { } /** - * * @return */ public boolean isFloat() { diff --git a/common/src/main/java/com/yunbao/common/utils/RouteUtil.java b/common/src/main/java/com/yunbao/common/utils/RouteUtil.java index cd00ba2e7..0cb37ef5b 100644 --- a/common/src/main/java/com/yunbao/common/utils/RouteUtil.java +++ b/common/src/main/java/com/yunbao/common/utils/RouteUtil.java @@ -28,6 +28,7 @@ public class RouteUtil { public static final String PATH_MAIN = "/main/MainActivity"; public static final String PATH_ENTRY = "/main/EntryActivity"; public static final String PATH_LIVE_AUDIENCE = "/live/LiveAudienceActivity"; + public static final String PATH_SETTING = "/main/SettingActivity"; /** * 启动页 @@ -113,7 +114,13 @@ public class RouteUtil { ARouter.getInstance().build(PATH_EDITPROFILE) .navigation(); } - + /** + * 修改个人资料 + */ + public static void forwardSettingActivity() { + ARouter.getInstance().build(PATH_SETTING) + .navigation(); + } /** * 打开直播页面 */ diff --git a/common/src/main/res/layout/view_effects_settings.xml b/common/src/main/res/layout/view_effects_settings.xml index dc2fbea48..65f0f092e 100644 --- a/common/src/main/res/layout/view_effects_settings.xml +++ b/common/src/main/res/layout/view_effects_settings.xml @@ -57,7 +57,7 @@ diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index 4a969262e..5da7c1017 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -921,4 +921,7 @@ Limited ride And limited avatar frame ALL Minimize Play Show on other apps and pages \n Need to open the display Go to open + Don\'t like the small window play?\n You can turn it off in [Personal Center] - [Settings] + Go to Settings + Got it diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index c8c008666..305f3c76c 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -933,4 +933,14 @@ APP全應用小窗播放 在其他應用上及所有界面显示小窗\n需打開懸浮窗權限。 前往打開 + 不喜歡小窗播放吗?\n 可以在「個人中心」-「設定」中關閉 + 去設置 + 知道了 + 個人設定 + 獎勵 + 修改密碼 + 黑名单 + 消息通知 + 屏蔽直播間禮物特效 + 屏蔽直播間座駕特效 diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index 511a96ca6..0ee8b5eee 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -183,7 +183,7 @@ public class LiveAudienceActivity extends LiveActivity { if (EasyFloat.isShow("LiveFloatView")) { EasyFloat.dismiss("LiveFloatView", true); } - + IMLoginManager.get(mContext).initISHint("1"); } public void setBackIndex(int backIndex) { diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 2cb3996dd..0e59f28cc 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -93,6 +93,7 @@ import com.yunbao.live.presenter.LiveRoomCheckLivePresenter; import com.yunbao.live.utils.LiveStorge; import com.yunbao.live.views.ChatListViewHolder; import com.yunbao.main.R; +import com.yunbao.main.dialog.HintDialog; import com.yunbao.main.dialog.MainStartDialogFragment; import com.yunbao.main.dialog.ReturnUserDialog; import com.yunbao.main.dialog.SigninDialog; @@ -470,12 +471,22 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene //获取指导员账号 ConversationIMListManager.get(this).getUserInstructor(this); checkVersion(); -// new Handler().postDelayed(new Runnable() { -// @Override -// public void run() { -// startActivity(new Intent(MainActivity.this,TestActivity.class)); -// } -// },1000); + + } + + @Override + protected void onRestart() { + super.onRestart(); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + if (!IMLoginManager.get(mContext).isHint()) { + HintDialog fragment = new HintDialog(); + fragment.show(getSupportFragmentManager(), "HintDialog"); + } + + } + }, 1000); } /** diff --git a/main/src/main/java/com/yunbao/main/activity/SettingActivity.java b/main/src/main/java/com/yunbao/main/activity/SettingActivity.java index 575a5cab6..a022b7afa 100644 --- a/main/src/main/java/com/yunbao/main/activity/SettingActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/SettingActivity.java @@ -1,18 +1,31 @@ package com.yunbao.main.activity; +import static com.yunbao.common.Constants.SETTING_CLEAR_CACHE; + import android.app.Dialog; import android.content.Intent; +import android.graphics.Color; import android.os.Handler; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.widget.ImageView; +import android.widget.TextView; + import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import android.text.TextUtils; +import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.fastjson.JSON; +import com.lzf.easyfloat.interfaces.OnPermissionResult; +import com.lzf.easyfloat.permission.PermissionUtils; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.activity.WebViewActivity; import com.yunbao.common.bean.ConfigBean; +import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.CommonHttpConsts; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.http.HttpCallback; @@ -21,9 +34,11 @@ import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.GlideCatchUtil; +import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.VersionUtil; import com.yunbao.common.utils.WordUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.main.R; import com.yunbao.main.adapter.SettingAdapter; import com.yunbao.main.bean.SettingBean; @@ -37,17 +52,18 @@ import java.util.List; import cn.rongcloud.rtc.api.RCRTCEngine; import io.rong.imlib.RongIMClient; -import static com.yunbao.common.Constants.SETTING_CLEAR_CACHE; - /** * Created by cxf on 2018/9/30. */ - +@Route(path = RouteUtil.PATH_SETTING) public class SettingActivity extends AbsActivity implements OnItemClickListener { private RecyclerView mRecyclerView; private Handler mHandler; private SettingAdapter mAdapter; + private ImageView studioGiftEffects, studioRideEffects, upSlideSettings, appWindow, systemWindow; + private boolean giftEffect, mountEffect, slide, isFloat; + private TextView systemHit; @Override protected int getLayoutId() { @@ -56,10 +72,18 @@ public class SettingActivity extends AbsActivity implements OnItemClickListener< @Override protected void main() { - setTitle(WordUtil.getString(R.string.setting)); + setTitle(WordUtil.getString(R.string.set_up)); mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); + studioGiftEffects = findViewById(R.id.studio_gift_effects); + studioRideEffects = findViewById(R.id.studio_ride_effects); + upSlideSettings = findViewById(R.id.up_slide_settings); + appWindow = findViewById(R.id.app_window); + systemHit = findViewById(R.id.system_hit); + systemWindow = findViewById(R.id.system_window); mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); + giftEffect = IMLoginManager.get(mContext).isGiftEffect(); + mountEffect = IMLoginManager.get(mContext).isMountEffect(); MainHttpUtil.getSettingList(new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { @@ -79,6 +103,149 @@ public class SettingActivity extends AbsActivity implements OnItemClickListener< mRecyclerView.setAdapter(mAdapter); } }); + //黑名单 + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.blacklist), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + FollowActivity.forward(mContext, CommonAppConfig.getInstance().getUid(), 1); + } + }); + //修改密码 + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.change_the_password), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + forwardModifyPwd(); + } + }); + //消息通知 + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.alerts), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + startActivity(new Intent(SettingActivity.this, MsgSettActivity.class)); + } + }); + //屏蔽坐骑特效 + ViewClicksAntiShake.clicksAntiShake(studioGiftEffects, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + mountEffect = !mountEffect; + if (mountEffect) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, studioGiftEffects); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, studioGiftEffects); + } + //更新特效开关 + IMLoginManager.get(mContext).setMountEffect(mountEffect); + } + + }); + //屏蔽礼物特效 + ViewClicksAntiShake.clicksAntiShake(studioGiftEffects, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + giftEffect = !giftEffect; + if (giftEffect) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, studioRideEffects); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, studioRideEffects); + } + //更新特效开关 + IMLoginManager.get(mContext).setGiftEffect(giftEffect); + } + }); + //直播间滚动 + ViewClicksAntiShake.clicksAntiShake(upSlideSettings, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + slide = !slide; + if (slide) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, upSlideSettings); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, upSlideSettings); + } + //滑动设置 + IMLoginManager.get(mContext).initSlide(slide); + } + }); + //APP内小窗 + ViewClicksAntiShake.clicksAntiShake(appWindow, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + isFloat = !isFloat; + if (!isFloat) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, appWindow); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, appWindow); + } + //更新特效开关 + IMLoginManager.get(mContext).initFloat(isFloat); + } + }); + //系统悬浮窗 + ViewClicksAntiShake.clicksAntiShake(systemWindow, () -> { + PermissionUtils.requestPermission(mContext, new OnPermissionResult() { + @Override + public void permissionResult(boolean isFloat) { + if (!isFloat) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, systemWindow); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, systemWindow); + } + } + }); + } + ); + //系统悬浮窗 + ViewClicksAntiShake.clicksAntiShake(systemHit, () -> { + PermissionUtils.requestPermission(mContext, new OnPermissionResult() { + @Override + public void permissionResult(boolean isFloat) { + if (!isFloat) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, systemWindow); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, systemWindow); + } + } + }); + } + ); + SpannableStringBuilder builder = new SpannableStringBuilder(getString(com.yunbao.common.R.string.system_window_hint)); + String goTo = getString(com.yunbao.common.R.string.to_open_the); + int star = builder.length(); + int end = star + goTo.length(); + builder.append(goTo); + builder.setSpan(new ForegroundColorSpan(Color.parseColor("#ffaf08")), + star, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + systemHit.setText(builder); + boolean floatPermission = PermissionUtils.checkPermission(mContext); + if (!floatPermission) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, systemWindow); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, systemWindow); + } + isFloat = IMLoginManager.get(mContext).isFloat(); + if (!isFloat) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, appWindow); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, appWindow); + } + slide = IMLoginManager.get(mContext).isSlide(); + if (slide) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, upSlideSettings); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, upSlideSettings); + } + if (giftEffect) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, studioGiftEffects); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, studioGiftEffects); + } + if (mountEffect) { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_off, studioRideEffects); + } else { + ImgLoader.display(mContext, com.yunbao.common.R.mipmap.special_icon_on, studioRideEffects); + } } @@ -93,11 +260,11 @@ public class SettingActivity extends AbsActivity implements OnItemClickListener< } else if (bean.getId() == Constants.SETTING_UPDATE_ID) {//检查更新 checkVersion(); } else if (bean.getId() == Constants.SETTING_ISBLACK) {//拉黑列表 - FollowActivity.forward(mContext, CommonAppConfig.getInstance().getUid(),1); + FollowActivity.forward(mContext, CommonAppConfig.getInstance().getUid(), 1); } else if (bean.getId() == SETTING_CLEAR_CACHE) {//清除缓存 - clearCache(position); - }else if (bean.getId() == 21) {//清除缓存 - startActivity(new Intent(SettingActivity.this,MsgSettActivity.class)); + clearCache(position); + } else if (bean.getId() == 21) {//清除缓存 + startActivity(new Intent(SettingActivity.this, MsgSettActivity.class)); } } else { if (bean.getId() == 17) {//意见反馈要在url上加版本号和设备号 diff --git a/main/src/main/java/com/yunbao/main/dialog/HintDialog.java b/main/src/main/java/com/yunbao/main/dialog/HintDialog.java new file mode 100644 index 000000000..b38b53742 --- /dev/null +++ b/main/src/main/java/com/yunbao/main/dialog/HintDialog.java @@ -0,0 +1,55 @@ +package com.yunbao.main.dialog; + +import android.os.Bundle; +import android.view.Gravity; +import android.view.Window; +import android.view.WindowManager; + +import com.yunbao.common.dialog.AbsDialogFragment; +import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; +import com.yunbao.main.R; + +public class HintDialog extends AbsDialogFragment { + @Override + protected int getLayoutId() { + return R.layout.view_hint; + } + + @Override + protected int getDialogStyle() { + return R.style.dialog; + + } + + @Override + protected boolean canCancel() { + return false; + } + + @Override + protected void setWindowAttributes(Window window) { + window.setWindowAnimations(com.yunbao.live.R.style.bottomToTopAnim); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = DpUtil.dp2px(277); + params.height = DpUtil.dp2px(134); + params.gravity = Gravity.CENTER; + window.setAttributes(params); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + IMLoginManager.get(mContext).initISHint("3"); + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.to_set_up), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + RouteUtil.forwardSettingActivity(); + dismiss(); + } + }); + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.know_the), () -> dismiss()); + } +} diff --git a/main/src/main/res/drawable/bc_reward.xml b/main/src/main/res/drawable/bc_reward.xml new file mode 100644 index 000000000..0ad03fe1d --- /dev/null +++ b/main/src/main/res/drawable/bc_reward.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/main/src/main/res/layout/activity_setting.xml b/main/src/main/res/layout/activity_setting.xml index ebf7b38ac..be37c111c 100644 --- a/main/src/main/res/layout/activity_setting.xml +++ b/main/src/main/res/layout/activity_setting.xml @@ -1,19 +1,350 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#F5F6F7" + android:orientation="vertical"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main/src/main/res/layout/view_hint.xml b/main/src/main/res/layout/view_hint.xml new file mode 100644 index 000000000..f1e67461e --- /dev/null +++ b/main/src/main/res/layout/view_hint.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main/src/main/res/mipmap-xxxhdpi/special_icon_off.png b/main/src/main/res/mipmap-xxxhdpi/special_icon_off.png new file mode 100644 index 0000000000000000000000000000000000000000..57e24b1e529878442a709244cfe4e964c9d58967 GIT binary patch literal 8170 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¤p4^xds$6F)>kwaqPMXY+_U)-=|Vj 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 literal 0 HcmV?d00001 diff --git a/main/src/main/res/mipmap-xxxhdpi/special_icon_on.png b/main/src/main/res/mipmap-xxxhdpi/special_icon_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b172aa2676dc8e7ac3fd06b16411c80d049f7949 GIT binary patch literal 7660 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 literal 0 HcmV?d00001