Compare commits

...

8 Commits

Author SHA1 Message Date
01f09a0895 Merge remote-tracking branch 'origin/master' 2025-10-10 09:11:47 +08:00
d793c65471 1:修改房间activity
2:修改支付
2025-10-10 09:10:53 +08:00
61cd9616b9 1:修改房间activity
2:修改支付
2025-10-10 09:10:42 +08:00
c125f78353 将 .java 重命名为 .kt 2025-10-10 09:10:41 +08:00
4d58e96c43 1.测试 2025-09-26 01:35:55 +08:00
aa26d9f9f5 1.动态只留一个发现
2.去掉真爱榜
3.隐藏第三方登录
4.一键登录
5.登陆
2025-09-24 22:10:06 +08:00
a79e5268b5 Merge remote-tracking branch 'origin/master' 2025-09-24 19:25:35 +08:00
b82a991f40 1.登陆修改 2025-09-24 19:25:13 +08:00
162 changed files with 6506 additions and 4709 deletions

2
.idea/.name generated
View File

@@ -1 +1 @@
秘地
MY语聊

View File

@@ -13,12 +13,6 @@
</DropdownSelection>
<DialogSelection />
</SelectionState>
<SelectionState runConfigName="moduleactivity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
<SelectionState runConfigName="muduleactivity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

12
.idea/misc.xml generated
View File

@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="androidx.annotation.Nullable" />
<option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="15">
<list size="17">
<item index="0" class="java.lang.String" itemvalue="org.jspecify.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
<item index="2" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
@@ -21,12 +25,14 @@
<item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
<item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
<item index="14" class="java.lang.String" itemvalue="android.annotation.Nullable" />
<item index="15" class="java.lang.String" itemvalue="io.reactivex.rxjava3.annotations.Nullable" />
<item index="16" class="java.lang.String" itemvalue="io.reactivex.annotations.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="15">
<list size="17">
<item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
<item index="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
<item index="2" class="java.lang.String" itemvalue="org.jspecify.annotations.NonNull" />
@@ -42,6 +48,8 @@
<item index="12" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
<item index="13" class="java.lang.String" itemvalue="android.annotation.NonNull" />
<item index="14" class="java.lang.String" itemvalue="lombok.NonNull" />
<item index="15" class="java.lang.String" itemvalue="io.reactivex.annotations.NonNull" />
<item index="16" class="java.lang.String" itemvalue="io.reactivex.rxjava3.annotations.NonNull" />
</list>
</value>
</option>

View File

@@ -116,7 +116,7 @@ android {
}
kotlinOptions {
jvmTarget = '17'
jvmTarget = '11'
}
dexOptions {
dexInProcess true
@@ -144,8 +144,6 @@ dependencies {
implementation files('libs/logger-2.2.2-release.aar')
implementation files('libs/main-2.2.3-release.aar')
implementation files('libs/WbCloudFaceLiveSdk-face-v6.6.2-8e4718fc.aar')
implementation files('libs/WbCloudNormal-v5.1.10-4e3e198.aar')
implementation(libs.arouter.api.v150)

View File

@@ -4,16 +4,16 @@
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.xscm.midi",
"applicationId": "com.jdf.myyuliao",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 101,
"versionName": "1.0.5",
"outputFile": "秘地_1.0.5_101.apk"
"versionCode": 4,
"versionName": "1.0.0.2",
"outputFile": "MY语聊1.0.0.2_4.apk"
}
],
"elementType": "File",
@@ -22,14 +22,14 @@
"minApi": 28,
"maxApi": 30,
"baselineProfiles": [
"baselineProfiles/1/秘地_1.0.5_101.dm"
"baselineProfiles/1/MY语聊1.0.0.2_4.dm"
]
},
{
"minApi": 31,
"maxApi": 2147483647,
"baselineProfiles": [
"baselineProfiles/0/秘地_1.0.5_101.dm"
"baselineProfiles/0/MY语聊1.0.0.2_4.dm"
]
}
],

View File

@@ -148,6 +148,7 @@
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- com.xscm.action.LAUNCH_PAGE-->
<intent-filter>
<action android:name="com.xscm.action.LAUNCH_PAGE" />
<category android:name="android.intent.category.DEFAULT" />
@@ -199,9 +200,7 @@
android:taskAffinity="com.xscm.qxlive"
android:launchMode="singleTask">
</activity>
<activity
android:name=".RealNameActivity"
android:exported="false" />
<activity
android:name=".PasswordLoginActivity"

View File

@@ -13,6 +13,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.jdf.myyuliao.databinding.ActivityLaunchPageBinding;
import com.xscm.modulelogin.activity.ImproveInfoActivity;
import com.xscm.moduleutil.activity.BaseAppCompatActivity;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.AppStateListener;
import com.xscm.moduleutil.base.AppStateManager;
import com.xscm.moduleutil.base.CommonAppContext;
@@ -37,8 +38,13 @@ public class LaunchPageActivity extends BaseAppCompatActivity<ActivityLaunchPage
if (!isTaskRoot()) {
if (SpUtil.getUnderagePassword() != null && !SpUtil.getUnderagePassword().isEmpty()) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken())
.withString("type", "1").navigation();//type==1青少年模式
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken())
// .withString("type", "1").navigation();//type==1青少年模式
Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken());
intent.putExtra("title", "1");
startActivity(intent);
} else {
// 如果没有设置青少年模式,应该导航到首页
try {

View File

@@ -360,13 +360,13 @@ public class PasswordLoginActivity extends BaseMvpActivity<LoginPresenter, Activ
.setLogBtnBackgroundPath("theme_bg")
//切换到其他方式
.setSwitchAccText("其他登录方式")
.setSwitchAccTextColor(Color.parseColor("#333333"))
.setSwitchAccTextColor(Color.parseColor("#FC7285"))
.setSwitchAccTextSize(12)
.setSwitchOffsetY(390)
//协议栏
.setAppPrivacyOne("《用户协议》", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=6")
.setAppPrivacyTwo("《隐私协议》", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=4")
.setAppPrivacyColor(Color.parseColor("#A8A8A8"), Color.parseColor("#FFBC00"))
.setAppPrivacyColor(Color.parseColor("#A8A8A8"), Color.parseColor("#FF8ACC"))
.setPrivacyBefore("登录即代表同意")
.setPrivacyEnd("并授权获得号码")
.setPrivacyTextSize(11)

View File

@@ -161,7 +161,7 @@
android:layout_marginRight="@dimen/dp_13"
android:gravity="right"
android:text="@string/login_send_code"
android:textColor="#5F3EAB"
android:textColor="#FF8ACC"
android:textSize="@dimen/sp_16"
tools:visibility="visible" />
@@ -295,7 +295,8 @@
android:text="@string/login_btn_qt"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12"
tools:visibility="visible" />
android:visibility="invisible"
tools:visibility="invisible" />
<LinearLayout
android:id="@+id/ll_other_login"
@@ -305,8 +306,8 @@
android:gravity="center_horizontal"
android:layout_marginBottom="@dimen/dp_55"
android:orientation="horizontal"
android:visibility="visible"
tools:visibility="visible">
android:visibility="invisible"
tools:visibility="invisible">
<ImageView

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 977 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -23,11 +23,20 @@ buildscript {
// classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
}
}
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
}
subprojects {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = "11"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

View File

@@ -29,8 +29,8 @@ isBuildModule=false
#org.gradle.deamon=false
android.injected.testOnly=false
APP_VERSION_NAME=1.0.0
APP_VERSION_CODE=1
APP_VERSION_NAME=1.0.0.2
APP_VERSION_CODE=3
org.gradle.jvm.toolchain.useLegacyAdapters=false
#org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15
@@ -51,4 +51,7 @@ org.gradle.caching=false
kapt.incremental.apt=false
# 或者禁用特定模块的增量编译
#org.gradle.configureondemand=false
#org.gradle.configureondemand=false
# 统一 Kotlin JVM 目标版本
kotlin.jvm.target.validation.mode=warning

View File

@@ -74,6 +74,7 @@ webpdecoder = "1.6.4.9.0"
wechatSdkAndroid = "6.8.30"
xbanner = "1.7.0"
appcompatVersion = "1.3.1"
lifecycleViewmodelKtxVersion = "2.2.0"
[libraries]
alipay-alipaysdk-android = { module = "com.alipay.sdk:alipaysdk-android", version.ref = "alipayAlipaysdkAndroid" }
@@ -155,6 +156,7 @@ wechat-sdk-android = { module = "com.tencent.mm.opensdk:wechat-sdk-android", ver
xbanner = { module = "com.github.xiaohaibin:XBanner", version.ref = "xbanner" }
zcw-togglebutton-library = { module = "com.zcw:togglebutton-library", version.ref = "togglebuttonLibraryVersion" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompatVersion" }
androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtxVersion" }
[plugins]

View File

@@ -1,8 +1,8 @@
#Wed May 07 09:31:48 CST 2025
#Mon Sep 22 21:05:11 CST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.7-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=file:///D:/Greadle/gradle-8.10.2-all.zip
zipStorePath=wrapper/distsl.
distributionUrl=file:///D:/Gradle/gradle-8.10.2-bin.zip

View File

@@ -1,5 +1,8 @@
package com.xscm.modulelogin.activity;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;

View File

@@ -10,6 +10,7 @@ import com.blankj.utilcode.util.ToastUtils;
import com.xscm.modulelogin.activity.ImproveInfoActivity;
import com.xscm.modulelogin.activity.SwitchAccountsActivity;
import com.xscm.modulemain.activity.MainActivity;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.ThemeBean;
import com.xscm.moduleutil.bean.UserBean;
@@ -264,10 +265,20 @@ public class LoginPresenter extends BasePresenter<LoginContacter.View> implement
}
public void ysxl() {
ARouter.getInstance().build(ARouteConstants.H5).withString("url",CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
Intent intent = new Intent(com.blankj.utilcode.util.ActivityUtils.getTopActivity(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4");
intent.putExtra("title", "隐私协议");
com.blankj.utilcode.util.ActivityUtils.startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url",CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
}
public void yhxy() {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6").withString("title", "用户协议").navigation();
Intent intent = new Intent(com.blankj.utilcode.util.ActivityUtils.getTopActivity(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6");
intent.putExtra("title", "用户协议");
com.blankj.utilcode.util.ActivityUtils.startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6").withString("title", "用户协议").navigation();
}
}

View File

@@ -421,7 +421,7 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
mqttMessageQueue.addAll(mqttBean.getList());
// if (!isMqttPlaying) {
// isMqttPlaying = true;
processNextMqttMessage();
processNextMqttMessage();
// }
}
}else {
@@ -670,7 +670,7 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
onAnimationEnd.run();
}
}
// 添加获取屏幕宽度的方法
// 添加获取屏幕宽度的方法
private int getScreenWidth() {
DisplayMetrics displayMetrics = new DisplayMetrics();
if (getWindowManager() != null) {
@@ -766,7 +766,10 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(ChatInfo event) {
String id = event.getId().replace("g", "");
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/union/setGroup?id=" + SpUtil.getToken() + "&guildId=" + id).navigation();
Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/union/setGroup?id=" + SpUtil.getToken() + "&guildId=" + id);
startActivity( intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/union/setGroup?id=" + SpUtil.getToken() + "&guildId=" + id).navigation();
}

View File

@@ -3,6 +3,7 @@ package com.xscm.moduleutil.activity.news;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Intent;
import android.text.Html;
import android.view.View;
@@ -14,6 +15,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.RoomManager;
import com.xscm.moduleutil.bean.NewsMessageList;
import com.xscm.moduleutil.databinding.ActivityOfficialNoticeBinding;
@@ -30,6 +32,7 @@ public class OfficialNoticeActivity extends BaseMvpActivity<NewsPresenter, Activ
private int page = 1;
private BaseQuickAdapter<NewsMessageList, BaseViewHolder> mAdapter;
private String type;
private boolean isRefresh = true; // 添加标志位区分刷新和加载更多
@Override
protected void initData() {
@@ -46,12 +49,14 @@ public class OfficialNoticeActivity extends BaseMvpActivity<NewsPresenter, Activ
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
isRefresh = false; // 设置为加载更多模式
MvpPre.getMessagetitle(type, page + "", "10");
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page = 1;
isRefresh = true; // 设置为刷新模式
MvpPre.getMessagetitle(type, page + "", "10");
}
});
@@ -79,7 +84,10 @@ public class OfficialNoticeActivity extends BaseMvpActivity<NewsPresenter, Activ
RoomManager.getInstance().fetchRoomDataAndEnter(getApplicationContext(), item.getRoom_id()+"","");
// ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("roomId", item.getRoom_id() + "").navigation();
}else if (item.getRoom_id() == 0 && item.getUrl() != null && !item.getUrl().isEmpty()){
ARouter.getInstance().build(ARouteConstants.H5).withString("url", item.getUrl()).navigation();
Intent intent = new Intent(OfficialNoticeActivity.this, WebViewActivity.class);
intent.putExtra("url", item.getUrl());
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", item.getUrl()).navigation();
}
}
});
@@ -119,7 +127,15 @@ public class OfficialNoticeActivity extends BaseMvpActivity<NewsPresenter, Activ
@Override
public void showNews(List<NewsMessageList> newsList) {
mAdapter.setNewData(newsList);
if (isRefresh) {
// 下拉刷新
mAdapter.setNewData(newsList);
} else {
if (newsList != null) {
// 上拉加载更多
mAdapter.addData(newsList);
}
}
}
@Override

View File

@@ -80,7 +80,7 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
}
public void loadDataIfNeeded(String id, int type, String roomId) {
if (MvpPre==null){
if (MvpPre == null) {
MvpPre = new RewardGiftPresenter(this, getActivity());
}
if (id.equals("0")) {
@@ -100,7 +100,7 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
@Subscribe(threadMode = ThreadMode.MAIN)
public void onString(GiftPackEvent event) {
if (event!=null && event.getBdid()!=null) {
if (event != null && event.getBdid() != null) {
bdgiftId = event.getBdid();
MvpPre.giftPack();
}
@@ -108,7 +108,7 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
@Override
protected void initData() {
if (type==0){
if (type == 0) {
MvpPre.getGiftList("0", type, roomId);
}
// if (id.equals("0")) {
@@ -159,7 +159,12 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
@Override
public void setGiftList(List<RoonGiftModel> data, int type) {
giftList = new ArrayList<>();
if (data == null) {
data = new ArrayList<>();
return;
}
giftList.addAll(data);
pageCount = (int) Math.ceil(data.size() * 1.0 / pageSize);
// 只需要创建一次Adapter并设置循环设置没有意义
@@ -219,7 +224,6 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
}
}
@Override

View File

@@ -47,6 +47,7 @@ import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.rtc.AgoraManager;
import com.xscm.moduleutil.service.MqttConnect;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.CrashHandler;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.UtilConfig;
import com.xscm.moduleutil.utils.config.EnvironmentEnum;
@@ -96,6 +97,11 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
public String playId;
public String lable_id;
public boolean isMicPlace;
public boolean isShowAg;
public boolean isRoomJoininj=false;
public String playCover;
public boolean showSelf;//盲盒是否能送自己
public String playName;
@@ -125,8 +131,6 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
@Getter
public UnreadCountEvent unreadCountEvent;
public boolean isShowAg;
@Override
public void onCreate() {
super.onCreate();
@@ -142,6 +146,8 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
startListeningUnreadMessageCount();
// 全局设置字体不缩放
adjustFontScale(getResources().getConfiguration());
CrashHandler.init(this);
}
@@ -213,8 +219,69 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
event.setALong(unreadCount);
// 使用EventBus通知
CommonAppContext.getInstance().setUnreadCountEvent(event);
EventBus.getDefault().post(event);
EventBus.getDefault().post(event);
}
/**
* 检查网络是否可用
* @return true表示网络可用false表示网络不可用
*/
public boolean isNetworkAvailable() {
try {
// 获取网络连接管理器
android.net.ConnectivityManager connectivityManager =
(android.net.ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Android 6.0及以上版本
android.net.Network network = connectivityManager.getActiveNetwork();
if (network != null) {
android.net.NetworkCapabilities capabilities =
connectivityManager.getNetworkCapabilities(network);
if (capabilities != null) {
// 检查是否有网络连接并且可以访问互联网
return capabilities.hasCapability(android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
capabilities.hasCapability(android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED);
}
}
} else {
// Android 6.0以下版本
android.net.NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
} catch (Exception e) {
LogUtils.e("Network availability check failed: " + e.getMessage());
}
return false;
}
/**
* 检查网络是否可用(简化版本)
* @return true表示网络可用false表示网络不可用
*/
public boolean isNetworkConnected() {
try {
android.net.ConnectivityManager connectivityManager =
(android.net.ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
android.net.Network network = connectivityManager.getActiveNetwork();
return network != null;
} else {
android.net.NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
} catch (Exception e) {
LogUtils.e("Network connection check failed: " + e.getMessage());
}
return false;
}
/**
* 优化内存设置
*/
@@ -367,7 +434,7 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
// startService(mqttServiceIntent);
// }
mqttConnect=MqttConnect.getInstance(this,"tcp://62.234.12.147","android-"+ MqttClient.generateClientId());
mqttConnect=MqttConnect.getInstance(this,"tcp://119.45.34.13","android-"+ MqttClient.generateClientId());
mqttConnect.mqttClient();
// 每次启动应用时重置状态
@@ -779,7 +846,7 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
if (appStateListener != null && appStateListener.isFloatingWindowVisible()) {
// 有悬浮窗,直接回到首页
// if (!className.contains("MainActivity")) {
ARouter.getInstance().build(ARouteConstants.ME).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP).navigation();
ARouter.getInstance().build(ARouteConstants.ME).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP).navigation();
// }
} else if (appStateListener != null && appStateListener.shouldShowSplash()) {
// 需要显示启动页

View File

@@ -1,11 +1,14 @@
package com.xscm.moduleutil.base;
import static android.app.PendingIntent.getActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
@@ -110,7 +113,10 @@ public class RoomManager {
public void fetchRoomDataAndEnter(Context context, String roomId, String password) {
// 显示加载提示
// 这里可以根据需要添加加载对话框
if (CommonAppContext.getInstance().isRoomJoininj){
return;
}
CommonAppContext.getInstance().isRoomJoininj=true;
// 检查是否有有效的缓存数据
// RoomInfoResp roomInfo = getCachedRoomData(roomId);
// 检查是否是当前房间且用户在线
@@ -119,7 +125,11 @@ public class RoomManager {
fetchAndJoinRoom(context, roomId, password);
} else {
if (!CommonAppContext.getInstance().playId.equals(roomId)) {
MessageListenerSingleton.getInstance().joinGroup(roomId);
exitRoom(CommonAppContext.getInstance().playId);
CommonAppContext.getInstance().isShow = false;
CommonAppContext.getInstance().isPlaying = false;
EventBus.getDefault().post(new RoomOutEvent());
} else if (CommonAppContext.getInstance().lable_id.equals("6")) {
upInfo(context, roomId, password, true, null, true);
return;
@@ -241,7 +251,7 @@ public class RoomManager {
*/
private void fetchAndJoinRoom(Context context, String roomId, String password) {
// 获取房间数据
MessageListenerSingleton.getInstance().joinGroup(roomId);
// 等待一段时间确保退出完成
try {
Thread.sleep(300);
@@ -330,7 +340,6 @@ public class RoomManager {
ARouter.getInstance()
.build(ARouteConstants.ROOM_DETAILS)
.with(bundle)
.withFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
.navigation(context);
} catch (Exception e) {
@@ -394,11 +403,11 @@ public class RoomManager {
// 可以通过检查Agora是否还在房间中或者通过服务端接口查询用户状态等方式实现
// 目前返回false需要根据实际需求实现具体逻辑
// boolean isCurrentRoom=isCurrentRoom(roomId);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// try {
// Thread.sleep(300);
// } catch (InterruptedException e) {
// Thread.currentThread().interrupt();
// }
final boolean[] isOnline = {false};
RetrofitClient.getInstance().getRoomOnline(roomId, "1", "50", new BaseObserver<RoomOnline>() {
@Override

View File

@@ -10,6 +10,7 @@ import lombok.Data;
public class AppPay {
private String ali;
private WxBean wx;
private String xlx;
@Data
public static class WxBean {
@@ -20,4 +21,14 @@ public class AppPay {
private String timestamp;
private String sign;
}
@Data
public static class XlxBean {
private int pid;
private String noncestr;
private String partnerid;
private String prepayid;
private String timestamp;
private String sign;
}
}

View File

@@ -0,0 +1,23 @@
package com.xscm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/9/25
*@description: 绑定详情
*/
@Data
public class BindDetail {
private String id;
private String alipay_name;//支付宝姓名
private String alipay_account;//支付宝账户
private String bank_card_number;//银行卡号
private String bank_user_name;//姓名
private String bank_card;//所属行
private String open_bank;//开户行
}

View File

@@ -14,6 +14,9 @@ public class BindType {
private AllData bank;
private AllData ali_tl;
private AllData wx_tl;
private AllData xlx_wx;
private AllData xlx_ali;
private AllData xlx_bank;
@Data

View File

@@ -74,7 +74,7 @@ public class RoomMessageEvent {
private int count;//排麦模式下的人数
private int step ; //1:等待邂逅 2心动连线 3牵手良缘
private int friend_id; //场次id
// private List<FriendInfo.HeartList> list;//交友心动值发生变化
// private List<FriendInfo.HeartList> list;//交友心动值发生变化
private List<UserInfo> list;//交友房麦位发生变化 //推送的事麦上用户信息这里使用了userinfo接收的
private FriendUserBean friend_user;//这是推送过来需要卡关系的数据

View File

@@ -26,6 +26,7 @@ public class BlindBoxBean {
private int is_xlh; ///是否开启巡乐会 0 关闭 1 开启
private Object xlh_data;
private List<GiftBean> gift_list;
private String end_time;//巡乐会结束时间
private GiveGift give_homeowner_gift;//房主礼物
private GiveGift locking_gift;//锁定礼物
@@ -95,6 +96,14 @@ public class BlindBoxBean {
}
}
}
Object endTime = map.get("end_time");
if (endTime != null) {
if (endTime instanceof String){
xlhData.setEnd_time(endTime.toString());
}else {
xlhData.setEnd_time(endTime.toString());
}
}
return xlhData;
}
@@ -118,6 +127,9 @@ public class BlindBoxBean {
if (jsonObject.has("status")) {
xlhData.setStatus(jsonObject.get("status").getAsInt());
}
if (jsonObject.has("end_time")){
xlhData.setEnd_time(jsonObject.get("end_time").getAsString());
}
return xlhData;
}
@@ -126,10 +138,11 @@ public class BlindBoxBean {
}
@Data
public static class XlhData {
private String waiting_start_num;//等待开始需要达到的次数
private String start_num;//巡乐会开启需要达到的次数
private int current_num;//当前已抽奖次数
private int status;
private String waiting_start_num;//等待开始需要达到的次数
private String start_num;//巡乐会开启需要达到的次数
private int current_num;//当前已抽奖次数
private int status;
private String end_time;
}
@Data
public static class GiveGift {

View File

@@ -29,6 +29,7 @@ public class RoomInfoResp implements Serializable {
private PkRoomInfo pk_info;
private List<RoomPitBean> song_pit_list;
private FriendInfo friend_info;
private GiftXlh gift_cycle;
//弹出麦位操作弹出
@@ -114,4 +115,18 @@ public class RoomInfoResp implements Serializable {
public boolean isFreedomMode() {
return "1".equals(room_info.getWheat());
}
@Data
public class GiftXlh implements Serializable{
private XlhInfo xlh_info ;
}
@Data
public class XlhInfo implements Serializable{
private String activities_name;
private String icon;
private String xlh_status;
private String end_time;
}
}

View File

@@ -1,7 +1,10 @@
package com.xscm.moduleutil.dialog;
import static com.blankj.utilcode.util.ActivityUtils.startActivity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.TextPaint;
@@ -16,6 +19,7 @@ import androidx.databinding.DataBindingUtil;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.SpanUtils;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.databinding.DialogPolicBinding;
import com.xscm.moduleutil.utils.ARouteConstants;
@@ -42,7 +46,12 @@ public class PolicyDialog extends Dialog {
ClickableSpan clickSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=6" ).withString("title", "用户协议").navigation();
Intent intent = new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=6");
intent.putExtra("title", "用户协议");
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=6" ).withString("title", "用户协议").navigation();
}
@Override
@@ -54,7 +63,12 @@ public class PolicyDialog extends Dialog {
ClickableSpan ysClickSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
Intent intent = new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=4");
intent.putExtra("title", "隐私协议");
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
}
@Override
@@ -63,7 +77,7 @@ public class PolicyDialog extends Dialog {
ds.setUnderlineText(true);
}
};
spanUtils.append("欢迎使用MY语聊\n").append("在使用我们的产品和服务之前,请您先阅读并了解").append("《用户协议》").setClickSpan(clickSpan).append("").append("《隐私协议》").setClickSpan(ysClickSpan).append("。我们将严格按照上述协议为" +
spanUtils.append("欢迎使用秘地\n").append("在使用我们的产品和服务之前,请您先阅读并了解").append("《用户协议》").setClickSpan(clickSpan).append("").append("《隐私协议》").setClickSpan(ysClickSpan).append("。我们将严格按照上述协议为" +
"您提供服务,保护您的信息安全,点" +
"击“同意”即表示您已阅读并同意全部" +
"条款,可以继续使用我们的产品和服" +

View File

@@ -1,6 +1,9 @@
package com.xscm.moduleutil.dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -182,7 +185,15 @@ public class RechargeDialogFragment extends BaseMvpDialogFragment<RechargeDialog
if (bindType.getWx_tl().getIs_pay_open().equals("1")) {
allData.add(bindType.getWx_tl());
}
if (bindType.getXlx_wx().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_wx());
}
if (bindType.getXlx_ali().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_ali());
}
if (bindType.getXlx_bank().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_bank());
}
bindTypeAdapter.setNewData(allData);
}
@@ -195,6 +206,22 @@ public class RechargeDialogFragment extends BaseMvpDialogFragment<RechargeDialog
IWXAPI wxapi = WXAPIFactory.createWXAPI(getContext(), CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
PaymentUtil.payWxMiniProgram2(wxapi,appPay);
}else if (appPay.getXlx()!=null){
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", appPay.getXlx()).navigation();
openInExternalBrowser(appPay.getXlx());
}
}
private void openInExternalBrowser(String url) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
// 确保在新任务中打开
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtils.showShort("无法找到浏览器应用");
}
}

View File

@@ -1,6 +1,7 @@
package com.xscm.moduleutil.dialog;
import android.content.Context;
import android.content.Intent;
import android.view.Window;
import android.view.WindowManager;
@@ -9,6 +10,7 @@ import androidx.annotation.NonNull;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.ScreenUtils;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.TeenagerInfo;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
@@ -55,7 +57,11 @@ public class YouthModelDialog extends BaseDialog<IndexDialogYouthModelBinding> {
// } else {
// ARouter.getInstance().build(ARouteConstants.SET_YOUTH_PWD_ACTIVITY).withInt("type", SetYouthPasswordActivity.SET_TYPE).navigation();
// }
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken()).navigation();
Intent intent = new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken());
getContext().startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken()).navigation();
dismiss();
});

View File

@@ -606,6 +606,7 @@ public class GiftLotteryDialog extends BaseMvpDialogFragment<GiftLotteryPresente
// 停止之前的定时器
stopFastAnimate();
stopPlay();
Log.e("isOpenSound===","isOpenSound111"+isOpenSound);
if (isOpenSound) {
// 假设此处有播放音乐的逻辑

View File

@@ -0,0 +1,131 @@
package com.xscm.moduleutil.http;
import android.content.Context;
import android.widget.Toast;
import com.blankj.utilcode.util.LogUtils;
import com.xscm.moduleutil.base.CommonAppContext;
import java.io.IOException;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* 通用的API响应处理回调类
* 统一处理所有接口的响应和错误情况
*/
public abstract class ApiResponseCallback<T> implements Callback<BaseModel<T>> {
private Context mContext;
// 构造方法,传入上下文用于显示提示
public ApiResponseCallback(Context context) {
this.mContext = context;
}
@Override
public void onResponse(Call<BaseModel<T>> call, Response<BaseModel<T>> response) {
// 统一处理HTTP响应
if (response.isSuccessful()) {
// 处理200-299范围内的HTTP状态码
BaseModel<T> body = response.body();
if (body != null) {
// 根据code值进行不同处理
switch (body.getCode()) {
case 1: // 接口返回成功
// 业务成功,回调给具体实现
// 即使data为null也调用onSuccess由具体实现决定如何处理null值
onSuccess(body.getData());
break;
case 0: // 接口请求成功但数据错误
// 显示错误信息
// String errorMsg = body.getMsg() != null ? body.getMsg() : "操作失败,请重试";
// showToast(errorMsg);
onFailure(new Exception(body.getMsg()));
break;
case 301: // 登录失效
// 显示错误信息并退出应用
// String loginErrorMsg = body.getMsg() != null ? body.getMsg() : "登录已失效,请重新登录";
showToast(body.getMsg());
try {
// 发送退出登录事件
// EventBus.getDefault().post(new com.xscm.moduleutil.event.LogOutEvent());
// 清除登录信息
CommonAppContext.getInstance().clearLoginInfo();
// 跳转到登录页面
// android.content.Intent intent = new android.content.Intent(CommonAppContext.getInstance(), Class.forName("com.xscm.midi.LaunchPageActivity"));
// intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK | android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK);
// CommonAppContext.getInstance().startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
onFailure(new Exception(body.getMsg()));
break;
default:
// 其他错误情况
String defaultErrorMsg = body.getMsg() != null ? body.getMsg() : "未知错误";
showToast(defaultErrorMsg);
onFailure(new Exception(defaultErrorMsg));
break;
}
} else {
// 响应体为空的情况
String errorMsg = "获取数据失败,请重试";
showToast(errorMsg);
onFailure(new Exception(errorMsg));
}
} else {
// 处理HTTP错误状态码
String errorInfo;
try {
if (response.errorBody() != null) {
errorInfo = response.errorBody().string();
// 可以在这里统一解析错误响应体
} else {
errorInfo = "请求失败,状态码:" + response.code();
}
} catch (IOException e) {
errorInfo = "请求失败,状态码:" + response.code();
e.printStackTrace();
}
showToast("");
onFailure(new Exception(errorInfo));
}
}
@Override
public void onFailure(Call<BaseModel<T>> call, Throwable t) {
// 统一处理网络异常
String errorMsg;
if (t instanceof IOException) {
// errorMsg = "网络异常,请检查网络连接";
} else {
// errorMsg = "请求处理失败,请重试";
}
showToast("");
// 回调给具体实现处理
onFailure(t);
}
// 显示提示信息
private void showToast(String message) {
if (mContext != null) {
Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
}
}
// 业务成功时的回调,由具体接口实现
public abstract void onSuccess(T data);
// 错误时的回调,可选实现
public void onFailure(Throwable t) {
// 可以留空,由子类选择性实现
LogUtils.e("接口错误:",t);
}
}

View File

@@ -5,6 +5,7 @@ import com.xscm.moduleutil.bean.AlbumBean;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.AppUpdateModel;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.BlackUserBean;
import com.xscm.moduleutil.bean.CharmRankingResp;
@@ -165,9 +166,13 @@ public interface ApiServer {
@GET(Constants.GET_WITHDRAWAL_LIST)
Observable<BaseModel<List<WithdrawalBean>>> withdrawalList(@Query("page") String page, @Query("page_limit") String page_limit, @Query("search_stime") String search_stime, @Query("search_etime") String search_etime);
@FormUrlEncoded
@POST(Constants.POST_BIND_DETAIL)
Call<BaseModel<BindDetail>> bindDetai(@Field("user_id") String user_id, @Field("type") String type);
@FormUrlEncoded
@POST(Constants.POST_MESSAGE_LIST)
Observable<BaseModel<List<NewsMessageList>>> getMessagetitle(@Field("type") String type, @Field("page") String page, @Field("page_limit") String page_limit);
Call<BaseModel<List<NewsMessageList>>> getMessagetitle(@Field("type") String type, @Field("page") String page, @Field("page_limit") String page_limit);
@FormUrlEncoded
@POST(Constants.POST_ROOM_RANK)

View File

@@ -0,0 +1,74 @@
package com.xscm.moduleutil.http;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import com.blankj.utilcode.util.ToastUtils;
import com.xscm.moduleutil.base.CommonAppContext;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class BusinessAwareConverterFactory extends Converter.Factory {
private final GsonConverterFactory originalFactory;
private final Context context;
public BusinessAwareConverterFactory(Context context) {
this.context = context;
this.originalFactory = GsonConverterFactory.create();
}
@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type,
Annotation[] annotations,
Retrofit retrofit) {
final Converter<ResponseBody, ?> delegate =
originalFactory.responseBodyConverter(type, annotations, retrofit);
return new Converter<ResponseBody, Object>() {
@Override
public Object convert(ResponseBody value) throws IOException {
// 先读取响应字符串检查业务状态码
String responseString = value.string();
try {
JSONObject jsonObject = new JSONObject(responseString);
int code = jsonObject.getInt("code");
String msg = jsonObject.getString("msg");
if (code == 301) {
handleForceLogout();
ToastUtils.showShort(msg);
}
// 重新构建 ResponseBody 供原始转换器使用
ResponseBody newValue = ResponseBody.create(value.contentType(), responseString);
return delegate.convert(newValue);
} catch (JSONException e) {
throw new IOException("");
}
}
private void handleForceLogout() {
new Handler(Looper.getMainLooper()).post(() -> {
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
});
}
};
}
}

View File

@@ -19,6 +19,7 @@ import com.xscm.moduleutil.bean.AlbumBean;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.bean.AppUpdateModel;
import com.xscm.moduleutil.bean.BannerModel;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.BlackUserBean;
import com.xscm.moduleutil.bean.CharmRankingResp;
@@ -192,6 +193,7 @@ public class RetrofitClient {
private Retrofit provideRetrofit(OkHttpClient client) {
return new Retrofit.Builder()
.addConverterFactory(new BusinessAwareConverterFactory(CommonAppContext.getInstance()))
.addConverterFactory(MyConverterFactory.create())/**/
// .addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
@@ -233,7 +235,29 @@ public class RetrofitClient {
}
return INSTANCE;
}
/**
* 检查网络连接状态
* @return true表示网络可用false表示网络不可用
*/
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) CommonAppContext.getInstance()
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
return false;
}
/**
* 网络不可用时的统一处理方法
* @param observer BaseObserver对象
* @param <T> 泛型类型
*/
private <T> void handleNetworkUnavailable(BaseObserver<T> observer) {
ToastUtils.showShort("网络不可用,请检查网络设置");
observer.onError(new Throwable("网络不可用,请检查网络设置"));
}
public <T> T createApiClient(Class<T> apiClientClass) {
return mRetrofit.create(apiClientClass);
}
@@ -257,6 +281,7 @@ public class RetrofitClient {
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
if (response.code() == 200) {
BaseModel<String> body = response.body();
observer.onNext(body.getMsg());
}
@@ -366,6 +391,7 @@ public class RetrofitClient {
sApiServer.exchangeCoin(earnings_num).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
onNextRetu(response, observer);
}
@@ -399,7 +425,7 @@ public class RetrofitClient {
public void onResponse(Call<BaseModel<FirstChargeBean>> call, Response<BaseModel<FirstChargeBean>> response) {
if (response.code() == 200) {
BaseModel<FirstChargeBean> baseModel = response.body();
if (baseModel != null) {
if (baseModel.getCode()==1){
observer.onNext(baseModel.getData());
} else {
ToastUtils.showShort("获取数据失败");
@@ -450,13 +476,51 @@ public class RetrofitClient {
}
public void getMessagetitle(String type, String page, String page_limit, BaseObserver<List<NewsMessageList>> observer) {
sApiServer.getMessagetitle(type, page, page_limit).compose(new DefaultTransformer<>()).subscribe(observer);
sApiServer.getMessagetitle(type, page, page_limit).enqueue(new Callback<BaseModel<List<NewsMessageList>>>() {
@Override
public void onResponse(Call<BaseModel<List<NewsMessageList>>> call, Response<BaseModel<List<NewsMessageList>>> response) {
if (response.code() == 200){
BaseModel<List<NewsMessageList>> baseModel = response.body();
if (baseModel.getCode()==1){
observer.onNext(baseModel.getData());
}else {
ToastUtils.showShort(baseModel.getMsg());
}
}
}
@Override
public void onFailure(Call<BaseModel<List<NewsMessageList>>> call, Throwable t) {
}
});
}
public void withdrawalList(String page, String page_limit, String search_stime, String search_etime, BaseObserver<List<WithdrawalBean>> observer) {
sApiServer.withdrawalList(page, page_limit, search_stime, search_etime).compose(new DefaultTransformer<>()).subscribe(observer);
}
public void bindDetai(String userId, String type,BaseObserver<BindDetail> observer){
sApiServer.bindDetai(userId, type).enqueue(new Callback<BaseModel<BindDetail>>() {
@Override
public void onResponse(Call<BaseModel<BindDetail>> call, Response<BaseModel<BindDetail>> response) {
if (response.code() == 200){
BaseModel<BindDetail> baseModel = response.body();
if (baseModel.getCode()==1){
observer.onNext(baseModel.getData());
}else {
observer.onNext(null);
}
}
}
@Override
public void onFailure(Call<BaseModel<BindDetail>> call, Throwable t) {
t.printStackTrace();
}
});
}
public void getRoomRank(String roomId, String type, String time_type, String page, String page_limit, BaseObserver<List<CharmRankingResp>> observer) {
// sApiServer.getRoomRank(roomId, type, time_type, page, page_limit).compose(new DefaultTransformer<>()).subscribe(observer);
sApiServer.getRoomRank(roomId, type, time_type, page, page_limit).enqueue(new Callback<BaseModel<List<CharmRankingResp>>>() {
@@ -1067,6 +1131,8 @@ public class RetrofitClient {
BaseModel<List<BlackUserBean>> baseModel = response.body();
if (baseModel.getCode() == 1) {
observer.onNext(baseModel.getData());
}else {
ToastUtils.showShort(baseModel.getMsg());
}
}
}
@@ -1086,6 +1152,8 @@ public class RetrofitClient {
BaseModel<List<BlackUserBean>> baseModel = response.body();
if (baseModel.getCode() == 1) {
observer.onNext(baseModel.getData());
}else {
ToastUtils.showShort(baseModel.getMsg());
}
}
}
@@ -1105,6 +1173,8 @@ public class RetrofitClient {
BaseModel<List<BlackUserBean>> baseModel = response.body();
if (baseModel.getCode() == 1) {
observer.onNext(baseModel.getData());
}else {
ToastUtils.showShort(baseModel.getMsg());
}
}
}
@@ -1124,6 +1194,8 @@ public class RetrofitClient {
BaseModel<List<BlackUserBean>> baseModel = response.body();
if (baseModel.getCode() == 1) {
observer.onNext(baseModel.getData());
}else {
ToastUtils.showShort(baseModel.getMsg());
}
}
}
@@ -1254,7 +1326,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<List<MyRoomBean>>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("获取房间列表失败", t);
}
});
}
@@ -1298,7 +1371,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<List<TopRoom>>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("getTopRooms", t);
}
});
}
@@ -1700,12 +1774,17 @@ public class RetrofitClient {
});
}
public void roomGetIn(String roomId, String
password, BaseObserver<RoomInfoResp> observer) {
public void roomGetIn(String roomId, String password, BaseObserver<RoomInfoResp> observer) {
if (!isNetworkAvailable()) {
handleNetworkUnavailable(observer);
CommonAppContext.getInstance().isRoomJoininj=false;
return;
}
sApiServer.roomGetIn(roomId, password).enqueue(new Callback<BaseModel<RoomInfoResp>>() {
@Override
public void onResponse(Call<BaseModel<RoomInfoResp>> call, Response<BaseModel<RoomInfoResp>> response) {
CommonAppContext.getInstance().isRoomJoininj=false;
if (response.code() == 200) {
BaseModel<RoomInfoResp> roomInfoRespBaseModel = response.body();
if (roomInfoRespBaseModel.getCode() == 1) {
@@ -1718,7 +1797,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<RoomInfoResp>> call, Throwable t) {
MessageListenerSingleton.getInstance().quitGroup(roomId);
CommonAppContext.getInstance().isRoomJoininj=false;
}
});
}
@@ -1779,7 +1859,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<List<MyCpRoom>>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("myCpRoom", t);
}
});
}
@@ -1846,8 +1927,7 @@ public class RetrofitClient {
});
}
public void appPay(String user_id, String money, String coin, String
type, BaseObserver<AppPay> observer) {
public void appPay(String user_id, String money, String coin, String type, BaseObserver<AppPay> observer) {
sApiServer.appPay(user_id, money, coin, type).enqueue(new Callback<BaseModel<AppPay>>() {
@Override
public void onResponse(Call<BaseModel<AppPay>> call, Response<BaseModel<AppPay>> response) {
@@ -1855,13 +1935,21 @@ public class RetrofitClient {
BaseModel<AppPay> appPayBaseModel = response.body();
if (appPayBaseModel.getCode() == 1) {
observer.onNext(appPayBaseModel.getData());
}else if (appPayBaseModel.getCode() == 0){
ToastUtils.showShort(appPayBaseModel.getMsg());
}else if (appPayBaseModel.getCode() == 301){
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
public void onFailure(Call<BaseModel<AppPay>> call, Throwable t) {
t.printStackTrace();
}
});
}
@@ -1904,8 +1992,7 @@ public class RetrofitClient {
});
}
public void bind(String userId, String type, String alipayAccount, String
bank_card_number, String bank_card, String open_bank, BaseObserver<String> observer) {
public void bind(String userId, String type, String alipayAccount, String bank_card_number, String bank_card, String open_bank, BaseObserver<String> observer) {
sApiServer.bind(userId, type, alipayAccount, bank_card_number, bank_card, open_bank).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
@@ -1978,8 +2065,7 @@ public class RetrofitClient {
}
// TODO: 2025/3/15 获取主持人列表
public void getHostList(String roomId, String
type, BaseObserver<List<HostBean>> observer) {
public void getHostList(String roomId, String type, BaseObserver<List<HostBean>> observer) {
sApiServer.getHostList(roomId, type).enqueue(new Callback<BaseModel<List<HostBean>>>() {
@Override
public void onResponse(Call<BaseModel<List<HostBean>>> call, Response<BaseModel<List<HostBean>>> response) {
@@ -1998,8 +2084,7 @@ public class RetrofitClient {
});
}
public void getSearch(String keyWord, String
type, BaseObserver<List<RoomSearchResp>> observer) {
public void getSearch(String keyWord, String type, BaseObserver<List<RoomSearchResp>> observer) {
sApiServer.getSearch(keyWord, type).enqueue(new Callback<BaseModel<List<RoomSearchResp>>>() {
@Override
public void onResponse(Call<BaseModel<List<RoomSearchResp>>> call, Response<BaseModel<List<RoomSearchResp>>> response) {
@@ -2038,8 +2123,7 @@ public class RetrofitClient {
});
}
public void getCharmList(String roomId, String stime, String etime, String
p, BaseObserver<RoomDetails> observer) {
public void getCharmList(String roomId, String stime, String etime, String p, BaseObserver<RoomDetails> observer) {
sApiServer.getCharmList(roomId, stime, etime, p).enqueue(new Callback<BaseModel<RoomDetails>>() {
@Override
public void onResponse(Call<BaseModel<RoomDetails>> call, Response<BaseModel<RoomDetails>> response) {
@@ -2098,26 +2182,22 @@ public class RetrofitClient {
});
}
public void roomAuctionJoin(String auctionId, String userId, String giftId, String
num, String type, BaseObserver<RoomAuction.AuctionListBean> observer) {
sApiServer.roomAuctionJoin(auctionId, userId, giftId, num, type).enqueue(new Callback<BaseModel<RoomAuction.AuctionListBean>>() {
public void roomAuctionJoin(String auctionId, String userId, String giftId, String num, String type, BaseObserver<RoomAuction.AuctionListBean> observer) {
sApiServer.roomAuctionJoin(auctionId, userId, giftId, num, type).enqueue(new ApiResponseCallback<RoomAuction.AuctionListBean>(CommonAppContext.getInstance()) {
@Override
public void onResponse(Call<BaseModel<RoomAuction.AuctionListBean>> call, Response<BaseModel<RoomAuction.AuctionListBean>> response) {
if (response.code() == 200) {
BaseModel<RoomAuction.AuctionListBean> baseModel = response.body();
if (baseModel.getCode() == 1) {
observer.onNext(baseModel.getData());
} else {
ToastUtils.showShort(baseModel.getMsg());
}
public void onSuccess(RoomAuction.AuctionListBean data) {
// 确保即使data为null也能够正确传递给observer
if (data == null){
data = new RoomAuction.AuctionListBean();
}
observer.onNext(data);
}
@Override
public void onFailure(Call<BaseModel<RoomAuction.AuctionListBean>> call, Throwable t) {
t.printStackTrace();
public void onFailure(Throwable t) {
super.onFailure(t);
RoomAuction.AuctionListBean yy=new RoomAuction.AuctionListBean();
observer.onNext(yy);
}
});
}
@@ -2132,6 +2212,7 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
LogUtils.e("auction",t);
}
});
}
@@ -2149,7 +2230,7 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
}
});
}
@@ -2163,7 +2244,7 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
}
});
}
@@ -2177,7 +2258,7 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
}
});
}
@@ -2193,7 +2274,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("editRoom",t);
}
});
}
@@ -2208,7 +2290,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("setPresidedRatio",t);
}
});
}
@@ -2224,7 +2307,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("postHostAdd",t);
}
});
}
@@ -2239,7 +2323,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("reward_zone",t);
}
});
}
@@ -2253,7 +2338,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("upSong",t);
}
});
}
@@ -2267,7 +2353,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("clearApply",t);
}
});
}
@@ -2308,7 +2395,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("helpApply",t);
}
});
}
@@ -2323,7 +2411,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("setRoomApply",t);
}
});
}
@@ -2338,13 +2427,13 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("giveGift",t);
}
});
}
public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String
type, String pit_number, String heart_id, BaseObserver<String> observer) {
public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id, BaseObserver<String> observer) {
sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
@@ -2353,7 +2442,9 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("解析失败:roomGift", t.toString());
observer.onNext( "");
}
});
}
@@ -2531,8 +2622,7 @@ public class RetrofitClient {
});
}
public void setMutePit(String roomId, String user_id, String
isMute, BaseObserver<String> observer) {
public void setMutePit(String roomId, String user_id, String isMute, BaseObserver<String> observer) {
sApiServer.setMutePit(roomId, user_id, isMute).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
@@ -2541,7 +2631,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("setMutePit", t.toString());
}
});
}
@@ -2556,7 +2647,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("setLockPit", t.toString());
}
});
}
@@ -2570,7 +2662,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("downPit", t.toString());
}
});
}
@@ -2584,7 +2677,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("kickOutRoom", t.toString());
}
});
}
@@ -2598,7 +2692,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("applySong", t.toString());
}
});
}
@@ -2612,7 +2707,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("agreeSong", t.toString());
}
});
}
@@ -2626,7 +2722,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("endSong", t.toString());
}
});
}
@@ -2721,6 +2818,7 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
LogUtils.e("changeSong", t.toString());
}
});
}
@@ -2735,7 +2833,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("hostUserPit", t.toString());
}
});
}
@@ -2788,7 +2887,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("topRelationCard", t.toString());
}
});
}
@@ -2802,7 +2902,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("deleteRelationCard", t.toString());
}
});
}
@@ -2858,7 +2959,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("setUserDecorate", t.toString());
}
});
}
@@ -2890,7 +2992,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("publishZone", t.toString());
}
});
}
@@ -2904,7 +3007,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("likeZone", t.toString());
}
});
}
@@ -2918,7 +3022,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("deleteComment", t.toString());
}
});
@@ -2934,7 +3039,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("deleteZone", t.toString());
}
});
}
@@ -2949,7 +3055,9 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("commentZone", t.toString());
}
});
}
@@ -2964,7 +3072,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("clearLoginInfo", t.toString());
}
});
}
@@ -2979,13 +3088,13 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("cancel", t.toString());
}
});
}
public void getPostData(String new_password, String mobile, String code, String
userId, BaseObserver<String> observer) {
public void getPostData(String new_password, String mobile, String code, String userId, BaseObserver<String> observer) {
sApiServer.getPostData(new_password, mobile, code, userId).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
@@ -3018,7 +3127,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("forgotPassword", t.toString());
}
});
}
@@ -3033,7 +3143,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("createAlbum", t.toString());
}
});
}
@@ -3048,7 +3159,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("editAlbum", t.toString());
}
});
}
@@ -3065,7 +3177,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("editUserInfo", t.toString());
}
});
} else {
@@ -3078,7 +3191,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("editUserBg", t.toString());
}
});
}
@@ -3093,7 +3207,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("userGuanz", t.toString());
}
});
}
@@ -3107,7 +3222,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
t.printStackTrace();
}
});
}
@@ -3122,14 +3238,13 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
t.printStackTrace();
}
});
}
public void userOnlineStatus(String user_id, String
roomId, BaseObserver<List<UserOnlineStatusBean>> observer) {
public void userOnlineStatus(String user_id, String roomId, BaseObserver<List<UserOnlineStatusBean>> observer) {
sApiServer.userOnlineStatus(user_id, roomId).enqueue(new Callback<BaseModel<List<UserOnlineStatusBean>>>() {
@Override
public void onResponse(Call<BaseModel<List<UserOnlineStatusBean>>> call, Response<BaseModel<List<UserOnlineStatusBean>>> response) {
@@ -3173,7 +3288,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("removeBlackList", t.toString());
}
});
}
@@ -3188,7 +3304,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("upAddAlbum", t.toString());
}
});
}
@@ -3202,7 +3319,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("moveAlbum", t.toString());
}
});
}
@@ -3231,7 +3349,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("deleteAlbum", t.toString());
}
});
} else {
@@ -3243,7 +3362,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("deleteAlbum", t.toString());
}
});
}
@@ -3259,7 +3379,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("likeAlbum", t.toString());
}
});
}
@@ -3273,7 +3394,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("getRealNameResult", t.toString());
}
});
}
@@ -3287,7 +3409,8 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("changeRoom", t.toString());
}
});
}
@@ -3301,13 +3424,13 @@ public class RetrofitClient {
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort(t.toString());
// ToastUtils.showShort(t.toString());
LogUtils.e("changeRoomType", t.toString());
}
});
}
public void onNextRetu
(Response<BaseModel<String>> response, BaseObserver<String> observer) {
public void onNextRetu(Response<BaseModel<String>> response, BaseObserver<String> observer) {
if (response.code() == 200) {
BaseModel<String> string = response.body();
if (string != null) {
@@ -3333,8 +3456,7 @@ public class RetrofitClient {
}
/// 获取活动礼物列表
public void getBoxGiftList(String giftBagId, String
roomId, BaseObserver<BlindBoxBean> observer) {
public void getBoxGiftList(String giftBagId, String roomId, BaseObserver<BlindBoxBean> observer) {
sApiServer.getBoxGiftList(giftBagId, roomId).enqueue(new Callback<BaseModel<BlindBoxBean>>() {
@Override
public void onResponse(Call<BaseModel<BlindBoxBean>> call, Response<BaseModel<BlindBoxBean>> response) {
@@ -3465,8 +3587,7 @@ public class RetrofitClient {
});
}
public void xlhMyRecord(String roomId, String page, String
pageSize, BaseObserver<List<GiftBean>> observer) {
public void xlhMyRecord(String roomId, String page, String pageSize, BaseObserver<List<GiftBean>> observer) {
sApiServer.xlhMyRecord(roomId, page, pageSize).enqueue(new Callback<BaseModel<List<GiftBean>>>() {
@Override
public void onResponse(Call<BaseModel<List<GiftBean>>> call, Response<BaseModel<List<GiftBean>>> response) {
@@ -3485,8 +3606,7 @@ public class RetrofitClient {
});
}
public void getAllRecord(String giftBagId, String page, String
pageSize, BaseObserver<List<GiftBean>> observer) {
public void getAllRecord(String giftBagId, String page, String pageSize, BaseObserver<List<GiftBean>> observer) {
sApiServer.getAllRecord(giftBagId, page, pageSize).enqueue(new Callback<BaseModel<List<GiftBean>>>() {
@Override
public void onResponse(Call<BaseModel<List<GiftBean>>> call, Response<BaseModel<List<GiftBean>>> response) {

View File

@@ -21,9 +21,9 @@ public class ARouteConstants {
public static final String CREATED_ROOM = "/modulevocal/CreatedRoomActivity"; //创建房间
public static final String WITHDRAWAL_ACTIVITY = "/modulevocal/WithdrawalActivity"; //提现
public static final String REAL_NAME_ACTIVITY ="/modulevocal/RealNameActivity"; //实名认证
public static final String REAL_NAME_ACTIVITY2 ="/app/RealNameActivity"; //实名认证
public static final String H5 ="/moduleutil/WebViewActivity"; //网页
public static final String GIFT_WALL ="/moduleroom/UserGiftWallFragment"; //实名认证
public static final String REAL_NAME_ACTIVITY2 ="/modulevocal/RealNameActivity"; //实名认证
public static final String H5 ="/moduleUtil/WebViewActivity"; //网页
// public static final String GIFT_WALL ="/moduleroom/UserGiftWallFragment"; //实名认证
public static final String RECHARGE_ACTIVITY ="/modulevocal/RechargeActivity"; //实名认证

View File

@@ -18,7 +18,7 @@ import java.util.Map;
*/
public class ColorManager {
private static ColorManager instance;
private String primaryColor = "#6C49E4"; // 默认主题色
private String primaryColor = "#FC7285"; // 默认主题色
private String buttonColor = "#FFFFFF"; // 默认按钮色
// 监听器列表,用于通知颜色变化
@@ -71,7 +71,7 @@ public class ColorManager {
try {
return Color.parseColor(primaryColor);
} catch (Exception e) {
return Color.parseColor("#6C49E4"); // 默认颜色
return Color.parseColor("#FC7285"); // 默认颜色
}
}

View File

@@ -0,0 +1,41 @@
package com.xscm.moduleutil.utils;
import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
public class CrashHandler implements Thread.UncaughtExceptionHandler {
private static CrashHandler instance;
private Thread.UncaughtExceptionHandler defaultHandler;
private CrashHandler(Context context) {
defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
}
public static void init(Context context) {
if (instance == null) {
instance = new CrashHandler(context);
Thread.setDefaultUncaughtExceptionHandler(instance);
}
}
@Override
public void uncaughtException(Thread t, Throwable e) {
// 记录崩溃日志
Log.e("CrashHandler", "未捕获异常: " + e.getMessage());
// 简单处理空指针
if (e instanceof NullPointerException) {
// 重启应用或跳转错误页
restartApp();
} else {
// 交给系统默认处理
defaultHandler.uncaughtException(t, e);
}
}
private void restartApp() {
// 实现应用重启逻辑
ARouter.getInstance().build(ARouteConstants.ME).navigation();
}
}

View File

@@ -356,6 +356,7 @@ public class Constants {
public static final String GET_APP_UPDATE = "/api/Version/get_app_version";//版本更新
public static final String POST_CLEAR_USER_CHARM = "/api/Room/clear_user_charm";//清除魅力值
public static final String POST_MESSAGE_LIST = "/api/UserMessage/get_user_message_list";//消息列表
public static final String POST_BIND_DETAIL = "/api/Bind/bind_detail";//绑定详情
public static final String POST_USER_WALL = "/api/User/user_gift_wall";//礼物墙
public static final String POST_USER_OLINE_STATUS = "/api/Room/user_online_status";//用户在线状态
public static final String DELETE_ROOM_HISTORY = "/api/Room/delete_room_history";//删除历史足迹

View File

@@ -0,0 +1,184 @@
package com.xscm.moduleutil.widget;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.widget.LinearLayout;
import com.blankj.utilcode.util.ScreenUtils;
public class DropViewRoom extends LinearLayout {
private int rightMargin = 0;
private float lastX, lastY;
private int screenWidth;
public DropViewRoom(Context context) {
super(context);
init();
}
public DropViewRoom(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DropViewRoom(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
void init() {
post(new Runnable() {
@Override
public void run() {
//设置初始位置
int sh = ScreenUtils.getScreenHeight();
int sw = ScreenUtils.getScreenWidth()-100;
// setBackgroundResource(R.drawable.bg_home_drop_view);
int y = (int) (0.5f * sh) - getHeight();
int x = sw - getWidth();
setTranslationX(x);
setTranslationY(y);
}
});
}
boolean starDrap = false;
float X1;
float X2;
float Y1;
float Y2;
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (starDrap) return true;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
X1 = event.getX();
Y1 = event.getY();
break;
case MotionEvent.ACTION_MOVE:
X2 = event.getX();//当手指抬起时再次获取屏幕位置的X值
Y2 = event.getY();//同理
Action(X1, X2, Y1, Y2);
break;
}
return starDrap;
}
String TAG = "DropView";
public boolean Action(float X1, float X2, float Y1, float Y2) {
float ComparedX = X2 - X1;//第二次的X坐标的位置减去第一次X坐标的位置代表X坐标上的变化情况
float ComparedY = Y2 - Y1;//同理
//当X坐标的变化量的绝对值大于Y坐标的变化量的绝对值以X坐标的变化情况作为判断依据
//上下左右的判断,都在一条直线上,但手指的操作不可能划直线,所有选择变化量大的方向上的量
//作为判断依据
if (Math.abs(ComparedX) > 30 || Math.abs(ComparedY) > 30) {
Log.i(TAG, "Action: 拖动");
starDrap = true;
// setBackgroundResource(R.drawable.bg_home_drop_view);
return true;
} else {
starDrap = false;
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
// setBackgroundResource(R.drawable.bg_home_drop_view);
setTranslationX(getX() + (event.getX() - X1));
setTranslationY(getY() + (event.getY() - Y1));
X2 = event.getX();
break;
case MotionEvent.ACTION_UP:
starDrap = false;
int sw = ScreenUtils.getScreenWidth();
Log.i(TAG, "onTouchEvent: " + sw + "," + X2);
boolean isR = getTranslationX() + getWidth() / 2 >= sw / 2;//贴边方向
ObjectAnimator anim = ObjectAnimator.ofFloat(this, "translationX", isR ? sw - getWidth()+10 : 0f).setDuration(200);
anim.start();
break;
}
return true;
}
public void doRevealAnimation(View mPuppet, boolean flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int[] vLocation = new int[2];
getLocationInWindow(vLocation);
int centerX = vLocation[0] + getMeasuredWidth() / 2;
int centerY = vLocation[1] + getMeasuredHeight() / 2;
int height = ScreenUtils.getScreenHeight();
int width = ScreenUtils.getScreenWidth();
int maxRradius = (int) Math.hypot(height, width);
Log.e("hei", maxRradius + "");
if (flag) {
mPuppet.setVisibility(VISIBLE);
Animator animator = ViewAnimationUtils.createCircularReveal(mPuppet, centerX, centerY, maxRradius, 0);
animator.setDuration(600);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mPuppet.setVisibility(View.GONE);
}
});
animator.start();
flag = false;
} else {
Animator animator = ViewAnimationUtils.createCircularReveal(mPuppet, centerX, centerY, 0, maxRradius);
animator.setDuration(1000);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
mPuppet.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animator.start();
flag = true;
}
}
}
}

View File

@@ -12,6 +12,7 @@ import android.text.TextUtils;
import com.alipay.sdk.app.PayTask;
import com.blankj.utilcode.util.ToastUtils;
import com.orhanobut.logger.Logger;
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.bean.AppPay;
import com.xscm.moduleutil.event.PayEvent;
@@ -112,4 +113,19 @@ public class PaymentUtil {
}
}
};
public static void payWxMiniProgram2(IWXAPI api, String path) {
if (!api.isWXAppInstalled()) {
ToastUtils.showShort("请安装微信");
return;
}
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_e64a1a89a0ad"; // 填小程序原始id
req.path = "pages/orderDetail/orderDetail?"+path; ////拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
// req.path="pages/orderDetail/orderDetail?appid=00344656&body=user_Recharge_to_chumeng_App&version=12&trxamt=1&notify_url=http://tapp.qxcms.com/api/payment/allinpayNotify&paytype=W06&randomstr=67e6671866f0e&cusid=5647950737575ZK&remark=1&reqsn=20250328529202885800&signtype=RSA&sign=O+DT6XMstf+0F8P3li/PM3lZGgam3fBqs2L6pKXUUVadd9kYiuIrbKxzrGVJ47uPWEIGV2W903nKJY+wqAnoKWvGTMMmuEsU+2gOWnDmp7X58Rw7eDDLjy0TGDxheIlMHwJmg0gOCiHGYoiJB61WQlyX4vvKZy9DOuepqnNPvC2ByeL2Vi8eRi1eqoA9PqmePzhFDz5l/EB1UOm8/XmXv4FKO7b/Im7M9cRNX3tXqbKURr5P7ohj42VF8DoYJYp7eAa3ql1GlYDJIbG+D7NGbPkp8AEKUrAShkMgNpLCnIcAGGlEhW1la8qn+/WVazH7CjUrJvqWcKMafSZcLxmMFA==";
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);
Logger.e("@@@@@","payWxMiniProgram2:"+req.path);
}
}

View File

@@ -101,10 +101,10 @@ public class RoomSingSongWheatView extends BaseWheatView {
mCharmView.setVisibility(GONE);
if (showBoss && TextUtils.equals(WHEAT_BOSS, pitNumber)) {
mIvTagBoss.setVisibility(VISIBLE);
int resId = bean.getIs_lock() == 1 ? R.mipmap.index_img_room_mask : R.drawable.room_ic_wheat_default;
int resId = bean.getIs_lock() == 1 ? R.mipmap.index_img_room_mask : R.mipmap.room_ic_wheat_default;
mRiv.setImageResource(resId);
} else {
mRiv.setImageResource(bean.getIs_lock() == 1 ? R.mipmap.index_img_room_mask : R.drawable.room_ic_wheat_default);
mRiv.setImageResource(bean.getIs_lock() == 1 ? R.mipmap.index_img_room_mask : R.mipmap.room_ic_wheat_default);
}
if (isMute()) {

View File

@@ -1,13 +1,18 @@
package com.xscm.moduleutil.widget;
import android.content.Context;
import android.content.res.Resources;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import com.petterp.floatingx.listener.control.IFxControl;
import com.tencent.liteav.base.Log;
import com.xscm.moduleutil.utils.ImageUtils;
public class ViewUtils {
public static void waitUntilViewReady(@NonNull IFxControl control, @NonNull OnViewCreatedListener listener) {
@@ -33,4 +38,28 @@ public class ViewUtils {
public interface OnViewCreatedListener {
void onViewCreated(@NonNull View view);
}
/**
* 创建ImageView并设置相关参数
*/
public static ImageView createImageView(Context context, String url) {
Resources res = context.getResources();
int imageWidth = res.getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_42);
int imageHeight = res.getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_15);
int rightMargin = res.getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5);
ImageView imageView = new ImageView(context);
// 设置布局参数
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(imageWidth, imageHeight);
params.setMargins(0, 0, rightMargin, 0);
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// 加载图片
ImageUtils.loadHeadCC(url, imageView);
return imageView;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 626 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0dffb9" />
<solid android:color="#FC7285" />
<corners android:radius="@dimen/dp_53"/>
</shape>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0dffb9" />
<solid android:color="#FC7285" />
<corners android:topLeftRadius="0dp" android:topRightRadius="65dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="65dp" />
</shape>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#68DDAE"/>
<solid android:color="#FC7285"/>
<corners android:topLeftRadius="65dp" android:topRightRadius="65dp" android:bottomLeftRadius="65dp" android:bottomRightRadius="65dp" />
</shape>

View File

@@ -1,20 +1,21 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 添加阴影 -->
<!-- 添加阴影 -->
<item android:bottom="0dp">
<shape android:shape="rectangle">
<corners android:radius="0dp"/>
<solid android:color="#c9c9c9"/> <!-- 阴影颜色 -->
<gradient android:startColor="#80000000"
android:endColor="#00000000"
android:angle="90"/>
<corners android:radius="50dp"/>
<solid android:color="#c9c9c9"/>
<!-- 阴影颜色 -->
<gradient android:startColor="#80000000" android:endColor="#00000000" android:angle="90"/>
</shape>
</item>
<!-- 实际的形状 -->
<!-- 实际的形状 -->
<item android:top="0dp" android:left="0dp" android:right="0dp">
<shape android:shape="rectangle">
<corners android:radius="0dp"/>
<solid android:color="#FFFFFF"/> <!-- 设置背景颜色 -->
<stroke android:width="0.1dp" android:color="#c9c9c9"/> <!-- 设置灰色边框 -->
<corners android:radius="50dp"/>
<solid android:color="#FFFFFF"/>
<!-- 设置背景颜色 -->
<stroke android:width="0.1dp" android:color="#c9c9c9"/>
<!-- 设置灰色边框 -->
</shape>
</item>
</layer-list>
</layer-list>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@mipmap/icon_me_trend_select"/>
<item android:state_selected="true" android:drawable="@mipmap/icon_me_trend_select"/>
<item android:state_selected="false" android:drawable="@mipmap/icon_me_trend_unselect"/>
</selector>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="#8865FF" />
<stroke android:width="1dp" android:color="#FC7285" />
<corners android:topLeftRadius="79dp" android:topRightRadius="79dp" android:bottomLeftRadius="79dp" android:bottomRightRadius="79dp" />
</shape>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#BFBFBF"
<item android:color="#333333"
android:state_selected="false" />
<item android:color="#323232"
<item android:color="#FC7285"
android:state_selected="true"/>
</selector>

View File

@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff6c49e4 " />
<solid android:color="#FC7285 " />
<corners
android:bottomLeftRadius="22dp"
android:bottomRightRadius="22dp"

View File

@@ -294,6 +294,7 @@
</LinearLayout>
<LinearLayout
android:visibility="gone"
android:id="@+id/zs"
android:layout_width="0dp"
android:layout_height="match_parent"

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1018 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 976 B

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1020 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 900 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 768 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 972 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 944 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 944 B

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More