首次提交

This commit is contained in:
2025-08-08 11:05:17 +08:00
commit ed7461261c
3842 changed files with 227430 additions and 0 deletions

2
app/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
/release

138
app/build.gradle Normal file
View File

@@ -0,0 +1,138 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.mob.sdk'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
MobSDK {
appKey "3635416c7fadb"
appSecret "c6e8c85e5b8d90220a063cdfda7d0096"
ShareSDK {
loopShare true
devInfo {
Wechat {
appId "wx3858bffeddfb91b8"
appSecret "0b59b165268b63ba6446d1dc55a21f38"
}
QQ {
appId "102046191"
appKey "dT8ZbR4TfdOuBF4e"
}
}
}
}
android {
compileSdkVersion 33
buildToolsVersion "30.0.2"
aaptOptions {
cruncherEnabled = false
useNewCruncher = false
}
defaultConfig {
applicationId "com.yuyin.mier"
minSdkVersion 22
targetSdkVersion 33
versionCode 42
versionName "1.3.3"
dataBinding {
//noinspection DataBindingWithoutKapt
enabled = true
}
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
multiDexEnabled true
ndk {
abiFilters /*'armeabi-v7a',*/ 'arm64-v8a', 'x86' , 'x86_64'
}
}
signingConfigs {
debug {
storeFile file("../mier.jks")
storePassword "123456"
keyAlias "key0"
keyPassword "123456"
}
release {
storeFile file("../mier.jks")
storePassword "123456"
keyAlias "key0"
keyPassword "123456"
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
repositories { flatDir { dirs 'libs' } }
buildTypes {
release {
// minifyEnabled true
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
// 打包 start
applicationVariants.all { variant ->
variant.outputs.all {
def fileName
def date = new Date()
def formattedDate = date.format('yyyyMMdd-HHmmss')
if (variant.buildType.name == 'release') {
fileName = "余音派对-v${variant.mergedFlavor.versionName}_release_${formattedDate}.apk"
} else if (variant.buildType.name == 'debug') {
fileName = "余音派对-v${variant.mergedFlavor.versionName}_debug_${formattedDate}.apk"
}
outputFileName = fileName;
}
}
// 打包 end
dataBinding {
enabled = true
}
lint {
baseline = file("lint-baseline.xml")
}
// 添加AAR元数据兼容性配置
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation fileTree(dir: '../lib_base/libs', include: ['.jar', '.aar'] )
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
api 'com.alibaba:arouter-api:1.4.1'
kapt 'com.alibaba:arouter-compiler:1.2.2'
implementation project(':lib_base')
implementation project(':module_live')
implementation project(':module_community')
implementation project(path:':LocalAar:alipaySdk')
implementation project(path:':LocalAar:paytypelibrary')
}

642
app/lint-baseline.xml Normal file
View File

@@ -0,0 +1,642 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 7.4.2" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.2)" variant="fatal" version="7.4.2">
<issue
id="Instantiatable"
message="`MyRoomActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_my.room.MyRoomActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="60"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`SignedArtistActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_my.auction.SignedArtistActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="66"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`ChangeInviterActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_my.vip.ChangeInviterActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="69"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`VipActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_my.vip.VipActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="72"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`BindPhoneActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_my.set.BindPhoneActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="83"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`LunchActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.LunchActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="86"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`UserGiftWallActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.homepage.UserGiftWallActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="95"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MainActivity` must extend android.app.Activity"
errorLine1=" android:name=&quot;com.yuyin.mier.module_home.MainActivity&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="98"
column="27"/>
</issue>
<issue
id="Instantiatable"
message="`MoneyMainActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.MoneyMainActivity&quot; /> &lt;!-- &lt;activity android:name=&quot;com.yuyin.gouniyuyin_20220109.module_my.log.duihuan.DuiHuanLogActivity&quot; /> -->"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="100"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`ZhuanZengLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.log.zhuanzeng.ZhuanZengLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="102"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`BindAliActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.bindali.BindAliActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="103"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TiXianActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.tixian.TiXianActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="104"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GiftLogSubActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.giftlog.sub.GiftLogSubActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="105"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GiftLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.giftlog.GiftLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="106"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`ModifyDataActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.edituser.ModifyDataActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="107"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`FeedBackActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.feedback.FeedBackActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="108"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`PayPsActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.payps.PayPsActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="109"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`SetActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.set.SetActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="110"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`ShouCangRoomActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.shoucang.ShouCangRoomActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="111"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`UserHomePageActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.homepage.UserHomePageActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="113"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`DengJiActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.dengji.DengJiActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="114"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`SearchResultActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.search.SearchResultActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="115"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`SearchHisActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.search.SearchHisActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="116"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`RealNameActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.real_name.RealNameActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="117"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`BlackListActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_home.tab.xiaoxi.black.BlackListActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="118"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MyZhuangBanActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.zhuangban.MyZhuangBanActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="123"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TeQuanActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.tequan.TeQuanActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="124"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`DuiHuanActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.zuan.DuiHuanActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="125"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`BindAliActivity2` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.bindali2.BindAliActivity2&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="126"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`PassActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.pass.PassActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="127"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`AboutActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.set.AboutActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="128"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`YaoQingActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.YaoQingActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="129"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MyZhuangBanShangChengActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.zhuangban.MyZhuangBanShangChengActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="133"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`ChongZhiActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.chongzhi.ChongZhiActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="161"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MessageOfficeActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_home.tab.xiaoxi.xitong.MessageOfficeActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="162"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GHMainActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.gh.main.GHMainActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="163"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GHHomeActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.gh.home.GHHomeActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="164"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GHSQActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.gh.shenqing.GHSQActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="165"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`BindZLActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_login.ui.bindZL.BindZLActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="166"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`JiFenLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.log.jifen.JiFenLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="167"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`QianLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.log.qian.QianLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="168"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`FriendListActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.zhuangban.FriendListActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="169"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MoneyDetailActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.MoneyDetailActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="170"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`PeerageActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.peerage.PeerageActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="171"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TiXianLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.log.tixian.TiXianLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="172"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`DuiHuanLogActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.log.duihuan.DuiHuanLogActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="173"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`CPActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.cp.CPActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="174"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`LogoutActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.set.LogoutActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="175"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TeenModeActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_home.tab.home.teen.TeenModeActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="176"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TeenModeChangeActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_home.tab.home.teen.TeenModeChangeActivity&quot; />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="177"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`MoneyContainerActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.zuan.MoneyContainerActivity&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="178"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GongHuiDeatileActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.gh.deatile.GongHuiDeatileActivity&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="179"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`GHBuTieActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.gh.deatile.GHBuTieActivity&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="180"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`CPRoomActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_home.cproom.CPRoomActivity&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="181"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`WxKeFuAt` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.set.WxKeFuAt&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="182"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TiXianNewActivity` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.tixian.TiXianNewActivity&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="183"
column="33"/>
</issue>
<issue
id="Instantiatable"
message="`TxDeatileAt` must extend android.app.Activity"
errorLine1=" &lt;activity android:name=&quot;com.yuyin.mier.module_my.money.tixian.TxDeatileAt&quot;/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/AndroidManifest.xml"
line="184"
column="33"/>
</issue>
<issue
id="ExpiredTargetSdkVersion"
message="Google Play requires that apps target API level 31 or higher.&#xA;"
errorLine1=" targetSdkVersion 30"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="build.gradle"
line="36"
column="9"/>
</issue>
</issues>

22
app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,22 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class io.agora.**{*;}

View File

@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.yuyin.mier">
<queries>
<package android:name="com.tencent.mm" />
<package android:name="com.eg.android.AlipayGphone" /> <!-- 支付宝 -->
</queries> <!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- The Agora SDK requires Bluetooth permissions in case users are using Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" /> <!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 获取设备信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取MAC地址 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读写sdcardstorage等等 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 允许程序录制音频 -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application
android:name="com.yuyin.lib_base.App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher_app"
android:label="@string/app_name"
android:largeHeap="true"
android:requestLegacyExternalStorage="true"
android:resizeableActivity="false"
android:roundIcon="@mipmap/ic_launcher_app"
android:supportsRtl="true"
android:theme="@style/AppTheme_MAIN"
android:usesCleartextTraffic="true"
tools:replace="android:icon,android:theme,android:allowBackup"
tools:targetApi="n">
<activity
android:name="com.yuyin.mier.module_my.room.MyRoomActivity"
android:exported="true" />
<activity
android:name="com.yuyin.mier.module_login.ui.ForgetActivity"
android:exported="true" />
<activity
android:name="com.yuyin.mier.module_my.auction.SignedArtistActivity"
android:exported="true" />
<activity
android:name="com.yuyin.mier.module_my.vip.ChangeInviterActivity"
android:exported="true" />
<activity
android:name="com.yuyin.mier.module_my.vip.VipActivity"
android:exported="true" />
<meta-data
android:name="design_width_in_dp"
android:value="375" />
<meta-data
android:name="design_height_in_dp"
android:value="812" />
<activity
android:name="com.yuyin.mier.module_my.set.BindPhoneActivity"
android:exported="true" />
<activity
android:name="com.yuyin.mier.LunchActivity"
android:label="@string/app_name"
android:exported="true"
android:theme="@style/main_SplashThemeImage">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.yuyin.mier.module_my.homepage.UserGiftWallActivity" />
<activity android:name="com.yuyin.mier.module_login.ui.ModuleLoginMainActivity" />
<activity
android:name="com.yuyin.mier.module_home.MainActivity"
android:configChanges="fontScale" />
<activity android:name="com.yuyin.mier.module_my.money.MoneyMainActivity" /> <!-- <activity android:name="com.yuyin.gouniyuyin_20220109.module_my.log.duihuan.DuiHuanLogActivity" /> -->
<!-- <activity android:name="com.yuyin.gouniyuyin_20220109.module_my.log.tixian.TiXianLogActivity" /> -->
<activity android:name="com.yuyin.mier.module_my.log.zhuanzeng.ZhuanZengLogActivity" />
<activity android:name="com.yuyin.mier.module_my.money.bindali.BindAliActivity" />
<activity android:name="com.yuyin.mier.module_my.money.tixian.TiXianActivity" />
<activity android:name="com.yuyin.mier.module_my.giftlog.sub.GiftLogSubActivity" />
<activity android:name="com.yuyin.mier.module_my.giftlog.GiftLogActivity" />
<activity android:name="com.yuyin.mier.module_my.edituser.ModifyDataActivity" />
<activity android:name="com.yuyin.mier.module_my.feedback.FeedBackActivity" />
<activity android:name="com.yuyin.mier.module_my.payps.PayPsActivity" />
<activity android:name="com.yuyin.mier.module_my.set.SetActivity" />
<activity android:name="com.yuyin.mier.module_my.shoucang.ShouCangRoomActivity" />
<!-- <activity android:name=".module_my.followfans.FollowFansActivity" />-->
<activity android:name="com.yuyin.mier.module_my.homepage.UserHomePageActivity" />
<activity android:name="com.yuyin.mier.module_my.dengji.DengJiActivity" />
<activity android:name="com.yuyin.mier.search.SearchResultActivity" />
<activity android:name="com.yuyin.mier.search.SearchHisActivity" />
<activity android:name="com.yuyin.mier.real_name.RealNameActivity" />
<activity android:name="com.yuyin.mier.module_home.tab.xiaoxi.black.BlackListActivity" />
<!-- <activity-->
<!-- android:name=".com.yuyin.lib_base.MessageActivity"-->
<!-- android:screenOrientation="portrait"-->
<!-- android:windowSoftInputMode="stateHidden|adjustResize" />-->
<activity android:name="com.yuyin.mier.module_my.zhuangban.MyZhuangBanActivity" />
<activity android:name="com.yuyin.mier.module_my.tequan.TeQuanActivity" />
<activity android:name="com.yuyin.mier.module_my.money.zuan.DuiHuanActivity" />
<activity android:name="com.yuyin.mier.module_my.money.bindali2.BindAliActivity2" />
<activity android:name="com.yuyin.mier.module_my.pass.PassActivity" />
<activity android:name="com.yuyin.mier.module_my.set.AboutActivity" />
<activity android:name="com.yuyin.mier.module_my.YaoQingActivity" />
<activity
android:name="com.yuyin.mier.module_my.zhuangban.MyZhuangBanActivity"
tools:ignore="DuplicateActivity" />
<activity android:name="com.yuyin.mier.module_my.zhuangban.MyZhuangBanShangChengActivity" />
<activity
android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:screenOrientation="behind" />
<activity-alias
android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:screenOrientation="behind"
android:targetActivity="com.chuanglan.shanyan_sdk.view.CmccLoginActivity" />
<activity
android:name="com.chuanglan.shanyan_sdk.view.ShanYanOneKeyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:screenOrientation="behind" />
<activity
android:name="com.chuanglan.shanyan_sdk.view.CTCCPrivacyProtocolActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:screenOrientation="behind" />
<activity
android:name="com.yuyin.mier.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop" />
<activity android:name="com.yuyin.mier.module_my.chongzhi.ChongZhiActivity" />
<activity android:name="com.yuyin.mier.module_home.tab.xiaoxi.xitong.MessageOfficeActivity" />
<activity android:name="com.yuyin.mier.module_my.gh.main.GHMainActivity" />
<activity android:name="com.yuyin.mier.module_my.gh.home.GHHomeActivity" />
<activity android:name="com.yuyin.mier.module_my.gh.shenqing.GHSQActivity" />
<activity android:name="com.yuyin.mier.module_login.ui.bindZL.BindZLActivity" />
<activity android:name="com.yuyin.mier.module_my.log.jifen.JiFenLogActivity" />
<activity android:name="com.yuyin.mier.module_my.log.qian.QianLogActivity" />
<activity android:name="com.yuyin.mier.module_my.zhuangban.FriendListActivity" />
<activity android:name="com.yuyin.mier.module_my.money.MoneyDetailActivity" />
<activity android:name="com.yuyin.mier.module_my.peerage.PeerageActivity" />
<activity android:name="com.yuyin.mier.module_my.log.tixian.TiXianLogActivity" />
<activity android:name="com.yuyin.mier.module_my.log.duihuan.DuiHuanLogActivity" />
<activity android:name="com.yuyin.mier.module_my.cp.CPActivity" />
<activity android:name="com.yuyin.mier.module_my.set.LogoutActivity" />
<activity android:name="com.yuyin.mier.module_home.tab.home.teen.TeenModeActivity" />
<activity android:name="com.yuyin.mier.module_home.tab.home.teen.TeenModeChangeActivity" />
<activity android:name="com.yuyin.mier.module_my.money.zuan.MoneyContainerActivity"/>
<activity android:name="com.yuyin.mier.module_my.gh.deatile.GongHuiDeatileActivity"/>
<activity android:name="com.yuyin.mier.module_my.gh.deatile.GHBuTieActivity"/>
<activity android:name="com.yuyin.mier.module_home.cproom.CPRoomActivity"/>
<activity android:name="com.yuyin.mier.module_my.set.WxKeFuAt"/>
<activity android:name="com.yuyin.mier.module_my.money.tixian.TiXianNewActivity"/>
<activity android:name="com.yuyin.mier.module_my.money.tixian.TxDeatileAt"/>
</application>
</manifest>

View File

@@ -0,0 +1,115 @@
package com.yuyin.mier
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import com.alibaba.android.arouter.launcher.ARouter
import com.google.gson.Gson
import com.kongzue.dialog.v3.MessageDialog
import com.tencent.qcloud.tuicore.util.SPUtils
import com.xuexiang.xupdate.XUpdate
import com.xuexiang.xupdate.entity.UpdateEntity
import com.yuyin.lib_base.App
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseActivity
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.ConfigBean
import kotlinx.android.synthetic.main.activity_launch.*
class LunchActivity : BaseActivity<BaseViewModel>() {
private var mContext: Context? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!isTaskRoot) {
finish()
return
}
}
/**
* 设置透明状态栏
*/
private fun setStatusBar() {
// val window: Window = window
// window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
// window.decorView.systemUiVisibility =
// View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
// window.statusBarColor = 0
}
override fun startObserve() {
viewModel.configBean.observe(this) {
SPUtils.getInstance().put("config",Gson().toJson(it))
if (it.version_is_force_update > 0) {
updateAPP(it)
return@observe
}
App.configBean = it
Handler().postDelayed({
if (UserManager.IS_LOGIN) {
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
finish()
} else {
ARouter.getInstance().build(AroutUtil.LOGIN_MAIN).navigation()
finish()
}
}, 100)
}
}
override fun getLayoutId(): Int {
// requestWindowFeature(Window.FEATURE_NO_TITLE)
// this.window.setFlags(
// WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN
// )
// setStatusBar()
return R.layout.activity_launch
}
override fun initView() {
mContext = this
// Glide.with(this).load(R.mipmap.splash).into(img)
}
override fun initData() {
val code = getVersionCode()
viewModel.get_system_base_config("$code", "1")
}
override fun initEvent() {
}
private fun update(configBean: ConfigBean) {
MessageDialog.show(
this,
"提示",
configBean.version_note,
"去更新"
).setOnOkButtonClickListener { baseDialog, v ->
val uri: Uri = Uri.parse(configBean.version_down_url)
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)
true
}
}
private fun updateAPP(configBean: ConfigBean) {
val updateEntity = UpdateEntity()
updateEntity.downloadUrl = configBean.version_down_url
updateEntity.versionCode = 3
updateEntity.versionName = configBean.version_app
updateEntity.updateContent = configBean.version_note
updateEntity.isForce = configBean.version_is_force_update == 2
updateEntity.isHasUpdate = true
XUpdate.newBuild(this).supportBackgroundUpdate(false) //
.promptWidthRatio(0.8f).build().update(updateEntity)
}
}

View File

@@ -0,0 +1,25 @@
package com.yuyin.mier.adapter
import android.widget.ImageView
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
class BaseIndicatorAdapter : BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_indicator) {
private var selectPosition: Int = 0
override fun convert(helper: BaseViewHolder, item: String?) {
helper.setText(R.id.tv_content,item)
val select = helper.layoutPosition == selectPosition
helper.getView<TextView>(R.id.tv_content).isSelected = select
helper.getView<ImageView>(R.id.v_view).isSelected = select
}
fun setSelectPosition(index: Int) {
notifyItemChanged(selectPosition)
notifyItemChanged(index)
selectPosition = index
}
}

View File

@@ -0,0 +1,27 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.model.MyCpTxBean
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
class CPTxListAdapter :
BaseQuickAdapter<MyCpTxBean, BaseViewHolder>(R.layout.item_cp_room) {
override fun convert(helper: BaseViewHolder, item: MyCpTxBean) {
GlideUtil.loadImglogo(mContext, item.cp_tx_img, helper.getView(R.id.iv_cp_gift))
if(item.is_using=="1"){
helper.setVisible(R.id.iv_cp_use,true)
}else{
helper.setGone(R.id.iv_cp_use,false)
}
helper.setText(R.id.tv_cp_level, "LV."+item.level)
.setText(R.id.tv_name_cp, item.cp_tx_title)
// if(item.js_suo=="1"){
// helper.getView<RelativeLayout>(R.id.rl_cp).alpha=1.0f
// }else{
// helper.getView<RelativeLayout>(R.id.rl_cp).alpha=0.6f
// }
}
}

View File

@@ -0,0 +1,28 @@
package com.yuyin.mier.adapter
import android.view.View
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.model.MyCpTxBean
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
class CPTxkListAdapter :
BaseQuickAdapter<MyCpTxBean, BaseViewHolder>(R.layout.item_cp_room) {
override fun convert(helper: BaseViewHolder, item: MyCpTxBean) {
GlideUtil.loadImglogo(mContext, item.head_decorate_img, helper.getView(R.id.iv_cp_gift))
if(item.is_using=="1"){
helper.setVisible(R.id.iv_cp_use,true)
}else{
helper.setGone(R.id.iv_cp_use,false)
}
helper.setText(R.id.tv_cp_level, "LV."+item.level)
.setText(R.id.tv_name_cp, item.head_decorate_title)
if(item.js_suo=="1"){
helper.getView<View>(R.id.rl_cp).alpha=1.0f
}else{
helper.getView<View>(R.id.rl_cp).alpha=0.6f
}
}
}

View File

@@ -0,0 +1,65 @@
package com.yuyin.mier.adapter
import android.graphics.Color
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.makeramen.roundedimageview.RoundedImageView
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.GHListBean
import java.util.*
class GHListAdapter :
BaseQuickAdapter<GHListBean, BaseViewHolder>(R.layout.item_gonghui, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GHListBean) {
GlideUtil.loadImglogo(mContext, item.cover, helper.getView<ImageView>(R.id.img1))
helper.setText(R.id.tv_text, item.guild_name)
.setText(R.id.tv_hot, item.total_gift_total_price)
.setText(R.id.tv_personal,"人数"+ item.num.toString() )
helper.setText(R.id.tv_num, (helper.position + 1).toString())
var img1 = helper.getView<RoundedImageView>(R.id.img1)
if (helper.position < 3) {
helper.setGone(R.id.ll, true)
helper.setGone(R.id.tv_num, false)
helper.setVisible(R.id.view_line, false)
when (helper.position) {
0 -> {
// img1.setBorderColor(Color.parseColor("#FF8601"))
// helper.setTextColor(R.id.tv_num, Color.parseColor("#FF8601"))
// helper.setTextColor(R.id.tv_text, Color.parseColor("#FF8601"))
// helper.setTextColor(R.id.tv_personal, Color.parseColor("#FF8601"))
helper.setImageResource(R.id.iv, R.mipmap.gh1)
// helper.setBackgroundRes(R.id.root_view, R.mipmap.gonghui_listbg1)
}
1 -> {
// img1.setBorderColor(Color.parseColor("#609CFF"))
// helper.setTextColor(R.id.tv_num, Color.parseColor("#609CFF"))
// helper.setTextColor(R.id.tv_text, Color.parseColor("#609CFF"))
// helper.setTextColor(R.id.tv_personal, Color.parseColor("#609CFF"))
helper.setImageResource(R.id.iv, R.mipmap.gh2)
// helper.setBackgroundRes(R.id.root_view, R.mipmap.gonghui_listbg2)
}
2 -> {
// img1.setBorderColor(Color.parseColor("#F59364"))
// helper.setTextColor(R.id.tv_num, Color.parseColor("#F59364"))
// helper.setTextColor(R.id.tv_text, Color.parseColor("#F59364"))
// helper.setTextColor(R.id.tv_personal, Color.parseColor("#F59364"))
helper.setImageResource(R.id.iv, R.mipmap.gh3)
// helper.setBackgroundRes(R.id.root_view, R.mipmap.gonghui_listbg3)
}
}
} else {
// img1.setBorderColor(Color.parseColor("#00F59364"))
helper.setTextColor(R.id.tv_num, Color.parseColor("#333333"))
helper.setGone(R.id.ll, false)
helper.setGone(R.id.tv_num, true)
// helper.setVisible(R.id.view_line,true)
}
}
}

View File

@@ -0,0 +1,20 @@
package com.yuyin.mier.adapter
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.GHRoomListBean
import java.util.*
class GHRoomListAdapter :
BaseQuickAdapter<GHRoomListBean, BaseViewHolder>(R.layout.item_gonghui_room, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GHRoomListBean) {
GlideUtil.loadImglogo(mContext, item.room_cover, helper.getView<ImageView>(R.id.cover))
helper.setText(R.id.tv_name, item.room_name).setText(R.id.tv_id, "ID" + item.room_number)
.setText(R.id.tv_num, item.total_gift_total_price)
}
}

View File

@@ -0,0 +1,28 @@
package com.yuyin.mier.adapter
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.GHUserListBean
import java.util.*
class GHSQUserListAdapter :
BaseQuickAdapter<GHUserListBean, BaseViewHolder>(R.layout.item_gonghui_user, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GHUserListBean) {
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView<ImageView>(R.id.cover))
helper.setText(R.id.tv_name, item.nick_name).setText(R.id.tv_id, item.uid)
.setText(R.id.tv_hot_value,item.total_gift_total_price)
helper.addOnClickListener(R.id.cover)
helper.addOnClickListener(R.id.tvNO)
helper.addOnClickListener(R.id.tvYes)
helper.setGone(R.id.tvNO, true)
helper.setGone(R.id.tvYes, true)
helper.setGone(R.id.tv_remove, false)
helper.setGone(R.id.tv_hot_value, false)
}
}

View File

@@ -0,0 +1,33 @@
package com.yuyin.mier.adapter
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.GHUserListBean
import com.yuyin.lib_base.Const
import java.util.*
class GHUserListAdapter :
BaseQuickAdapter<GHUserListBean, BaseViewHolder>(R.layout.item_gonghui_user, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GHUserListBean) {
var type = 0
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView<ImageView>(R.id.cover))
helper.setText(R.id.tv_name, item.nick_name).setText(R.id.tv_id, item.uid)
.setText(R.id.tv_hot_value, item.total_gift_total_price)
helper.addOnClickListener(R.id.cover)
helper.addOnClickListener(R.id.tvNO)
helper.addOnClickListener(R.id.tvYes)
helper.addOnClickListener(R.id.tv_remove)
helper.setGone(R.id.iv_hz, helper.position == 0)
if (Const.GH_REMOVE) {
helper.setGone(R.id.tv_remove, helper.position != 0)
} else {
helper.setGone(R.id.tv_remove, false)
}
}
}

View File

@@ -0,0 +1,58 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.RoomListBean
class HomePagerHotAdapter :
BaseQuickAdapter<RoomListBean, BaseViewHolder>(R.layout.item_home_pager_hot) {
override fun convert(helper: BaseViewHolder, item: RoomListBean) {
GlideUtil.loadImglogo(mContext, item.room_cover, helper.getView(R.id.room_cover))
helper.setText(R.id.tv_value, item.hot_value)
.setText(R.id.tv_type, item.category_name)
.setText(R.id.tv_name, item.room_name)
.setText(R.id.tv_id, "ID " + item.room_number)
when (item.category_name) {
"男神" -> {
helper.setBackgroundRes(R.id.ll_type, R.mipmap.item_home_pager_hot_tag2)
}
"女神" -> {
helper.setBackgroundRes(R.id.ll_type, R.mipmap.item_home_pager_hot_tag1)
}
else -> {
helper.setBackgroundRes(R.id.ll_type, R.mipmap.item_home_pager_hot_tag3)
}
}
if (item.room_micro_list.isNotEmpty()) {
GlideUtil.loadImglogo(
mContext,
item.room_micro_list[0].head_pic,
helper.getView(R.id.civ1)
)
}
if (item.room_micro_list.size > 1) {
GlideUtil.loadImglogo(
mContext,
item.room_micro_list[1].head_pic,
helper.getView(R.id.civ2)
)
}
if (item.room_micro_list.size > 2) {
GlideUtil.loadImglogo(
mContext,
item.room_micro_list[2].head_pic,
helper.getView(R.id.civ3)
)
}
}
}

View File

@@ -0,0 +1,19 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.RoomListBean
class HomePagerTopAdapter :
BaseQuickAdapter<RoomListBean, BaseViewHolder>(R.layout.item_home_pager_top) {
override fun convert(helper: BaseViewHolder, item: RoomListBean) {
GlideUtil.loadImglogo(mContext, item.room_cover, helper.getView(R.id.room_cover))
helper.setText(R.id.tv_value, item.hot_value)
.setText(R.id.tv_type, item.category_name)
.setText(R.id.tv_name, item.room_name)
}
}

View File

@@ -0,0 +1,38 @@
package com.yuyin.mier.adapter;
import android.graphics.Color;
import android.widget.TextView;
import com.yuyin.lib_base.model.CategorRoomBean;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yuyin.mier.R;
import java.util.ArrayList;
public class HomeRoomTypeAdapter extends BaseQuickAdapter<CategorRoomBean, BaseViewHolder> {
public int getSelectPos() {
return selectPos;
}
public void setSelectPos(int selectPos) {
this.selectPos = selectPos;
}
private int selectPos = 0;
public HomeRoomTypeAdapter() {
super(R.layout.item_home_room_type, new ArrayList<>());
}
@Override
protected void convert(BaseViewHolder helper, CategorRoomBean item) {
helper.setText(R.id.tv_text, item.getCategory_name());
helper.setGone(R.id.v_left, helper.getPosition() == selectPos);
helper.setGone(R.id.v_right, helper.getPosition() == selectPos);
TextView textView = helper.getView(R.id.tv_text);
textView.setTextColor(helper.getPosition() == selectPos ? Color.parseColor("#36DCD9") : Color.parseColor("#666666"));
}
}

View File

@@ -0,0 +1,16 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.Level
class LeverListAdapter : BaseQuickAdapter<Level, BaseViewHolder>(R.layout.item_lever) {
override fun convert(helper: BaseViewHolder, item: Level) {
helper.setText(R.id.tv_lever, item.level.toString())
.setText(R.id.tv_value, item.number.toString())
GlideUtil.loadImglogo(mContext, item.image, helper.getView(R.id.iv_dengji))
}
}

View File

@@ -0,0 +1,78 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.tencent.qcloud.tuikit.tuiconversation.bean.ConversationInfo
import com.tencent.qcloud.tuikit.tuiconversation.classicui.util.TUIConversationUtils
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.mier.R
import java.util.*
class MsgAdapter : BaseQuickAdapter<ConversationInfo, BaseViewHolder>(R.layout.item_message) {
override fun convert(helper: BaseViewHolder, item: ConversationInfo) {
helper.setText(R.id.tv_nick_name, item.conversation.showName)
if (item.lastMessage != null) {
if (item.lastMessage.textElem != null) {
helper.setText(R.id.tv_content, item.lastMessage.textElem.text)
} else if (item.lastMessage.customElem != null) {
helper.setText(R.id.tv_content, item.lastMessage.customElem.description)
} else {
helper.setText(R.id.tv_content, "")
}
}
GlideUtil.loadImglogo(mContext, item.conversation.faceUrl, helper.getView(R.id.ci_head))
if (item.unRead > 0) {
helper.setText(R.id.tv_num, item.unRead.toString())
helper.setVisible(R.id.tv_num, true)
} else {
helper.setVisible(R.id.tv_num, false)
}
helper.itemView.setOnClickListener {
TUIConversationUtils.startChatActivity(item)
}
helper.setText(R.id.tv_time, TimeUtil.toDateYmdHan3(item.lastMessageTime))
// V2TIMManager.getConversationManager()
// .pinConversation(item.conversationId, true, object : V2TIMCallback {
// override fun onSuccess() {
// Log.i("imsdk", "success")
// Collections.swap(datas, 1, position)
// proxyNotifyDataSetChanged()
// }
//
// override fun onError(code: Int, desc: String) {
// Log.i("imsdk", "failure, code:$code, desc:$desc")
// }
// })
// holder.dataBinding.tvDelete.setOnClickListener {
// // 删除消息
// V2TIMManager.getConversationManager()
// .deleteConversation(
// item.conversationId,
// object : V2TIMCallback {
// override fun onSuccess() {
// Log.i("imsdk", "success")
// datas.removeAt(position)
// notifyItemRemoved(position)
// }
//
// override fun onError(code: Int, desc: String) {
// Log.i("imsdk", "failure, code:$code, desc:$desc")
// }
// })
// }
}
}

View File

@@ -0,0 +1,28 @@
package com.yuyin.mier.adapter;
import android.widget.ImageView;
import com.yuyin.lib_base.model.MyListBean;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yuyin.mier.R;
import java.util.ArrayList;
public class MyListAdapter extends BaseQuickAdapter<MyListBean, BaseViewHolder> {
public MyListAdapter() {
super(R.layout.item_my_list, new ArrayList<>());
}
@Override
protected void convert(BaseViewHolder helper, MyListBean item) {
helper.setText(R.id.tv_title, item.getTitle());
Glide.with(mContext).load(item.getImg()).into((ImageView) helper.getView(R.id.iv_img));
}
}

View File

@@ -0,0 +1,28 @@
package com.yuyin.mier.adapter;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yuyin.lib_base.model.MyListBean;
import com.yuyin.mier.R;
import java.util.ArrayList;
public class MyListAdapter2 extends BaseQuickAdapter<MyListBean, BaseViewHolder> {
public MyListAdapter2() {
super(R.layout.item_my_list2, new ArrayList<>());
}
@Override
protected void convert(BaseViewHolder helper, MyListBean item) {
helper.setText(R.id.tv_title, item.getTitle());
Glide.with(mContext).load(item.getImg()).into((ImageView) helper.getView(R.id.iv_img));
}
}

View File

@@ -0,0 +1,21 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.OffiMessageBean
import java.util.*
/**
* 官方消息列表
*/
class OfficeListAdapter :
BaseQuickAdapter<OffiMessageBean, BaseViewHolder>(R.layout.item_message_office, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: OffiMessageBean) {
helper
.setText(R.id.textTime, TimeUtil.chatTimee2(item.add_time))
.setText(R.id.tv_content, item.content)
.setText(R.id.tv_title1, item.title)
}
}

View File

@@ -0,0 +1,15 @@
package com.yuyin.mier.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.model.PhotoMemory
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
class PhoneMemoryAdapter : BaseQuickAdapter<PhotoMemory, BaseViewHolder>(R.layout.item_photo_memory) {
override fun convert(helper: BaseViewHolder, item: PhotoMemory) {
helper.addOnClickListener(R.id.iv_delete)
helper.setText(R.id.tv_photo, item.photo)
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView(R.id.iv_head))
}
}

View File

@@ -0,0 +1,69 @@
package com.yuyin.mier.adapter
import android.text.TextUtils
import android.view.View
import android.widget.AdapterView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.img.FullScreenUtil
import com.yuyin.lib_base.view.MyGridView
import com.yuyin.module_community.adapter.OneImageYuanJiaoAdapter
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.RoomZoneList
import java.util.*
/**
* 官方消息列表
*/
class RoomZoneListAdapter :
BaseQuickAdapter<RoomZoneList, BaseViewHolder>(R.layout.item_room_zone, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: RoomZoneList) {
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView(R.id.img))
helper
.setText(
R.id.tvTimeAddress,
item.zone_time
)
.setText(R.id.tvName, item.nick_name)
.setText(R.id.tvText, item.content)
helper.addOnClickListener(R.id.tvRoom)
helper.addOnClickListener(R.id.tvHome)
helper.addOnClickListener(R.id.img)
if (item.rid == "0") {
helper.getView<View>(R.id.tvRoom).visibility = View.GONE
} else {
helper.getView<View>(R.id.tvRoom).visibility = View.VISIBLE
}
if (TextUtils.isEmpty(item.content)) {
helper.getView<View>(R.id.tvText).visibility = View.GONE
} else {
helper.getView<View>(R.id.tvText).visibility = View.VISIBLE
}
val oneImageYuanJiaoAdapter = OneImageYuanJiaoAdapter(mContext)
val recyclerView = helper.getView<MyGridView>(R.id.dy_image_recyc)
recyclerView.numColumns = 3
recyclerView.adapter = oneImageYuanJiaoAdapter
oneImageYuanJiaoAdapter.getList_adapter().clear()
for (j in item.images.indices) {
oneImageYuanJiaoAdapter.getList_adapter().add(item.images[j])
}
oneImageYuanJiaoAdapter.notifyDataSetChanged()
recyclerView.onItemClickListener =
AdapterView.OnItemClickListener { parent: AdapterView<*>?, view: View?, position: Int, id: Long ->
FullScreenUtil.showFullScreenDialog(
mContext,
position,
oneImageYuanJiaoAdapter.getList_adapter()
)
}
}
}

View File

@@ -0,0 +1,30 @@
package com.yuyin.mier.adapter
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
class SceneFlowAdapter : BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_scene_flow) {
private var selectPosition = 0
override fun convert(helper: BaseViewHolder, item: String?) {
helper.setText(R.id.tv_name, item)
val isSelected = helper.layoutPosition === selectPosition
if (isSelected) {
helper.getView<TextView>(R.id.tv_name).isSelected = true
} else {
helper.getView<TextView>(R.id.tv_name).isSelected = false
}
}
fun setSelectPosition(index: Int) {
notifyItemChanged(selectPosition)
notifyItemChanged(index)
selectPosition = index
}
}

View File

@@ -0,0 +1,68 @@
package com.yuyin.mier.adapter;
import android.text.TextUtils;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.yuyin.module_live.R;
import com.yuyin.module_live.model.TeQuanBean;
import java.util.List;
public class TeQuanAdapter extends BaseQuickAdapter<TeQuanBean, BaseViewHolder> {
public TeQuanAdapter(List<TeQuanBean> data) {
super(R.layout.item_tequan, data);
}
@Override
protected void convert(BaseViewHolder helper, TeQuanBean item) {
Glide.with(mContext).load(item.getLevel_image()).into((ImageView) helper.getView(R.id.ivTitle1));
helper.setText(R.id.tvTitle1, "等级" + item.getLevel() + "特权");
if (item.getMan_mount_decorate() != null && !TextUtils.isEmpty(item.getMan_mount_decorate().getTitle())) {
helper.setGone(R.id.tv_text1, true)
.setGone(R.id.iv_img1, true);
helper.setText(R.id.tv_text1, item.getMan_mount_decorate().getTitle());
Glide.with(mContext).load(item.getMan_mount_decorate().getBase_image()).into((ImageView) helper.getView(R.id.iv_img1));
} else {
helper.setGone(R.id.tv_text1, false)
.setGone(R.id.iv_img1, false);
}
if (item.getMan_head_decorate() != null && !TextUtils.isEmpty(item.getMan_head_decorate().getTitle())) {
helper.setGone(R.id.tv_text2, true)
.setGone(R.id.iv_img2, true);
helper.setText(R.id.tv_text2, item.getMan_head_decorate().getTitle());
Glide.with(mContext).load(item.getMan_head_decorate().getBase_image()).into((ImageView) helper.getView(R.id.iv_img2));
} else {
helper.setGone(R.id.tv_text2, false)
.setGone(R.id.iv_img2, false);
}
if (item.getWoman_mount_decorate() != null && !TextUtils.isEmpty(item.getWoman_mount_decorate().getTitle())) {
helper.setGone(R.id.tv_text3, true)
.setGone(R.id.iv_img3, true);
helper.setText(R.id.tv_text3, item.getWoman_mount_decorate().getTitle());
Glide.with(mContext).load(item.getWoman_mount_decorate().getBase_image()).into((ImageView) helper.getView(R.id.iv_img3));
} else {
helper.setGone(R.id.tv_text3, false)
.setGone(R.id.iv_img3, false);
}
if (item.getWoman_head_decorate() != null && !TextUtils.isEmpty(item.getWoman_head_decorate().getTitle())) {
helper.setGone(R.id.tv_text4, true)
.setGone(R.id.iv_img4, true);
helper.setText(R.id.tv_text4, item.getWoman_head_decorate().getTitle());
Glide.with(mContext).load(item.getWoman_head_decorate().getBase_image()).into((ImageView) helper.getView(R.id.iv_img4));
} else {
helper.setGone(R.id.tv_text4, false)
.setGone(R.id.iv_img4, false);
}
helper.setGone(R.id.ivAdd1, !TextUtils.isEmpty(item.getMan_mount_decorate().getTitle()) && !TextUtils.isEmpty(item.getMan_head_decorate().getTitle()));
helper.setGone(R.id.ivAdd2, !TextUtils.isEmpty(item.getWoman_mount_decorate().getTitle()) && !TextUtils.isEmpty(item.getWoman_head_decorate().getTitle()));
}
}

View File

@@ -0,0 +1,27 @@
package com.yuyin.mier.adapter
import android.widget.LinearLayout
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_my.model.Vip
class VipPriceAdapter : BaseQuickAdapter<Vip, BaseViewHolder>(R.layout.item_vip) {
override fun convert(helper: BaseViewHolder, item: Vip) {
helper.setText(R.id.tv_select1,item.name)
.setText(R.id.tv_select11,item.price)
if(item.isSelect){
helper.getView<LinearLayout>(R.id.ll_select1).isSelected=true
helper.getView<TextView>(R.id.tv_select1).isSelected=true
helper.getView<TextView>(R.id.tv_select11).isSelected=true
}else{
helper.getView<LinearLayout>(R.id.ll_select1).isSelected=false
helper.getView<TextView>(R.id.tv_select1).isSelected=false
helper.getView<TextView>(R.id.tv_select11).isSelected=false
}
}
}

View File

@@ -0,0 +1,381 @@
package com.yuyin.mier.module_home
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import android.view.View
import android.view.animation.Animation
import android.view.animation.LinearInterpolator
import android.view.animation.RotateAnimation
import android.widget.RadioGroup
import android.widget.Toast
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter
import com.blankj.utilcode.util.LogUtils
import com.kongzue.dialog.v3.MessageDialog
import com.tencent.imsdk.v2.*
import com.tencent.qcloud.tuicore.TUILogin
import com.tencent.qcloud.tuicore.interfaces.TUICallback
import com.tencent.qcloud.tuicore.interfaces.TUILoginConfig
import com.tencent.qcloud.tuikit.tuiconversation.config.TUIConversationConfig
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.arouter.AroutUtil.MAIN_MAIN
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.EnterRoomInfo
import com.yuyin.lib_base.model.FirstEvent
import com.yuyin.lib_base.model.UserBean
import com.yuyin.lib_base.util.FragmentUtils
import com.yuyin.lib_base.util.showToast
import com.yuyin.lib_base.view.CircularImage
import com.yuyin.lib_base.view.floatingview.EnFloatingView
import com.yuyin.lib_base.view.floatingview.FloatingMagnetView
import com.yuyin.lib_base.view.floatingview.FloatingView
import com.yuyin.lib_base.view.floatingview.MagnetViewListener
import com.yuyin.module_live.ui.room.AdminRoomActivity
import com.yuyin.mier.BR
import com.yuyin.mier.R
import com.yuyin.mier.adapter.MyListAdapter
import com.yuyin.mier.databinding.ActivityMainBinding
import com.yuyin.mier.module_home.tab.center.CenterFragment
import com.yuyin.mier.module_home.tab.dynamic.MainCommunityFragment
import com.yuyin.mier.module_home.tab.home.HomePagerFragment
import com.yuyin.mier.module_home.tab.home.MainHomeFragment
import com.yuyin.mier.module_home.tab.home.teen.AdolescentModelDialog
import com.yuyin.mier.module_home.tab.home.teen.TeenModeActivity
import com.yuyin.mier.module_home.tab.my.MyFragment
import com.yuyin.mier.module_home.tab.xiaoxi.MessageFragment
import kotlinx.android.synthetic.main.activity_main.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import kotlin.system.exitProcess
@Route(path = MAIN_MAIN)
open class MainActivity : BaseDataBindingActivity<MainViewModel, ActivityMainBinding>(),
RadioGroup.OnCheckedChangeListener {
private lateinit var mAdapter: MyListAdapter
var mainFaXianFragment = MyFragment()
var mainMessageFragment = MessageFragment()
var mainCenterFragment = CenterFragment()
var homeFragment = MainHomeFragment()
var mainCommunityFragment = MainCommunityFragment()
val homePagerFragment = HomePagerFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onCheckedChanged(p0: RadioGroup?, checkedId: Int) {
when (checkedId) {
R.id.radio_my -> {
FragmentUtils.addOrShowFragmentToActivity(
supportFragmentManager,
mainFaXianFragment, R.id.frameLayout_main
)
}
R.id.radio_rank -> {
FragmentUtils.addOrShowFragmentToActivity(
supportFragmentManager,
mainCommunityFragment, R.id.frameLayout_main
)
}
R.id.radio_message -> {
FragmentUtils.addOrShowFragmentToActivity(
supportFragmentManager,
mainMessageFragment, R.id.frameLayout_main
)
}
R.id.radio_home ->
FragmentUtils.addOrShowFragmentToActivity(
supportFragmentManager,
mainCenterFragment, R.id.frameLayout_main
)
R.id.radio_center -> {
FragmentUtils.addOrShowFragmentToActivity(
supportFragmentManager,
mainCenterFragment, R.id.frameLayout_main
)
}
}
}
private var exitTime: Long = 0
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) {
if (System.currentTimeMillis() - exitTime > 2000) {
"再按一次退出程序".showToast()
exitTime = System.currentTimeMillis()
} else {
exitProcess(0)
}
return true
}
return super.onKeyDown(keyCode, event)
}
override fun onStop() {
super.onStop()
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
override fun onStart() {
super.onStart()
FloatingView.get().attach(this)
val code = getVersionCode()
viewModel.get_system_base_config("$code", "1")
}
override fun onRestart() {
super.onRestart()
// LogUtils.debugInfo("====onRestart");
if (App.isStart && App.isTop) {
backToRoom()
}
}
override fun startObserve() {
viewModel.userInfoData.observe(this) {
loginIM(it)
// val info = V2TIMUserFullInfo()
// info.setNickname(it.nick_name)
// info.faceUrl = it.head_pic
// info.selfSignature = it.autograph
// V2TIMManager.getInstance().setSelfInfo(info, null)
}
viewModel.configBean.observe(this) {
App.configBean = it
}
}
override fun getLayoutId(): Int = R.layout.activity_main
override fun initView() {
mDataBinding.radioGroup.setOnCheckedChangeListener(this)
mDataBinding.radioGroup.check(R.id.radio_home) //使用了viewpager 去掉
}
override fun onResume() {
super.onResume()
viewModel.loadUserInfo()
viewModel.is_private_chat()
changeMsg()
}
override fun initData() {
if (!App.isStart && intent.getStringExtra("quite_room") == null) {
val adolescentModelDialog = AdolescentModelDialog(this)
adolescentModelDialog.getBinding().btnConfirm.setOnClickListener {
startActivity(Intent(this, TeenModeActivity::class.java))
adolescentModelDialog.dismiss()
}
adolescentModelDialog.getBinding().btnCancel.setOnClickListener {
adolescentModelDialog.dismiss()
}
adolescentModelDialog.getBinding().ivQsms.setOnClickListener {
adolescentModelDialog.dismiss()
}
adolescentModelDialog.show()
} else if (intent.getStringExtra("quite_room") != null) {
if (intent.getStringExtra("type") == "1") {
MessageDialog.show(
this,
"温馨提示",
"房间类型已更改,是否重新进入该房间",
"确定",
"取消"
).setOnOkButtonClickListener { baseDialog, v ->
viewModel.enterRoom(intent.getStringExtra("quite_room").toString(), "", this)
baseDialog.doDismiss()
true
}
} else {
MessageDialog.show(
this,
"温馨提示",
"房间已关闭",
"确定",
).setOnOkButtonClickListener { baseDialog, v ->
baseDialog.doDismiss()
true
}
}
}
}
override fun initEvent() {
mDataBinding.setVariable(BR.act, this)
V2TIMManager.getMessageManager()
.addAdvancedMsgListener(object : V2TIMAdvancedMsgListener() {
override fun onRecvNewMessage(msg: V2TIMMessage?) {
super.onRecvNewMessage(msg)
changeMsg()
}
})
}
@Subscribe(threadMode = ThreadMode.MAIN)
public fun receiveMsg(event: FirstEvent) {
when (event.tag) {
Const.LOGOUT -> {
if (App.isStart) {
App.roomActivity?.finish()
}
finish()
}
Const.FANHUIZHUYE -> { //显示悬浮窗
Log.e("aaaaa", "receiveMsg: showFlow")
val enterRoom: EnterRoomInfo = event.enterRoom
showFlow(enterRoom.room_cover)
}
Const.XUANFUYINCANG -> { //显示悬浮窗
FloatingView.get().remove()
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public fun receiveUnreadCount(msg: String) {
LogUtils.e(msg)
// if (msg == "更新消息红点") {
changeMsg()
// }
}
fun showFlow(msg: String) {
FloatingView.get().add()
val view: EnFloatingView = FloatingView.get().view
val imgHeader = view.findViewById<CircularImage>(R.id.imgHeader)
val img1 = view.findViewById<View>(R.id.img1)
val img2 = view.findViewById<View>(R.id.img2)
img1.isSelected = true
loadImage(imgHeader, msg, R.mipmap.ic_launcher_app)
img2.setOnClickListener(View.OnClickListener { v: View? ->
if (App.isStart) {
App.isStart = false
App.roomActivity?.finish()
FloatingView.get().remove()
}
})
FloatingView.get().listener(object : MagnetViewListener {
override fun onRemove(magnetView: FloatingMagnetView?) {
Toast.makeText(this@MainActivity, "我没了", Toast.LENGTH_SHORT).show()
}
override fun onClick(magnetView: FloatingMagnetView?) {
startActivity(Intent(this@MainActivity, AdminRoomActivity::class.java))
}
})
val rotateAnimation = RotateAnimation(
0f, 360f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f
)
rotateAnimation.duration = 3000
rotateAnimation.fillAfter = true
rotateAnimation.repeatMode = Animation.RESTART
//让旋转动画一直转,不停顿的重点
rotateAnimation.interpolator = LinearInterpolator()
rotateAnimation.repeatCount = -1
imgHeader.startAnimation(rotateAnimation)
}
private fun loginIM(user: UserBean) {
//在线状态
TUIConversationConfig.getInstance().isShowUserStatus = false
val config = TUILoginConfig()
config.logLevel = V2TIMSDKConfig.V2TIM_LOG_INFO
LogUtils.e("当前账号", user.uid)
TUILogin.login(
App.instance!!.applicationContext,
/*GsonUtils.fromJson<ConfigBean>(
SPUtils.getInstance().getString("config"),
ConfigBean::class.java
).tencentyun_im_appid.toInt()*/1600078180, //1600039760 正式服
user.uid,
UserManager.user.user_sig,
object : TUICallback() {
override fun onSuccess() {
LogUtils.e("IM登陆成功")
val info = V2TIMUserFullInfo()
info.setNickname(user.nick_name)
info.faceUrl = user.head_pic
info.selfSignature = user.autograph
V2TIMManager.getInstance().setSelfInfo(info, null)
}
override fun onError(errorCode: Int, errorMessage: String?) {
LogUtils.e(errorCode, errorMessage)
}
}
)
V2TIMManager.getInstance()
.addIMSDKListener(object : V2TIMSDKListener() {
override fun onKickedOffline() {
super.onKickedOffline()
Log.i("imsdk", "success")
EventBus.getDefault().post(FirstEvent("指定发送", Const.LOGOUT))
UserManager.layout()
ARouter.getInstance().build(AroutUtil.LOGIN_MAIN).withInt("sign", 1)
.navigation()
}
})
}
private fun changeMsg() {
V2TIMManager.getConversationManager().getTotalUnreadMessageCount(object :
V2TIMValueCallback<Long> {
override fun onSuccess(p0: Long?) {
if (p0!! > 0) {
mDataBinding.tvUnhed.text = p0.toString()
mDataBinding.tvUnhed.visibility = View.VISIBLE
} else {
mDataBinding.tvUnhed.visibility = View.GONE
}
}
override fun onError(p0: Int, p1: String?) {
LogUtils.e(p0, p1)
}
})
}
}

View File

@@ -0,0 +1,37 @@
package com.yuyin.mier.module_home
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const.ROOM_TYPE
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.CategorRoomBean
import com.yuyin.mier.repository.CommonRepository
class MainViewModel : BaseViewModel() {
var repository = CommonRepository()
var roomCategories = MutableLiveData<List<CategorRoomBean>>()
fun loadRoomCategories() {
launchUI {
val result = repository.roomCategories(ROOM_TYPE)
roomCategories.value = result.data;
}
}
//获取用户基本信息详情
fun get_base_user_infoSss(uid: String) {
launchUI {
var data = baseRepository.get_base_user_info(uid)
}
}
fun is_private_chat() {
launchUI {
val result = repository.is_private_chat()
App.is_private_chat = result.data.is_private_chat
}
}
}

View File

@@ -0,0 +1,198 @@
package com.yuyin.mier.module_home.cproom
import android.graphics.Color
import android.util.Log
import com.tencent.qgame.animplayer.AnimView
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.MyCpTxBean
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.showToast
import com.yuyin.lib_base.view.ItemDecoration
import com.yuyin.mier.R
import com.yuyin.mier.adapter.CPTxListAdapter
import com.yuyin.mier.adapter.CPTxkListAdapter
import com.yuyin.mier.databinding.ActivityCpRoomBinding
import com.zhy.http.okhttp.OkHttpUtils
import com.zhy.http.okhttp.callback.FileCallBack
import kotlinx.android.synthetic.main.activity_cp_room.*
import okhttp3.Call
import java.io.File
class CPRoomActivity : BaseDataBindingActivity<CPRoomViewModel, ActivityCpRoomBinding>() {
lateinit var cpTxListAdapter: CPTxListAdapter
lateinit var cpTxkListAdapter: CPTxkListAdapter
var tabIndex = 0
override fun startObserve() {
viewModel.CPBean.observe(this) {
tv_level.text = "LV." + it.cp_level
viewModel.my_cp_txk("1")
cp_man_name.text = it.u_nick_name
cp_woman_name.text = it.receive_nick_name
cp_man_value.text = it.cp_value.toString()
cp_woman_value.text = it.next_cp_value
GlideUtil.loadImglogo(this, it.u_head_pic, cp_head_nan)
GlideUtil.loadImglogo(this, it.receive_head_pic, cp_head_nv)
playTX(it.u_avatar_play_image, cp_man, Int.MAX_VALUE)
playTX(it.receive_avatar_play_image, cp_woman, Int.MAX_VALUE)
}
viewModel.CPTxBean.observe(this) {
if (tabIndex == 0) {
cpTxkListAdapter.setNewData(it)
rcy_tx.adapter = cpTxkListAdapter
} else {
cpTxListAdapter.setNewData(it)
rcy_tx.adapter = cpTxListAdapter
}
if (rcy_tx.itemDecorationCount == 0) {
rcy_tx.addItemDecoration(ItemDecoration(this,0,5f,5f))
}
}
viewModel.setDecorateDate.observe(this) {
if (tabIndex == 0) {
viewModel.my_cp_txk("1")
} else {
viewModel.my_cp_txk("9")
}
}
}
override fun getLayoutId(): Int = R.layout.activity_cp_room
override fun initView() {
cpTxkListAdapter = CPTxkListAdapter()
cpTxListAdapter = CPTxListAdapter()
GlideUtil.loadImglogo(this, UserManager.user.head_pic, cp_head_nan)
cp_man_name.text = UserManager.user.nick_name
}
override fun initData() {
viewModel.my_cp()
viewModel.my_cp_txk("1")
}
override fun initEvent() {
cpTxListAdapter.setOnItemClickListener { adapter, view, position ->
val dataBean: MyCpTxBean = adapter.data[position] as MyCpTxBean
if (dataBean.js_suo == "1") {
if (dataBean.is_using == "1") {
viewModel.cancel_user_decorate(dataBean.udid)
} else {
playTX(dataBean.cp_tx_play_img, cp_tx, 1)
viewModel.set_user_decorate(dataBean.udid)
}
} else {
"当前特效未解锁".showToast()
}
}
cpTxkListAdapter.setOnItemClickListener { adapter, view, position ->
val dataBean: MyCpTxBean = adapter.data[position] as MyCpTxBean
viewModel.my_cp()
if (dataBean.js_suo == "1") {
if (dataBean.is_using == "1") {
viewModel.cancel_user_decorate(dataBean.udid)
} else {
viewModel.set_user_decorate(dataBean.udid)
if (viewModel.CPBean.value!!.uid == UserManager.user.uid.toString()) {
cp_man.stopPlay()
cp_man.clearAnimation()
playTX(dataBean.head_decorate_play_img, cp_man, Int.MAX_VALUE)
} else {
cp_woman.stopPlay()
cp_woman.clearAnimation()
playTX(dataBean.head_decorate_play_img, cp_woman, Int.MAX_VALUE)
}
}
} else {
"当前头像框未解锁".showToast()
}
}
tv_txk.setOnClickListener {
tabIndex = 0
tv_txk.setTextColor(Color.parseColor("#333333"))
tv_rctx.setTextColor(Color.parseColor("#999999"))
viewModel.my_cp_txk("1")
}
tv_rctx.setOnClickListener {
tabIndex = 1
tv_txk.setTextColor(Color.parseColor("#999999"))
tv_rctx.setTextColor(Color.parseColor("#333333"))
viewModel.my_cp_txk("9")
}
}
fun playTX(url: String, animView: AnimView, count: Int) {
OkHttpUtils.get().url(url).build().execute(object : FileCallBack(
cacheDir.absolutePath, url.substring(url.lastIndexOf("/")) //
) {
override fun onError(
call: Call?, e: java.lang.Exception?, id: Int
) {
Log.d("sssssssssss", e.toString())
}
override fun onResponse(response: File?, id: Int) {
response?.let {
animView.startPlay(response)
animView.setLoop(count)
}
}
})
// if (!FileUtils.isFileExists(
// cacheDir?.absolutePath + url.substring(
// url.lastIndexOf(
// "/"
// )
// )
// )
// ) {
// OkHttpUtils
// .get()
// .url(url)
// .build()
// .execute(object : FileCallBack(
// cacheDir?.absolutePath,
// url.substring(url.lastIndexOf("/")) //
// ) {
//
// override fun onError(
// call: Call?,
// e: java.lang.Exception?,
// id: Int
// ) {
// Log.d("sssssssssss", e.toString())
// }
//
// override fun onResponse(response: File?, id: Int) {
// response?.let {
// animView.setLoop(count)
// animView.startPlay(response)
// }
// }
// })
// } else {
// LogUtils.e("有缓存")
// animView.setLoop(count)
// animView.startPlay(
// File(
// cacheDir?.absolutePath + url.substring(
// url.lastIndexOf(
// "/"
// )
// )
// )
// )
//
//
// }
}
}

View File

@@ -0,0 +1,47 @@
package com.yuyin.mier.module_home.cproom
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.MyCpBean
import com.yuyin.lib_base.model.MyCpTxBean
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.repository.CommonRepository
class CPRoomViewModel : BaseViewModel() {
var repository = CommonRepository()
var CPBean = MutableLiveData<MyCpBean>()
var setDecorateDate = MutableLiveData<Any>()
fun my_cp() {
launchUI {
val result = repository.my_cp()
CPBean.value=result.data
}
}
var CPTxBean= MutableLiveData<ArrayList<MyCpTxBean>>()
fun my_cp_txk(type:String) {
launchUI {
val result = repository.my_cp_txk(type)
CPTxBean.value=result.data
}
}
fun set_user_decorate(udid: String) {
launchUI {
val result = repository.set_user_decorate(udid)
result.msg.showToast()
setDecorateDate.value = result.data
}
}
fun cancel_user_decorate(udid: String) {
launchUI {
val result = repository.cancel_user_decorate(udid)
result.msg.showToast()
setDecorateDate.value = result.data
}
}
}

View File

@@ -0,0 +1,347 @@
package com.yuyin.mier.module_home.model
import java.io.Serializable
data class Mic(
var head_pic: String = "",
var uid: Int = 0
)
data class GHSet(
var is_deacon: String = "",
var quit_money: String = "",
var guild_name: String = "",
var is_join_guild: String = "",
)
data class GHMain(
var list: ArrayList<GHListBean> = ArrayList()
)
data class GHRoomMain(
var is_deacon: String = "",
var list: ArrayList<GHRoomListBean> = ArrayList(),
val total_gift_price: String = ""
)
data class GHDeatileBean(
var id: String = "",
var guild_special_id: String = "",
var uid: String = "",
var guild_name: String = "",
var cover: String = "",
var intro: String = "",
var money: String = "",
var num: String = "",
var add_time: Long = 0,
var contribution_value: String = "",
var last_week_income: String = "",
var this_week_income: String = "",
var last_week_income_money: String = "",
val ghz: GHDeatileHzBean,
)
data class GHDeatileHzBean(
var uid: String = "",
var nick_name: String = "",
var head_pic: String = "",
var special_uid: String = "",
var noblity_image: String = "",
var charm_level_image: String = "",
var contribution_level_image: String = "",
)
data class GHUserMain(
var is_deacon: String = "",
var list: ArrayList<GHUserListBean> = ArrayList(),
val total_gift_price: String = ""
)
data class GHListBean(
var guild_id: String = "",
var guild_name: String = "",
var cover: String = "",
var total_gift_total_price: String = "",
val num: Int = 0
)
data class GHRoomListBean(
var rid: String = "",
var room_owner_uid: String = "",
var room_name: String = "",
var room_cover: String = "",
var total_gift_total_price: String = "",
val room_number: String = ""
)
data class GHUserListBean(
var id: String = "",
var uid: String = "",
var guild_id: String = "",
var nick_name: String = "",
var head_pic: String = "",
var total_gift_total_price: String = "",
)
data class RoomZoneList(
var uid: String = "",
var rid: String = "",
var nick_name: String = "",
var head_pic: String = "",
var sex: String = "",
var zid: String = "",
var content: String = "",
var zone_time: String = "",
var last_operate_time: String = "",
var distance: String = "",
var images: ArrayList<String> = ArrayList(),
)
data class BlackList(
val room_black_list: ArrayList<BlackBean>,
val room_visitor_list: ArrayList<BlackBean>,
)
data class BlackBean(
var uid: String = "",
var nick_name: String = "",
var head_pic: String = "",
var sex: String = "",
val special_uid: String = ""
)
data class userWithdrawalListBean(
var all: String = "",
val detail: ArrayList<userWithdrawalBean> = ArrayList(),
)
data class userWithdrawalBean(
var rid: String = "",
var wid: String = "",
var type: String = "",
var general_money: String = "",
var money: String = "",
var server_money: String = "",
var surplus_money: String = "",
var status: String = "",
var deal_type: String = "",
var remarke: String = "",
var account: String = "",
var add_time: Long = 0,
)
data class RoomListBean(
var rid: String = "",
var room_number: String = "",
var tid: String = "",
var cate_id: String = "",
var room_name: String = "",
var room_cover: String = "",
var is_need_password: String = "",
var is_hot: String = "",
var hot_value: String = "",
var is_online: String = "",
var visitor_num: String = "",
var room_status: String = "",
var is_top: String = "",
var base64_nick_name: String = "",
var sex: String = "",
var nick_name: String = "",
var category_name: String = "",
var base64_room_name: String = "",
var game_list: String = "",
var head_pic: String = "",
var room_frame_base_image: String = "",
var room_frame_play_image: String = "",
var room_micro: String = "",
var room_owner_uid: Int = 0,
var special_uid: Int = 0,
var today_hot_value: Int = 0,
val room_visitor_list: ArrayList<Mic> = arrayListOf(),
var room_micro_member: ArrayList<Mic> = arrayListOf(),
var game_ico_list: ArrayList<Mic> = arrayListOf(),
var room_micro_list: ArrayList<Mic> = arrayListOf()
)
data class SearchBean(
val user: ArrayList<SearchUserBean> = ArrayList(),
val room: ArrayList<SearchRoomBean> = ArrayList()
)
data class SearchUserBean(
val uid: String = "",
val head_pic: String = "",
val special_uid: String = "",
val nick_name: String = "",
)
data class SearchRoomBean(
val rid: String = "",
val room_number: String = "",
val room_name: String = "",
val room_cover: String = "",
val uid: String = "",
val head_pic: String = "",
val special_uid: String = "",
val nick_name: String = ""
)
data class BannerBean(
val bid: String = "",
val aid: String = "",
val image: String = "",
val sort: String = "",
val url: String = "",
val type: String = ""
)
data class OffiMessageBean(
val mid: String = "",
val title: String = "",
val type: String = "",
val content: String = "",
val id: String = "",
val is_read: String = "",
val add_time: String = "",
)
data class OffiMessageSub1Bean(
val aid: String = "",
val type: String = "",
val uid: String = "",
val recived_uid: String = "",
val status: String = "",
val deal_time: String = "",
//下面开始订单消息的字段
val oid: String = "",
val is_player: Int = 0,
)
data class HomeScene(
var sex_type: String = "",
var age_type: String = "",
)
data class LeverBean(
val level_list: List<Level>, val user_info: UserInfo, val user_level_info: UserLevelInfo
)
data class Level(
val image: String, val level: Int, val number: Int
)
data class UserInfo(
val base64_nick_name: String,
val charm_level_image: String,
val contribution_level_image: String,
val head_pic: String,
val nick_name: String,
val uid: Int
)
data class UserLevelInfo(
val next_level: Int,
val next_level_image: String,
val next_value: Int,
val now_level: Int,
val now_level_image: String,
val now_value: Int
)
data class IsPrivateChat(
var is_private_chat: Int = 2
)
data class DaySignBean(
val sign_log: List<DaySignBeanInfo>,
val sign_num: String = "",
val today_sign: String = "",
)
data class SignSuccesBean(
val award: String = ""
)
data class DaySignBeanInfo(
val is_sign: Int = 0,
val award: String = "",
)
data class NobilityInfo(
val image: String,
val lid: Int,
val name: String,
val change_value: String,
val pay_price: String,
val day_num: String,
val renew_coin: String,
val pay_coin: String,
val renew_price: String,
var play_image: String,
)
data class NobilityPower(
val id: Int,
val image: String,
val images: String,
val content: String,
val name: String,
val checked_icon: String,
val is_power: Int,
)
data class UserNobility(
val is_nobility: Int,
val nobility_type: String,
val noblity_end_time: Int,
)
data class NobilityListBean(
val image: String, val name: String, val change_value: Int, val lid: Int
) : Serializable
data class NobilityInfoBean(
val nobility_info: NobilityInfo,
val nobility_power_list: List<NobilityPower>,
val user_nobility: UserNobility,
val user_nobility_end_time: Long
)
data class NobilityPayBean(
val order_id: String
)
data class MyRoomList(
val rid: Int,
val room_cover: String,
val room_name: String,
val room_number: Int,
val user_type: Int
)
data class WeekHomeBean(
val uid: String = "",
val receive_uid: String = "",
val total_gift_num: String = "",
val gid: String = "",
val gift_price: String = "",
val gift_name: String = "",
val head_pic: String = "",
)
data class TopCpBean(
val u_head_pic: String = "",
val receive_head_pic: String = "",
)

View File

@@ -0,0 +1,366 @@
package com.yuyin.mier.module_home.tab.center
import android.content.Intent
import android.graphics.Color
import android.graphics.Typeface
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.launcher.ARouter
import com.google.android.material.tabs.TabLayout
import com.youth.banner.BannerConfig
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.UserBean
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.showToast
import com.yuyin.lib_base.view.GlideImageLoader
import com.yuyin.mier.R
import com.yuyin.mier.databinding.FragmentCenterBinding
import com.yuyin.mier.module_home.cproom.CPRoomActivity
import com.yuyin.mier.module_home.model.BannerBean
import com.yuyin.mier.module_home.tab.center.sign.SginDialog
import com.yuyin.mier.module_home.tab.center.sign.SginSuccessDialog
import com.yuyin.mier.module_home.tab.center.sub.HomeRecomAdapter
import com.yuyin.mier.module_home.tab.center.sub.RoomListFragment
import com.yuyin.module_live.ui.rank.WeekRankActivity
import kotlinx.android.synthetic.main.fragment_center.*
import java.util.*
class CenterFragment : BaseDataBindingFragment<MainCenterViewModel, FragmentCenterBinding>() {
lateinit var adapter: HomeRecomAdapter
private val fsRes: ArrayList<Fragment> = ArrayList<Fragment>() //fragment集合
private val titleRes = ArrayList<String>() //tab标题集合
private var mUserBean: UserBean? = null
override fun startObserve() {
/*viewModel.TopCpBean.observe(this){
if(it!=null){
GlideUtil.loadImglogo(context as AppCompatActivity,it.u_head_pic,rv_nan)
GlideUtil.loadImglogo(context as AppCompatActivity,it.receive_head_pic,rv_nv)
}
}
viewModel.WeekHomeList.observe(this){
if(it.size>0){
GlideUtil.loadImglogo(context as AppCompatActivity,it[0].head_pic,iv_week1)
}
if(it.size>1){
GlideUtil.loadImglogo(context as AppCompatActivity,it[1].head_pic,iv_week2)
}
if(it.size>2){
GlideUtil.loadImglogo(context as AppCompatActivity,it[2].head_pic,iv_week3)
}
if(it.size>3){
GlideUtil.loadImglogo(context as AppCompatActivity,it[3].head_pic,iv_week4)
}
}*/
viewModel.userInfoData.observe(this) {
mUserBean = it
}
viewModel.bannerListBean.observe(this) {
if (it == null) return@observe
initBanner(it)
}
viewModel.roomData.observe(requireActivity()) {
adapter.list.clear()
adapter.list.addAll(it)
adapter.notifyDataSetChanged()
}
viewModel.roomCategories.observe(this) {
titleRes.add("推荐")
fsRes.add(RoomListFragment.getInstance(Const.ROOM_TYPE_HOT, -1))
for (i in it.indices) {
titleRes.add(it[i].category_name)
fsRes.add(RoomListFragment.getInstance(Const.ROOM_TYPE_COMM, it[i].cate_id.toInt()))
}
// //设置数据
// mDataBinding.tabLayout.setTabData(titleRes.toTypedArray())
// mDataBinding.viewpager.adapter = MyPagerAdapter(
// childFragmentManager, fsRes
// )
mAdapter = MyPagerAdapter(childFragmentManager, fsRes, titleRes)
mDataBinding.viewpager.adapter = mAdapter
mDataBinding.tabLayout.setSelectedTabIndicatorHeight(0)
mDataBinding.tabLayout.setupWithViewPager(mDataBinding.viewpager)
mDataBinding.viewpager.offscreenPageLimit = fsRes.size
//设置自定义tab
setCustomViews()
mDataBinding.tabLayout.addOnTabSelectedListener(object :
TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
val text = tab?.customView?.findViewById<TextView>(R.id.tv_name)
val v_view = tab?.customView?.findViewById<ImageView>(R.id.v_view)
text?.setTextColor(Color.parseColor("#333333"))
text?.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
text?.typeface = Typeface.DEFAULT_BOLD
v_view?.isSelected = true
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
val text = tab?.customView?.findViewById<TextView>(R.id.tv_name)
val v_view = tab?.customView?.findViewById<ImageView>(R.id.v_view)
text?.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
text?.typeface = Typeface.DEFAULT
text?.setTextColor(Color.parseColor("#666666"))
v_view?.isSelected = false
}
override fun onTabReselected(tab: TabLayout.Tab?) {
// val text = tab?.customView?.findViewById<TextView>(R.id.tv_name)
// val v_view = tab?.customView?.findViewById<ImageView>(R.id.v_view)
// v_view?.isSelected = false
// text?.setTextColor(Color.parseColor("#666666"))
}
})
//设置自定义tab
}
viewModel.roomRandom.observe(this) {
viewModel.enterRoom(it.rid, "", context as AppCompatActivity)
}
viewModel.signDayList.observe(this) {
if (it.today_sign == "2") { //未签到
SginDialog(context as AppCompatActivity,viewModel,it).show()
}
}
viewModel.signSucces.observe(this){
SginSuccessDialog(context as AppCompatActivity,viewModel,it.award).show()
}
}
private fun setCustomViews() {
val mSelectedTabPosition = mDataBinding.tabLayout.selectedTabPosition
for (i in titleRes.indices) {
mDataBinding.tabLayout.getTabAt(i)!!.customView = getTabView(i, mSelectedTabPosition)
}
}
private fun getTabView(index: Int, mSelectedTabPosition: Int): View {
//自定义View布局
val view: View = LayoutInflater.from(context).inflate(R.layout.item_tablayout_header3, null)
val title = view.findViewById<View>(R.id.tv_name) as TextView
val v_view = view.findViewById<ImageView>(R.id.v_view)
title.text = titleRes[index]
title.isSelected = index == mSelectedTabPosition
v_view.isSelected = index == mSelectedTabPosition
if (index == mSelectedTabPosition) {
title.setTextColor(Color.parseColor("#333333"))
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
title.typeface = Typeface.DEFAULT_BOLD
} else {
title.setTextColor(Color.parseColor("#666666"))
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
title.typeface = Typeface.DEFAULT
}
return view
}
private lateinit var mAdapter: com.yuyin.lib_base.adapter.MyPagerAdapter
override fun getLayoutId(): Int = R.layout.fragment_center
override fun initView() {
adapter = HomeRecomAdapter(activity, -2)
mDataBinding.rvView.adapter = adapter
val gridLayoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
mDataBinding.rvView.layoutManager = gridLayoutManager
adapter.setOnItemClickListener { bean, position ->
viewModel.enterRoom(bean.rid, "", activity as AppCompatActivity)
}
if(App.isShangJia){
iv_search.setImageResource(R.mipmap.search_ic2)
}else{
iv_search.setImageResource(R.mipmap.search_ic)
}
}
fun resubData(cate_id: String) {
(fsRes[1] as RoomListFragment).resubData(cate_id)
}
override fun initData() {
viewModel.loadRoomData(getMap())
viewModel.loadRoomCategories()
// viewModel.now_week_rank_four()
// viewModel.top_cp()
if (!App.isStart && requireActivity().intent.getStringExtra("quite_room") == null) {
viewModel.user_day_sign_log()
}
}
override fun onResume() {
super.onResume()
viewModel.loadUserInfo()
viewModel.getBannerList()
}
override fun initEvent() {
mDataBinding.ivXqf.setOnClickListener {
viewModel.now_room_category("37")
}
mDataBinding.ivJbt.setOnClickListener {
viewModel.now_room_category("19")
}
mDataBinding.ivYxt.setOnClickListener {
viewModel.now_room_category("35")
}
mDataBinding.ivCp.setOnClickListener {
val intent = Intent(activity, CPRoomActivity::class.java)
startActivity(intent)
}
mDataBinding.ivWeek.setOnClickListener {
val intent = Intent(activity, WeekRankActivity::class.java)
startActivity(intent)
}
mDataBinding.ivRoom.setOnClickListener {
if (mUserBean == null) return@setOnClickListener
when (mUserBean!!.is_real) {
"2" -> ARouter.getInstance().build(AroutUtil.PLAY_REAL_NAME).navigation()
"1" -> {
if (mUserBean!!.rid == "0") {
"房间信息读取失败...".showToast()
} else {
viewModel.enterRoom(mUserBean!!.rid, "", activity as AppCompatActivity)
}
}
"3" -> "实名认证审核中...".showToast()
}
}
mDataBinding.ivSearch.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_SEARCH_MAIN).navigation()
}
mDataBinding.llSousuo.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_SEARCH_MAIN).navigation()
}
mDataBinding.ivRank.setOnClickListener {
ARouter.getInstance().build(AroutUtil.LIVE_RANK).withInt("selectTab", 0).navigation()
}
mDataBinding.ivNewRoom.setOnClickListener {
viewModel.now_room_category("18")
}
mDataBinding.ivAuctionRoom.setOnClickListener {
viewModel.now_room_category("28")
}
mDataBinding.ivKsong.setOnClickListener {
viewModel.now_room_category("27")
}
mDataBinding.ivFriend.setOnClickListener {
viewModel.now_room_category("29")
}
}
private fun initBanner(data: List<BannerBean>) {
val imgurls: MutableList<String> = ArrayList()
for (list in data) {
imgurls.add(list.image)
}
//设置图片加载器
mDataBinding.banner.setImageLoader(GlideImageLoader())
//设置图片集合
mDataBinding.banner.setImages(imgurls)
//设置指示器位置当banner模式中有指示器时
mDataBinding.banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
mDataBinding.banner.setIndicatorGravity(BannerConfig.CENTER)
//设置自动轮播默认为true
mDataBinding.banner.isAutoPlay(true)
//banner设置方法全部调用完毕时最后调用
mDataBinding.banner.start()
mDataBinding.banner.setOnBannerListener {
when (data[it].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[it].url, "") }
}
"3" -> {
viewModel.enterRoom(data[it].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[it].aid).navigation()
}
"5" -> {
context?.let { it1 ->
X5WebViewActivity.forward(
it1, data[it].url + "?login_token=" + UserManager.user.login_token, ""
)
}
}
}
}
mDataBinding.banner.setOnClickListener {
when (data[0].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[0].url, "") }
}
"3" -> {
viewModel.enterRoom(data[0].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[0].aid).navigation()
}
"5" -> {
context?.let { it1 ->
X5WebViewActivity.forward(
it1, data[0].url + "?login_token=" + UserManager.user.login_token, ""
)
}
}
}
}
}
class MyPagerAdapter(fm: FragmentManager, private val fs: ArrayList<Fragment>) :
FragmentPagerAdapter(fm) {
override fun getCount(): Int = fs.size
override fun getItem(i: Int): Fragment {
return fs[i]
}
}
private fun getMap(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
map["tid"] = Const.ROOM_TYPE
map["is_top"] = "2"
// map["is_hot"] = "2"
map["page"] = "1"
return map
}
}

View File

@@ -0,0 +1,260 @@
package com.yuyin.mier.module_home.tab.center
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.Const
import com.yuyin.mier.module_home.model.BannerBean
import com.yuyin.mier.module_home.model.RoomListBean
import com.yuyin.mier.repository.CommonRepository
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.CategorRoomBean
import com.yuyin.lib_base.model.RankTopThreeBean
import com.yuyin.lib_base.model.Wxmodel
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.module_home.model.DaySignBean
import com.yuyin.mier.module_home.model.MyRoomList
import com.yuyin.mier.module_home.model.SignSuccesBean
import com.yuyin.mier.module_home.model.TopCpBean
import com.yuyin.mier.module_home.model.WeekHomeBean
import com.yuyin.mier.module_my.model.InviteInfoBean
import com.yuyin.mier.module_my.model.RenewalAmountBean
import com.yuyin.mier.module_my.model.UserRoomVisitor
import com.yuyin.mier.module_my.model.VIPData
import com.yuyin.module_live.model.RankListBean
import com.yuyin.module_live.model.SignedArtistBean
import com.yuyin.module_live.repository.LiveRepository
class MainCenterViewModel : BaseViewModel() {
var repository = CommonRepository()
var rankTopThreeBean = MutableLiveData<RankTopThreeBean>()
var roomData = MutableLiveData<List<RoomListBean>>()
var roomData2 = MutableLiveData<List<RoomListBean>>()
var openVerify = MutableLiveData<Any>()
var roomCategories = MutableLiveData<List<CategorRoomBean>>()
fun loadRoomCategories() {
launchUI {
val result = repository.roomCategories(Const.ROOM_TYPE)
roomCategories.value = result.data;
}
}
fun loadRoomData(map: MutableMap<String, String>) {
launchUI {
val result = repository.getRoomList(map)
roomData.value = result.data;
}
}
fun loadRoomData2(map: MutableMap<String, String>) {
launchUI {
val result = repository.getRoomList(map)
roomData2.value = result.data;
}
}
var bannerListBean = MutableLiveData<List<BannerBean>>()
fun getBannerList() {
launchUI {
val result = repository.get_banner_list()
bannerListBean.value = result.data;
}
}
fun get_user_rank_top() {
launchUI {
val result = repository.get_user_rank_top()
rankTopThreeBean.value = result.data;
}
}
fun user_open_verify_token() {
launchUI {
val result = repository.user_open_verify_token()
openVerify.value = result.data
}
}
var liveRepository = LiveRepository()
var rankDataTop = MutableLiveData<List<RankListBean>>()
fun loadRankData(rid: String, time: String, type: String) {
launchUI {
val result = liveRepository.get_room_rank(rid, time, type)
rankDataTop.value = result.data.list
}
}
val vipData = MutableLiveData<VIPData>()
fun get_vip_list() {
launchUI {
val result = repository.get_vip_list()
vipData.value = result.data
}
}
fun pay_vip_order(
vid: String, pay_type: String
) {
launchUI {
val result = repository.pay_vip_order(vid, pay_type)
result.msg.showToast()
get_vip_list()
}
}
var sendCodeClick: MutableLiveData<Boolean> = MutableLiveData(true)
var sendCode: MutableLiveData<String> = MutableLiveData()
var phone: MutableLiveData<String> = MutableLiveData()
var code: MutableLiveData<String> = MutableLiveData()
fun verification(captcha_code: String, captcha_key: String) {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (sendCodeClick.value == false) return
sendCodeClick.value = false
sendCode.value = "发送"
launchUI {
val result = repository.verification(phone.value.toString(), "2",captcha_code,captcha_key)
result.msg.showToast()
}
}
val inviteInfoBean = MutableLiveData<InviteInfoBean>()
fun get_update_invite_info() {
launchUI {
val result = repository.get_update_invite_info()
inviteInfoBean.value = result.data
}
}
var weixin = MutableLiveData<Wxmodel>()
var alipay = MutableLiveData<String>()
fun update_user_inviter(
user_id: String, sms_code: String, pay_type: String
) {
launchUI {
val result = repository.update_user_inviter(user_id, sms_code, pay_type)
}
}
val roomRandom = MutableLiveData<UserRoomVisitor>()
fun now_room_category(rid: String) {
launchUI {
val result = repository.now_room_category(rid)
roomRandom.value = result.data
}
}
var renewalAmountBean = MutableLiveData<RenewalAmountBean>()
fun user_renewal_contract_status(id: String) {
launchUI {
val result = repository.user_renewal_contract_status(id)
result.data.id = id
renewalAmountBean.value = result.data
}
}
fun user_renewal_contract(id: String) {
launchUI {
val result = repository.user_renewal_contract(id)
result.data
get_user_contract_list(UserManager.user.uid.toString(), "1", "20")
}
}
val signedArtist = MutableLiveData<List<SignedArtistBean>>()
fun get_user_contract_list(
uid: String, page: String, page_limit: String
) {
launchUI {
val result = liveRepository.get_user_contract_list(uid, page, page_limit)
signedArtist.value = result.data
}
}
fun user_cancel_contract(id: String, uid: String) {
launchUI {
repository.user_cancel_contract(id)
get_user_contract_list(uid, "1", "20")
}
}
val myRoomList = MutableLiveData<ArrayList<MyRoomList>>()
fun get_user_room_power_list() {
launchUI {
val result = repository.get_user_room_power_list()
myRoomList.value = result.data
}
}
fun user_retire_room_power(rid: String, user_type: String) {
launchUI {
val result = repository.user_retire_room_power(rid, user_type)
get_user_room_power_list()
}
}
val WeekHomeList = MutableLiveData<ArrayList<WeekHomeBean>>()
fun now_week_rank_four() {
launchUI {
val result = repository.now_week_rank_four()
WeekHomeList.value=result.data
}
}
val TopCpBean = MutableLiveData<TopCpBean>()
fun top_cp() {
launchUI {
val result = repository.top_cp()
TopCpBean.value=result.data
}
}
var signDayList = MutableLiveData<DaySignBean>()
var signSucces = MutableLiveData<SignSuccesBean>()
fun user_day_sign_log() {
launchUI {
val result = repository.user_day_sign_log()
signDayList.value=result.data
}
}
var signDayList2 = MutableLiveData<DaySignBean>()
fun user_day_sign_log2() {
launchUI {
val result = repository.user_day_sign_log()
signDayList2.value=result.data
}
}
fun user_day_sign() {
launchUI {
val result = repository.user_day_sign()
signSucces.value=result.data
}
}
}

View File

@@ -0,0 +1,97 @@
package com.yuyin.mier.module_home.tab.center.sign
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.view.Gravity
import android.view.LayoutInflater
import android.view.WindowManager
import androidx.databinding.DataBindingUtil
import com.yuyin.mier.R
import com.yuyin.mier.databinding.DialogSignBinding
import com.yuyin.mier.module_home.model.DaySignBean
import com.yuyin.mier.module_home.tab.center.MainCenterViewModel
import kotlinx.android.synthetic.main.day_sgin.view.*
import kotlinx.android.synthetic.main.day_sgin2.view.*
class SginDialog(context: Context, val main: MainCenterViewModel, val it: DaySignBean) :
Dialog(context) {
private lateinit var mBinding: DialogSignBinding
init {
initDailog(context)
}
private fun initDailog(context: Context) {
val inflater = LayoutInflater.from(context)
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_sign, null, false)
setContentView(mBinding.getRoot())
val win = this.window
val params = win!!.attributes
params.width = WindowManager.LayoutParams.MATCH_PARENT
params.height = WindowManager.LayoutParams.WRAP_CONTENT
params.gravity = Gravity.CENTER
params.horizontalMargin = 10f
win.attributes = params
win.setBackgroundDrawable(context.resources.getDrawable(com.yuyin.lib_base.R.color.translant))
mBinding.tvSignTime.text = "已累计签到" + it.sign_num + ""
if (it.today_sign == "1") {
mBinding.btnSign.setImageResource(R.mipmap.sign_icon7)
} else {
mBinding.btnSign.setImageResource(R.mipmap.sign_icon5)
}
mBinding.day1.tv_day.text = "1"
mBinding.day1.tv_sigin_price.text = it.sign_log[0].award + "金币"
// mBinding.day1.sign_now.visibility = if (it.sign_log[0].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day1.ll_sign.isSelected = if (it.sign_log[0].is_sign == 1) true else false
mBinding.day2.tv_day.text = "2"
mBinding.day2.tv_sigin_price.text = it.sign_log[1].award + "金币"
// mBinding.day2.sign_now.visibility = if (it.sign_log[1].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day2.ll_sign.isSelected = if (it.sign_log[1].is_sign == 1) true else false
mBinding.day3.tv_day.text = "3"
mBinding.day3.tv_sigin_price.text = it.sign_log[2].award + "金币"
// mBinding.day3.sign_now.visibility = if (it.sign_log[2].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day3.ll_sign.isSelected = if (it.sign_log[2].is_sign == 1) true else false
mBinding.day4.tv_day.text = "4"
mBinding.day4.tv_sigin_price.text = it.sign_log[3].award + "金币"
// mBinding.day4.sign_now.visibility = if (it.sign_log[3].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day4.ll_sign.isSelected = if (it.sign_log[3].is_sign == 1) true else false
mBinding.day5.tv_day.text = "5"
mBinding.day5.tv_sigin_price.text = it.sign_log[4].award + "金币"
// mBinding.day5.sign_now.visibility = if (it.sign_log[4].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day5.ll_sign.isSelected = if (it.sign_log[4].is_sign == 1) true else false
mBinding.day6.tv_day.text = "6"
mBinding.day6.tv_sigin_price.text = it.sign_log[5].award + "金币"
// mBinding.day6.sign_now.visibility = if (it.sign_log[5].is_sign == 1) View.VISIBLE else View.GONE
mBinding.day6.ll_sign.isSelected = if (it.sign_log[5].is_sign == 1) true else false
mBinding.day7.tv_day2.text = "7"
mBinding.day7.tv_sigin_price2.text = it.sign_log[6].award + "金币"
if (it.sign_log[6].is_sign == 1){
mBinding.day7.tv_sigin_price2.setTextColor(Color.parseColor("#FFFFFF"))
// mBinding.day7.sign_now2.visibility = View.VISIBLE
mBinding.day7.ll_sign2.isSelected = true
}else{
mBinding.day7.tv_sigin_price2.setTextColor(Color.parseColor("#333333"))
// mBinding.day7.sign_now2.visibility = View.GONE
mBinding.day7.ll_sign2.isSelected = false
}
mBinding.btnSign.setOnClickListener { its ->
dismiss()
if (it.today_sign == "2") {
main.user_day_sign()
}
}
}
}

View File

@@ -0,0 +1,38 @@
package com.yuyin.mier.module_home.tab.center.sign
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater
import android.view.WindowManager
import androidx.databinding.DataBindingUtil
import com.yuyin.mier.R
import com.yuyin.mier.databinding.DialogSignSuccesBinding
import com.yuyin.mier.module_home.tab.center.MainCenterViewModel
class SginSuccessDialog(context: Context, val main: MainCenterViewModel, val award:String) :
Dialog(context) {
private lateinit var mBinding: DialogSignSuccesBinding
init {
initDailog(context)
}
private fun initDailog(context: Context) {
val inflater = LayoutInflater.from(context)
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_sign_succes, null, false)
setContentView(mBinding.getRoot())
val win = this.window
val params = win!!.attributes
params.width = WindowManager.LayoutParams.MATCH_PARENT
params.height = WindowManager.LayoutParams.WRAP_CONTENT
params.gravity = Gravity.CENTER
win.attributes = params
win.setBackgroundDrawable(context.resources.getDrawable(com.yuyin.lib_base.R.color.translant))
mBinding.tvSignPrice.text="签到成功 金币"+award
mBinding!!.btnSign.setOnClickListener {
dismiss()
}
}
}

View File

@@ -0,0 +1,188 @@
package com.yuyin.mier.module_home.tab.center.sub;
import android.content.Context;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.yuyin.lib_base.adapter.RefreshAdapter;
import com.yuyin.mier.R;
import com.yuyin.mier.module_home.model.RoomListBean;
import java.util.Random;
/**
*
*/
public class HomeRecomAdapter extends RefreshAdapter<RoomListBean> {
private Context context;
private int TYPE_N = -2;
public int TYPE_O = -3;
private int type = 0;
private View.OnClickListener mOnClickListener;
/**
* @param context
* @param type -1全部0推荐1热门2其它(目前包含-10)
*/
public HomeRecomAdapter(Context context, int type) {
super(context);
this.context = context;
this.type = type;
mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!canClick()) {
return;
}
Object tag = v.getTag();
if (tag != null) {
int position = (int) tag;
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(mList.get(position), position);
}
}
}
};
}
@Override
public int getItemViewType(int position) {
return type;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_N)
return new Vh(mInflater.inflate(R.layout.item_main_home_recom_hot2, parent, false), viewType);
return new Vh(mInflater.inflate(R.layout.item_main_home_recom_hot, parent, false), viewType);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder vh, int position) {
((Vh) vh).setData(mList.get(position), position);
}
class Vh extends RecyclerView.ViewHolder {
int viewType;
ImageView mCover, riv;
TextView tv_title, tv_title2;
TextView tv_num;
TextView tv_type, tv_id, tv_vis_num,tv_name;
View iv_lianghao;
RecyclerView riv_person;
public Vh(View itemView, int viewType) {
super(itemView);
this.viewType = viewType;
mCover = itemView.findViewById(R.id.cover);
riv = itemView.findViewById(R.id.riv);
tv_title = itemView.findViewById(R.id.tv_title);
tv_title2 = itemView.findViewById(R.id.tv_title2);
tv_num = itemView.findViewById(R.id.tv_num);
tv_type = itemView.findViewById(R.id.tv_type);
tv_id = itemView.findViewById(R.id.tv_id);
iv_lianghao = itemView.findViewById(R.id.iv_lianghao);
tv_vis_num = itemView.findViewById(R.id.tv_vis_num);
riv_person = itemView.findViewById(R.id.riv_person);
tv_name = itemView.findViewById(R.id.tv_name);
itemView.setOnClickListener(mOnClickListener);
}
void setData(RoomListBean bean, int position) {
itemView.setTag(position);
/*int sss = new Random().nextInt(4);
int[] bg22 = {R.mipmap.home_list_img21, R.mipmap.home_list_img22, R.mipmap.home_list_img23,
R.mipmap.home_list_img24, R.mipmap.home_list_img25, R.mipmap.home_list_img26,
R.mipmap.home_list_img27, R.mipmap.home_list_img28, R.mipmap.home_list_img29};
if (bean.getCategory_name().equals("交友")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[0]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("点歌")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[1]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("相亲")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[2]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("游戏")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[3]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("酒吧")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[4]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("互娱")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[5]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("拍卖")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[6]));
tv_type.setText("");
} else if (bean.getCategory_name().equals("K歌")) {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[7]));
tv_type.setText("");
} else {
tv_type.setBackground(mContext.getResources().getDrawable(bg22[8]));
tv_type.setText("" + bean.getCategory_name());
}*/
if (tv_type!= null) tv_type.setText("" + bean.getCategory_name());
if (tv_id != null) {
// if (bean.getSpecial_uid() == 0) {
// iv_lianghao.setVisibility(View.GONE);
tv_id.setText(bean.getRoom_number());
// } else {
// iv_lianghao.setVisibility(View.VISIBLE);
// tv_id.setText("ID:" + bean.getSpecial_uid());
// }
}
if (riv != null) {
Glide.with(context).load(bean.getHead_pic()).into(riv);
}
if (mCover != null)
Glide.with(context).load(bean.getRoom_cover())
.error(R.mipmap.ic_launcher_app).into(mCover);
if (tv_title2 != null) tv_title2.setText("" + bean.getCategory_name());
if (tv_num != null) tv_num.setText("" + bean.getHot_value());
if (tv_title != null) tv_title.setText("" + bean.getRoom_name());
if (tv_vis_num != null) tv_vis_num.setText(bean.getVisitor_num() + "");
if (tv_name != null) tv_name.setText(bean.getNick_name());
if (riv_person != null) {
LinearLayoutManager layoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, true);
riv_person.setLayoutManager(layoutManager);
PersonAdapter personAdapter = new PersonAdapter();
riv_person.setAdapter(personAdapter);
if (riv_person.getItemDecorationCount() == 0) {
riv_person.addItemDecoration(itemDecoration);
}
personAdapter.setNewData(bean.getRoom_micro_list());
}
}
}
RecyclerView.ItemDecoration itemDecoration = new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
if (parent.getChildPosition(view) != 0) {
outRect.right = -15;
}
}
};
}

View File

@@ -0,0 +1,17 @@
package com.yuyin.mier.module_home.tab.center.sub
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.Mic
class PersonAdapter :
BaseQuickAdapter<Mic, BaseViewHolder>(R.layout.item_person, arrayListOf()) {
override fun convert(helper: BaseViewHolder, item: Mic) {
// helper
// .setText(R.id.tv_name, item.send_user_info.nick_name)
Glide.with(mContext).load(item.head_pic).error(R.mipmap.ic_launcher_app)
.placeholder(R.mipmap.ic_launcher_app).into(helper.getView(R.id.head))
}
}

View File

@@ -0,0 +1,148 @@
package com.yuyin.mier.module_home.tab.center.sub
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.view.ItemDecoration
import com.yuyin.mier.R
import com.yuyin.mier.databinding.FragmentRoomListBinding
import java.util.*
class RoomListFragment : BaseDataBindingFragment<RoomListViewModel, FragmentRoomListBinding>() {
var cateId: String = ""
lateinit var adapter: HomeRecomAdapter
companion object {
fun getInstance(tag_type: Int, cateId: Int): RoomListFragment {
val fragment = RoomListFragment()
val bundle = Bundle()
bundle.putInt("tag_type", tag_type)
bundle.putInt("cateId", cateId)
fragment.arguments = bundle
return fragment
}
}
override fun startObserve() {
viewModel.roomData.observe(requireActivity(), {
if (page == 1)
adapter.list.clear()
adapter.list.addAll(it)
adapter.notifyDataSetChanged()
})
viewModel.getFinally().observe(requireActivity(), {
mDataBinding.srlView.finishLoadMore()
mDataBinding.srlView.finishRefresh()
})
// viewModel.roomCategories.observe(this, {
// cateId = it[0].cate_id
// viewModel.loadRoomData(getMap())
// })
}
fun resubData(cate_id: String) {
cateId = cate_id
viewModel.loadRoomData(getMap())
}
override fun getLayoutId(): Int = R.layout.fragment_room_list
override fun initView() {
}
override fun onResume() {
super.onResume()
page = 1
viewModel.loadRoomData(getMap())
}
override fun initData() {
val type = requireArguments().getInt("tag_type")
adapter = HomeRecomAdapter(activity, -3)
// val decoration = ItemDecoration(context, 0x00000000, 7F, 7F)
// decoration.isOnlySetItemOffsetsButNoDraw = true
// mDataBinding.rvView.addItemDecoration(decoration)
mDataBinding.rvView.adapter = adapter
val gridLayoutManager = GridLayoutManager(this.context, 2)
// gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
// override fun getSpanSize(position: Int): Int {
// if (position < 6) {
// return 2
// }
//// if (position < 10) {
//// return 4
//// }
// return 3
// }
//
// }
mDataBinding.rvView.layoutManager = gridLayoutManager
if (mDataBinding.rvView.itemDecorationCount == 0) {
mDataBinding.rvView.addItemDecoration(ItemDecoration(context, 0x00000000, 7F, 10F))
}
adapter.setOnItemClickListener { bean, position ->
viewModel.enterRoom(bean.rid, "", activity as AppCompatActivity)
}
if (type == Const.ROOM_TYPE_HOT) {
// mDataBinding.ivRightShow.visibility = View.GONE
viewModel.loadRoomData(getMap())
} else {
// mDataBinding.ivRightShow.visibility = View.VISIBLE
// viewModel.loadRoomCategories()
viewModel.loadRoomData(getMap())
}
}
override fun initEvent() {
mDataBinding.srlView.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
viewModel.loadRoomData(getMap())
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
viewModel.loadRoomData(getMap())
}
})
}
var page = 1
private fun getMap(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
val type = requireArguments().getInt("tag_type")
cateId = requireArguments().getInt("cateId").toString()
map["tid"] = Const.ROOM_TYPE
when (type) {
Const.ROOM_TYPE_ALL -> {
}
Const.ROOM_TYPE_TOP -> {
map["is_top"] = "2"
}
Const.ROOM_TYPE_HOT -> {
map["is_hot"] = "2"
}
else -> {
if (cateId != "-1")
map["cate_id"] = cateId
}
}
map["page"] = page.toString()
return map
}
}

View File

@@ -0,0 +1,53 @@
package com.yuyin.mier.module_home.tab.center.sub
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.CategorRoomBean
import com.yuyin.mier.module_home.model.BannerBean
import com.yuyin.mier.module_home.model.RoomListBean
import com.yuyin.mier.repository.CommonRepository
class RoomListViewModel : BaseViewModel() {
var repository = CommonRepository()
var roomData = MutableLiveData<List<RoomListBean>>()
fun loadRoomData(map: MutableMap<String, String>) {
launchUI {
val result = repository.getRoomList(map)
roomData.value = result.data;
}
}
var roomData2 = MutableLiveData<List<RoomListBean>>()
fun loadRoomData2(map: MutableMap<String, String>) {
launchUI {
val result = repository.getRoomList(map)
roomData2.value = result.data;
}
}
var roomData3 = MutableLiveData<List<RoomListBean>>()
fun loadRoomData3(map: MutableMap<String, String>) {
launchUI {
val result = repository.getRoomList(map)
roomData3.value = result.data;
}
}
var roomCategories = MutableLiveData<List<CategorRoomBean>>()
fun loadRoomCategories() {
launchUI {
val result = repository.roomCategories(Const.ROOM_TYPE)
roomCategories.value = result.data;
}
}
var bannerListBean = MutableLiveData<List<BannerBean>>()
fun getBannerList() {
launchUI {
val result = repository.get_banner_list()
bannerListBean.value = result.data;
}
}
}

View File

@@ -0,0 +1,230 @@
package com.yuyin.mier.module_home.tab.center.sub
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.arouter.launcher.ARouter
import com.youth.banner.BannerConfig
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseViewModelFragment
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.view.GlideImageLoader
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.BannerBean
import kotlinx.android.synthetic.main.fragment_room_type.*
import java.util.*
class RoomTypeFragment : BaseViewModelFragment<RoomListViewModel>() {
lateinit var adapter2: HomeRecomAdapter
lateinit var adapter: HomeRecomAdapter
private val fsRes: ArrayList<Fragment> = ArrayList<Fragment>() //fragment集合
private val titleRes = ArrayList<String>() //tab标题集合
private lateinit var mAdapter: MyPagerAdapter
override fun getLayoutId(): Int = R.layout.fragment_room_type
override fun initView() {
adapter2 = HomeRecomAdapter(activity, 0)
rv_view2.adapter = adapter2
val gridLayoutManager2 = LinearLayoutManager(activity, RecyclerView.HORIZONTAL,false)
rv_view2.layoutManager = gridLayoutManager2
adapter2.setOnItemClickListener { bean, position ->
viewModel.enterRoom(bean.rid, "", activity as AppCompatActivity)
}
adapter = HomeRecomAdapter(activity, -3)
rv_view.adapter = adapter
val gridLayoutManager = GridLayoutManager(activity,2)
rv_view.layoutManager = gridLayoutManager
adapter.setOnItemClickListener { bean, position ->
viewModel.enterRoom(bean.rid, "", activity as AppCompatActivity)
}
}
override fun initData() {
// viewModel.loadRoomCategories()
viewModel.getBannerList()
viewModel.loadRoomData2(getMap1())
viewModel.loadRoomData3(getMap2())
}
private fun initBanner(data: List<BannerBean>) {
val imgurls: MutableList<String> = ArrayList()
for (list in data) {
imgurls.add(list.image)
}
//设置图片加载器
banner.setImageLoader(GlideImageLoader())
//设置图片集合
banner.setImages(imgurls)
//设置指示器位置当banner模式中有指示器时
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
banner.setIndicatorGravity(BannerConfig.CENTER)
//设置自动轮播默认为true
banner.isAutoPlay(true)
//banner设置方法全部调用完毕时最后调用
banner.start()
banner.setOnBannerListener {
when (data[it].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[it].url, "") }
}
"3" -> {
viewModel.enterRoom(data[it].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[it].aid)
.navigation()
}
}
}
banner.setOnClickListener {
when (data[0].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[0].url, "") }
}
"3" -> {
viewModel.enterRoom(data[0].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[0].aid)
.navigation()
}
}
}
}
override fun initEvent() {
}
override fun startObserve() {
viewModel.roomData2.observe(requireActivity(), {
adapter2.list.clear()
adapter2.list.addAll(it)
adapter2.notifyDataSetChanged()
})
viewModel.roomData3.observe(requireActivity(), {
adapter.list.clear()
adapter.list.addAll(it)
adapter.notifyDataSetChanged()
})
viewModel.bannerListBean.observe(this, {
if (it == null) return@observe
initBanner(it)
})
viewModel.roomCategories.observe(this, {
titleRes.add("热门")
fsRes.add(RoomListFragment.getInstance(Const.ROOM_TYPE_HOT, -1))
// for(i in it.indices){
// titleRes.add(it[i].category_name)
// fsRes.add(RoomListFragment.getInstance(Const.ROOM_TYPE_COMM,it[i].cate_id.toInt()))
// }
mAdapter = MyPagerAdapter(childFragmentManager, fsRes, titleRes)
// view_pager.adapter = mAdapter
// tabLayout.setupWithViewPager(view_pager)
// view_pager.offscreenPageLimit = fsRes.size
// //设置自定义tab
// setCustomViews()
view_pager.adapter = mAdapter
tabLayout.setViewPager(view_pager)
tabLayout.setSnapOnTabClick(true)
view_pager.offscreenPageLimit = fsRes.size
})
}
// /**
// * 热门,房间
// */
// private void loadRecommentData() {
// //热门推荐
// RxUtils.loading(commonModel.is_popular(), this)
// .subscribe(new ErrorHandleSubscriber<RecommenRoomBean>(mErrorHandler) {
// @Override
// public void onNext(RecommenRoomBean categorRoomBean) {
// RecomFragment recomFragment = (RecomFragment) mFragments.get(0);
// recomFragment.setPopularData(categorRoomBean);
// }
// });
// //密聊推荐
// RxUtils.loading(commonModel.secret_chat(), this)
// .subscribe(new ErrorHandleSubscriber<RecommenRoomBean>(mErrorHandler) {
// @Override
// public void onNext(RecommenRoomBean categorRoomBean) {
// RecomFragment recomFragment = (RecomFragment) mFragments.get(0);
// recomFragment.setSecretData(categorRoomBean);
// }
// });
// }
/**
* 设置每个TabLayout的自定义View
* 注意TabLayout和Viewpager配合使用的时候必须先mViewPager.setAdapter再初始化该方法然后addOnTabSelectedListener因为adapter刷新会让mCustomViewView空
*/
fun setCustomViews() {
// val mSelectedTabPosition = tabLayout.selectedTabPosition
// for (i in titleRes.indices) {
// tabLayout.getTabAt(i)!!.customView = getTabView(i, mSelectedTabPosition)
// // if (i == mSelectedTabPosition) {
//// changeTabSelect(mTab);
//// } else {
//// changeTabNormal(mTab);
//// }
// }
}
/**
* 提供TabLayout的View
* 根据index返回不同的View
* 主意默认选中的View要返回选中状态的样式
*/
private fun getTabView(index: Int, mSelectedTabPosition: Int): View? {
//自定义View布局
val view: View = LayoutInflater.from(context).inflate(R.layout.item_tablayout_header, null)
val title = view.findViewById<View>(R.id.tv_name) as TextView
val v_view = view.findViewById<View>(R.id.v_view)
title.text = titleRes.get(index)
title.isSelected = index == mSelectedTabPosition
v_view.isSelected = index == mSelectedTabPosition
title.textSize = if (index == mSelectedTabPosition) 14f else 14f
return view
}
var page = 1
private fun getMap1(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
map["tid"] = Const.ROOM_TYPE
map["is_top"] = "2"
// map["is_hot"] = "2"
map["page"] = page.toString()
return map
}
private fun getMap2(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
map["tid"] = Const.ROOM_TYPE
// map["is_top"] = "2"
map["is_hot"] = "2"
map["page"] = page.toString()
return map
}
}

View File

@@ -0,0 +1,135 @@
package com.yuyin.mier.module_home.tab.dynamic
import android.graphics.Color
import android.graphics.Typeface
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import com.alibaba.android.arouter.launcher.ARouter
import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.base.BaseViewModelFragment
import com.yuyin.module_community.ui.main.DynamicFragment
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.fragment_community.*
import java.util.*
class MainCommunityFragment : BaseViewModelFragment<BaseViewModel>() {
private val fsRes: ArrayList<Fragment> = ArrayList<Fragment>() //fragment集合
private val titleRes = ArrayList<String>() //tab标题集合
private val dataTab: MutableList<CustomTabEntity> =
ArrayList<CustomTabEntity>() //CommonTabLayout 所需数据集合
private lateinit var mAdapter: MyPagerAdapter
override fun startObserve() {
}
override fun getLayoutId(): Int = R.layout.fragment_community
override fun initView() {
titleRes.add("最新")
titleRes.add("推荐")
titleRes.add("关注")
// 初始化 Fragment
fsRes.add(DynamicFragment().getInstance("1"))
fsRes.add(DynamicFragment().getInstance("2"))
fsRes.add(DynamicFragment().getInstance("3"))
// 初始化图标
val icon1 = arrayOf(R.mipmap.zuiixn1, R.mipmap.tuijian1, R.mipmap.guanzhi1)
val icon2 = arrayOf(R.mipmap.zuiixn2, R.mipmap.tuijian2, R.mipmap.guanzhi2)
// 添加 Tab 数据
for (i in titleRes.indices) {
dataTab.add(object : CustomTabEntity {
override fun getTabTitle(): String = ""
override fun getTabSelectedIcon(): Int = icon1[i]
override fun getTabUnselectedIcon(): Int = icon2[i]
})
}
// 设置 TabLayout 数据
tab_layout.setTabData(dataTab as ArrayList<CustomTabEntity>)
view_pager.offscreenPageLimit = dataTab.size
// 设置 ViewPager 适配器
mAdapter = MyPagerAdapter(childFragmentManager, fsRes, titleRes)
view_pager.adapter = mAdapter
// 手动实现联动
view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageScrollStateChanged(state: Int) {}
override fun onPageSelected(position: Int) {
tab_layout.currentTab = position
}
})
// 设置 Tab 选择监听
tab_layout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
view_pager.currentItem = position
}
override fun onTabReselect(position: Int) {}
})
}
override fun initData() {
}
override fun initEvent() {
iv_fabu.setOnClickListener {
ARouter.getInstance().build(AroutUtil.COMMUNITY_FABU).navigation()
}
//TabLayout监听
tab_layout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
//显示相应的item界面
view_pager.currentItem = position
}
override fun onTabReselect(position: Int) {}
})
}
private fun setCustomViews() {
/*val mSelectedTabPosition = tab_layout.selectedTabPosition
for (i in titleRes.indices) {
tab_layout.getTabAt(i)!!.customView = getTabView(i, mSelectedTabPosition)
}*/
}
private fun getTabView(index: Int, mSelectedTabPosition: Int): View {
//自定义View布局
val view: View = LayoutInflater.from(context).inflate(R.layout.item_tablayout_header5, null)
val title = view.findViewById<View>(R.id.tv_name) as TextView
// val v_view = view.findViewById<ImageView>(R.id.v_view)
title.text = titleRes[index]
title.isSelected = index == mSelectedTabPosition
// v_view.isSelected = index == mSelectedTabPosition
if (index == mSelectedTabPosition) {
title.setTextColor(Color.parseColor("#111111"))
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f)
title.typeface = Typeface.DEFAULT_BOLD
} else {
title.setTextColor(Color.parseColor("#666666"))
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
title.typeface = Typeface.DEFAULT
}
return view
}
}

View File

@@ -0,0 +1,121 @@
package com.yuyin.mier.module_home.tab.home
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.launcher.ARouter
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.mier.R
import com.yuyin.mier.adapter.RoomZoneListAdapter
import com.yuyin.mier.databinding.FragmentHomeBinding
import com.yuyin.mier.module_home.model.HomeScene
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class HomeFragment : BaseDataBindingFragment<MainHomeViewModel, FragmentHomeBinding>() {
lateinit var roomZoneListAdapter: RoomZoneListAdapter
var age_type = ""
var sex_type = ""
override fun startObserve() {
viewModel.getFinally().observe(this) {
mDataBinding.srlView.finishRefresh()
mDataBinding.srlView.finishLoadMore()
}
viewModel.roomZoneList.observe(this) {
if (page == 1) roomZoneListAdapter.data.clear()
roomZoneListAdapter.addData(it)
}
}
private var type = "1"
private var page = 1
companion object {
fun getInstance(type: String): HomeFragment {
val fragment = HomeFragment()
val bundle = Bundle()
bundle.putString("type", type)
fragment.arguments = bundle
return fragment
}
}
override fun getLayoutId(): Int = R.layout.fragment_home
override fun initView() {
mDataBinding.rvView.layoutManager = LinearLayoutManager(activity)
roomZoneListAdapter = RoomZoneListAdapter()
mDataBinding.rvView.adapter = roomZoneListAdapter
EventBus.getDefault().register(this)
}
override fun initData() {
type = requireArguments().getString("type", "1")
viewModel.get_room_zone_list(getMap())
}
override fun initEvent() {
roomZoneListAdapter.setOnItemChildClickListener { adapter, view, position ->
when (view.id) {
R.id.img -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", roomZoneListAdapter.data.get(position).uid)
.navigation()
}
R.id.tvRoom -> {
viewModel.enterRoom(
roomZoneListAdapter.data.get(position).rid, "",
requireActivity() as AppCompatActivity
)
}
R.id.tvHome -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", roomZoneListAdapter.data.get(position).uid)
.navigation()
}
}
}
mDataBinding.srlView.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
viewModel.get_room_zone_list(getMap())
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
viewModel.get_room_zone_list(getMap())
}
})
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun getSelectType(event: HomeScene){
sex_type = event.sex_type
age_type = event.age_type
page = 1
viewModel.get_room_zone_list(getMap())
}
fun getMap(): HashMap<String, String> {
var map = HashMap<String, String>()
map["page"] = page.toString()
map["zone_type"] = type
map["sex_type"] = sex_type
map["age_type"] = age_type
return map
}
}

View File

@@ -0,0 +1,277 @@
package com.yuyin.mier.module_home.tab.home
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.launcher.ARouter
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.youth.banner.BannerConfig
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.view.GlideImageLoader
import com.yuyin.mier.R
import com.yuyin.mier.adapter.HomePagerHotAdapter
import com.yuyin.mier.adapter.HomePagerTopAdapter
import com.yuyin.mier.databinding.FragmentHomePagerBinding
import com.yuyin.mier.module_home.model.BannerBean
import com.yuyin.mier.module_home.tab.center.MainCenterViewModel
import com.yuyin.mier.search.SearchHisActivity
import java.util.ArrayList
import java.util.HashMap
class HomePagerFragment : BaseDataBindingFragment<MainCenterViewModel, FragmentHomePagerBinding>() {
lateinit var homePagerTopAdapter: HomePagerTopAdapter
lateinit var homePagerHotAdapter: HomePagerHotAdapter
private var page = 1
override fun startObserve() {
viewModel.roomData2.observe(this) {
homePagerTopAdapter.setNewData(it)
}
viewModel.roomData.observe(this) {
if (page == 1) {
homePagerHotAdapter.setNewData(it)
} else {
homePagerHotAdapter.addData(it)
}
}
viewModel.getFinally().observe(this) {
mDataBinding.smart.finishLoadMore()
mDataBinding.smart.finishRefresh()
}
viewModel.bannerListBean.observe(this) {
initBanner(it)
}
viewModel.rankDataTop.observe(this) {
if (it.isNullOrEmpty()) {
mDataBinding.ivRankHead1.setImageResource(R.mipmap.ic_launcher_app)
mDataBinding.tvRankValue1.text = "0"
mDataBinding.tvRankNickName1.text = "虚位以待"
mDataBinding.topRingHead.setImageResource(R.mipmap.ic_launcher_app)
mDataBinding.topRingValue.text = "0"
mDataBinding.topRingNickName.text = "虚位以待"
} else if (it.isNotEmpty()) {
GlideUtil.loadImglogo(requireContext(), it[0].head_pic, mDataBinding.ivRankHead1)
mDataBinding.tvRankValue1.text = it[0].contribution_value.toString()
mDataBinding.tvRankNickName1.text = it[0].nick_name
GlideUtil.loadImglogo(requireContext(), it[0].head_pic, mDataBinding.topRingHead)
mDataBinding.topRingValue.text = it[0].contribution_value.toString()
mDataBinding.topRingNickName.text = it[0].nick_name
}
if (it.size < 2 || it.isNullOrEmpty()) {
mDataBinding.ivRankHead2.setImageResource(R.mipmap.ic_launcher_app)
mDataBinding.tvRankValue2.text = "0"
mDataBinding.tvRankNickName2.text = "虚位以待"
} else if (it.size > 1) {
GlideUtil.loadImglogo(requireContext(), it[1].head_pic, mDataBinding.ivRankHead2)
mDataBinding.tvRankValue2.text = it[1].contribution_value
mDataBinding.tvRankNickName2.text = it[1].nick_name
}
if (it.size < 3 || it.isNullOrEmpty()) {
mDataBinding.ivRankHead3.setImageResource(R.mipmap.ic_launcher_app)
mDataBinding.tvRankValue3.text = "0"
mDataBinding.tvRankNickName3.text = "虚位以待"
} else if (it.size > 2) {
GlideUtil.loadImglogo(requireContext(), it[2].head_pic, mDataBinding.ivRankHead3)
mDataBinding.tvRankValue3.text = it[2].contribution_value
mDataBinding.tvRankNickName3.text = it[2].nick_name
}
}
}
override fun getLayoutId(): Int {
return R.layout.fragment_home_pager
}
override fun initView() {
}
override fun initData() {
mDataBinding.rvTop.layoutManager = GridLayoutManager(requireContext(), 3)
homePagerTopAdapter = HomePagerTopAdapter()
mDataBinding.rvTop.adapter = homePagerTopAdapter
mDataBinding.rvHot.layoutManager = LinearLayoutManager(requireContext())
homePagerHotAdapter = HomePagerHotAdapter()
mDataBinding.rvHot.adapter = homePagerHotAdapter
viewModel.loadRoomData(getHotMap())
viewModel.loadRoomData2(getTopMap())
viewModel.getBannerList()
viewModel.loadRankData("", "1", "1")
}
override fun initEvent() {
mDataBinding.constraint.setOnClickListener {
ARouter.getInstance().build(AroutUtil.LIVE_RANK).withInt("selectTab", 0).navigation()
}
mDataBinding.ivSearch.setOnClickListener {
startActivity(Intent(requireContext(), SearchHisActivity::class.java))
}
mDataBinding.ivRank.setOnClickListener {
ARouter.getInstance().build(AroutUtil.LIVE_RANK).withInt("selectTab", 0).navigation()
}
mDataBinding.smart.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
viewModel.loadRoomData(getHotMap())
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
viewModel.loadRoomData(getHotMap())
}
})
homePagerTopAdapter.setOnItemClickListener { adapter, view, position ->
viewModel.enterRoom(
homePagerTopAdapter.data[position].rid.toString(), "",
requireActivity() as AppCompatActivity
)
}
homePagerHotAdapter.setOnItemClickListener { adapter, view, position ->
viewModel.enterRoom(
homePagerHotAdapter.data[position].rid.toString(), "",
requireActivity() as AppCompatActivity
)
}
}
private fun initBanner(data: List<BannerBean>) {
val imgurls: MutableList<String> = ArrayList()
for (list in data) {
imgurls.add(list.image)
}
//设置图片加载器
mDataBinding.banner.setImageLoader(GlideImageLoader())
//设置图片集合
mDataBinding.banner.setImages(imgurls)
//设置指示器位置当banner模式中有指示器时
mDataBinding.banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
mDataBinding.banner.setIndicatorGravity(BannerConfig.CENTER)
//设置自动轮播默认为true
mDataBinding.banner.isAutoPlay(true)
//banner设置方法全部调用完毕时最后调用
mDataBinding.banner.start()
mDataBinding.banner.setOnBannerListener {
when (data[it].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[it].url, "") }
}
"3" -> {
viewModel.enterRoom(data[it].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[it].aid)
.navigation()
}
"5" -> {
context?.let { it1 ->
X5WebViewActivity.forward(
it1,
data[it].url + "?login_token=" + UserManager.user.login_token,
""
)
}
}
}
}
mDataBinding.banner.setOnClickListener {
when (data[0].type) {
"1" -> {
}
"2" -> {
context?.let { it1 -> X5WebViewActivity.forward(it1, data[0].url, "") }
}
"3" -> {
viewModel.enterRoom(data[0].aid, "", activity as AppCompatActivity)
}
"4" -> {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", data[0].aid)
.navigation()
}
"5" -> {
context?.let { it1 ->
X5WebViewActivity.forward(
it1,
data[0].url + "?login_token=" + UserManager.user.login_token,
""
)
}
}
}
}
}
private fun getHotMap(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
map["tid"] = Const.ROOM_TYPE
map["is_hot"] = "2"
map["page"] = page.toString()
return map
}
private fun getTopMap(): MutableMap<String, String> {
val map: MutableMap<String, String> = HashMap()
map["tid"] = Const.ROOM_TYPE
map["is_top"] = "2"
map["page"] = "1"
return map
}
}

View File

@@ -0,0 +1,63 @@
package com.yuyin.mier.module_home.tab.home
import android.content.Intent
import androidx.fragment.app.Fragment
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.mier.R
import com.yuyin.mier.databinding.FragmentHomeMainBinding
import com.yuyin.mier.module_home.model.HomeScene
import com.yuyin.mier.search.SearchHisActivity
import com.yuyin.mier.view.SceneDialog
import kotlinx.android.synthetic.main.fragment_home_main.*
import org.greenrobot.eventbus.EventBus
class MainHomeFragment : BaseDataBindingFragment<MainHomeViewModel, FragmentHomeMainBinding>() {
private val titleList: ArrayList<String> = ArrayList()
private val mFragments: ArrayList<Fragment> = ArrayList()
private var mAdapter: MyPagerAdapter? = null
override fun startObserve() {
}
override fun getLayoutId(): Int = R.layout.fragment_home_main
override fun initView() {
}
override fun initData() {
titleList.add("推荐")
mFragments.add(HomeFragment.getInstance("1"))
titleList.add("在线")
mFragments.add(HomeFragment.getInstance("2"))
mAdapter = MyPagerAdapter(childFragmentManager, mFragments, titleList)
view_pager.adapter = mAdapter
tab_layout.setViewPager(view_pager)
tab_layout.setSnapOnTabClick(true)
view_pager.offscreenPageLimit = mFragments.size
tab_layout.currentTab = 1
}
override fun initEvent() {
mDataBinding.scene.setOnClickListener {
var sceneDialog = SceneDialog(requireContext())
sceneDialog.setOnReturnSectListener(object : SceneDialog.OnReturnSectListener {
override fun getType(sex_type: String, age_type: String) {
EventBus.getDefault().post(HomeScene(sex_type, age_type))
}
})
sceneDialog.show()
}
mDataBinding.search.setOnClickListener {
startActivity(Intent(requireContext(), SearchHisActivity::class.java))
}
}
}

View File

@@ -0,0 +1,20 @@
package com.yuyin.mier.module_home.tab.home
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.module_home.model.RoomZoneList
import com.yuyin.mier.repository.CommonRepository
class MainHomeViewModel : BaseViewModel() {
var repository = CommonRepository()
var roomZoneList = MutableLiveData<ArrayList<RoomZoneList>>()
fun get_room_zone_list(map: MutableMap<String, String>) {
launchUI {
var result = repository.get_room_zone_list(map)
roomZoneList.value = result.data
}
}
}

View File

@@ -0,0 +1,48 @@
package com.yuyin.mier.module_home.tab.home.teen
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater
import android.view.WindowManager
import androidx.databinding.DataBindingUtil
import com.yuyin.mier.R
import com.yuyin.mier.databinding.DialogAdolescentModelBinding
class AdolescentModelDialog(context: Context) : Dialog(context) {
private lateinit var binding: DialogAdolescentModelBinding
init {
initDialog()
}
private fun initDialog() {
val inflater = LayoutInflater.from(context)
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_adolescent_model, null, false)
setContentView(binding.root)
val win = this.window
val params = win?.attributes
params?.gravity = Gravity.CENTER
params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT
win?.attributes = params
win?.setBackgroundDrawableResource(android.R.color.transparent)
initView()
}
fun getBinding(): DialogAdolescentModelBinding {
return binding
}
private fun initView() {
}
}

View File

@@ -0,0 +1,90 @@
package com.yuyin.mier.module_home.tab.home.teen
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityTeenModeBinding
class TeenModeActivity : BaseDataBindingActivity<TeenModeViewModel, ActivityTeenModeBinding>() {
lateinit var passwordDialog: TeenPasswordDialog
override fun startObserve() {
viewModel.userInfoData.observe(this) {
if (it.is_teenager == 1) {
mDataBinding.tvOpen.text = "关闭"
mDataBinding.tvTeenType.text = "青少年模式已开启"
mDataBinding.ivIcon.setImageResource(R.mipmap.teen_model_ic2)
passwordDialog = TeenPasswordDialog(this,1,viewModel)
} else {
mDataBinding.tvOpen.text = "开启"
mDataBinding.tvTeenType.text = "青少年模式已关闭"
mDataBinding.ivIcon.setImageResource(R.mipmap.teen_model_ic)
passwordDialog = TeenPasswordDialog(this,0,viewModel)
}
}
}
override fun getLayoutId(): Int {
return R.layout.activity_teen_mode
}
override fun initView() {
// mDataBinding.toolbar.findViewById<TextView>(R.id.tv_main_title).text = "青少年模式"
}
override fun initData() {
viewModel.loadUserInfo()
}
override fun initEvent() {
// mDataBinding.changePsd.setOnClickListener {
//
// val intent = Intent(this, TeenModeChangeActivity::class.java)
// intent.putExtra("type", "2")
// ActivityUtils.startActivity(intent)
//
// }
//
mDataBinding.tvAgreement.setOnClickListener {
X5WebViewActivity.forward(this, Const.PAGE_ERTONG, "《语音儿童个人信息保护规则》")
}
mDataBinding.tvOpen.setOnClickListener {
//
// if (viewModel.userInfoData.value?.is_real == "2") {
// "未实名认证不能开启青少年模式".showToast()
// return@setOnClickListener
// }
//
if (!mDataBinding.checkbox.isChecked) {
"请同意儿童个人信息保护规则".showToast()
return@setOnClickListener
}
passwordDialog.show()
// val intent = Intent(this, TeenModeChangeActivity::class.java)
// if (mDataBinding.tvTeenType.text.toString() == "青少年模式已关闭") {
// intent.putExtra("type", "1")
// } else {
// intent.putExtra("type", "3")
// }
// ActivityUtils.startActivity(intent)
}
}
}

View File

@@ -0,0 +1,147 @@
package com.yuyin.mier.module_home.tab.home.teen
import android.content.Intent
import com.blankj.utilcode.util.ActivityUtils
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityTeenModeChangeBinding
class TeenModeChangeActivity :
BaseDataBindingActivity<TeenModeViewModel, ActivityTeenModeChangeBinding>() {
private var type = ""
private var set_pass = ""
private var confirm_pass = ""
private var old_pass = ""
private var new_pass = ""
private var close_pass = ""
override fun startObserve() {
/*viewModel.success.observe(this) {
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
finish()
}*/
viewModel.verifySucceeded.observe(this) {
// ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
// finish()
val intent = Intent(this, TeenModeChangeActivity::class.java)
intent.putExtra("type", "1")
ActivityUtils.startActivity(intent)
}
/*viewModel.getError().observe(this){
if (it is ApiException){
if (it.code == 201){
mDataBinding.etContent.clear()
}
}
}*/
}
override fun getLayoutId(): Int {
return R.layout.activity_teen_mode_change
}
override fun initView() {
}
override fun initData() {
type = intent.getStringExtra("type").toString()
/*when (type) {
"1" -> {
mDataBinding.tvTop.text = "设置密码"
mDataBinding.tvPassTip.text = "关闭青少年模式时,需输入该密码"
}
"2" -> {
mDataBinding.tvTop.text = "验证密码"
mDataBinding.llComplaint.visibility = View.VISIBLE
mDataBinding.pass.visibility = View.GONE
mDataBinding.tvPassTip.text = "关闭青少年模式,请输入开启时设置的密码"
}
else -> {
mDataBinding.tvTop.text = "验证密码"
mDataBinding.llComplaintTip.visibility = View.VISIBLE
}
}*/
}
override fun initEvent() {
/*mDataBinding.etContent.setOnInputFinishListener {
if (type == "1") {
if (mDataBinding.tvTitle.text.toString() == "输入密码") {
set_pass = mDataBinding.etContent.content
mDataBinding.tvTitle.text = "确认密码"
mDataBinding.etContent.clear()
} else {
confirm_pass = mDataBinding.etContent.content
viewModel.open_teen_mode("1", set_pass, set_pass)
}
} else if (type == "2") {
if (mDataBinding.tvTitle.text.toString() == "请输入旧密码") {
old_pass = mDataBinding.etContent.content
mDataBinding.tvTitle.text = "请输入新密码"
mDataBinding.etContent.clear()
} else {
new_pass = mDataBinding.etContent.content
viewModel.open_teen_mode("2", new_pass, old_pass)
}
} else {
if (mDataBinding.tvTitle.text.toString() == "输入密码") {
close_pass = mDataBinding.etContent.content
viewModel.close_teen_mode("1", close_pass)
}
}
}*/
/*mDataBinding.tvComplaint.setOnClickListener {
val intent = Intent(this, TeenModeChangeActivity::class.java)
intent.putExtra("type", "2")
ActivityUtils.startActivity(intent)
}*/
mDataBinding.tvNext.setOnClickListener {
if (mDataBinding.etNickname.text.isEmpty()) {
"请输入真实姓名".showToast()
return@setOnClickListener
}
if (mDataBinding.etCard.text.isEmpty()) {
"请输入身份证号".showToast()
return@setOnClickListener
}
viewModel.edit_teen_mode(
mDataBinding.etCard.text.toString(),
mDataBinding.etNickname.text.toString(),
)
}
}
}

View File

@@ -0,0 +1,51 @@
package com.yuyin.mier.module_home.tab.home.teen
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.repository.CommonRepository
class TeenModeViewModel : BaseViewModel() {
private val repository = CommonRepository()
var success = MutableLiveData<Any>()
fun open_teen_mode(
type: String,
password: String,
again_password: String
) {
launchUI {
val result = repository.open_teen_mode(type, password, again_password)
result.msg.showToast()
success.value = result.data
}
}
fun close_teen_mode(
type: String,
password: String,
) {
launchUI {
val result = repository.close_teen_mode(type, password)
result.msg.showToast()
success.value = result.data
}
}
val verifySucceeded = MutableLiveData<Any>()
fun edit_teen_mode(
card_id: String,
real_name: String,
) {
launchUI {
val result = repository.edit_teen_mode(card_id, real_name)
verifySucceeded.value = result.data
}
}
}

View File

@@ -0,0 +1,90 @@
package com.yuyin.mier.module_home.tab.home.teen
import android.app.Dialog
import android.content.Intent
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import androidx.databinding.DataBindingUtil
import com.blankj.utilcode.util.ActivityUtils
import com.yuyin.lib_base.http.ApiException
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.databinding.DialogTeenPasswordBinding
class TeenPasswordDialog(val context: TeenModeActivity, val mType: Int, val viewModel: TeenModeViewModel) :
Dialog(context) {
private lateinit var binding: DialogTeenPasswordBinding
init {
initDialog()
}
private fun initDialog() {
val inflater = LayoutInflater.from(context)
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_teen_password, null, false)
setContentView(binding.root)
val win = this.window
val params = win?.attributes
params?.gravity = Gravity.CENTER
params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT
win?.attributes = params
win?.setBackgroundDrawableResource(android.R.color.transparent)
initView()
}
fun getBinding(): DialogTeenPasswordBinding {
return binding
}
private fun initView() {
viewModel.success.observe(context){
dismiss()
context.finish()
}
viewModel.getError().observe(context) {
if (it is ApiException) {
if (it.code == 201) {
binding.etContent.clear()
}
}
}
if (mType == 0) {
binding.tv1.visibility = View.VISIBLE
binding.llComplaintTip.visibility = View.GONE
binding.tvTitle.text = "请设置密码开启"
} else {
binding.tv1.visibility = View.GONE
binding.llComplaintTip.visibility = View.VISIBLE
binding.tvTitle.text = "请输入密码关闭"
binding.tvComplaint.setOnClickListener {
val intent = Intent(context, TeenModeChangeActivity::class.java)
intent.putExtra("type", "2")
ActivityUtils.startActivity(intent)
}
}
binding.btnAgree.setOnClickListener {
var set_pass = binding.etContent.content
if (set_pass.isEmpty() || set_pass.length < 4) {
"请输入密码".showToast()
return@setOnClickListener
}
if (mType == 0) {
viewModel.open_teen_mode("1", set_pass, set_pass)
} else {
viewModel.close_teen_mode("1", set_pass)
}
}
binding.btnRefuse.setOnClickListener {
dismiss()
}
}
}

View File

@@ -0,0 +1,6 @@
package com.yuyin.mier.module_home.tab.my
import com.yuyin.lib_base.base.BaseViewModel
class MainMyViewModel : BaseViewModel() {
}

View File

@@ -0,0 +1,249 @@
package com.yuyin.mier.module_home.tab.my
import android.content.Intent
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import com.alibaba.android.arouter.launcher.ARouter
import com.blankj.utilcode.util.ClipboardUtils
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.UserBean
import com.yuyin.lib_base.util.showToast
import com.yuyin.lib_base.view.WebViewActivity
import com.yuyin.mier.BR
import com.yuyin.mier.R
import com.yuyin.mier.adapter.MyListAdapter
import com.yuyin.mier.adapter.MyListAdapter2
import com.yuyin.mier.databinding.FragmentMyBinding
import com.yuyin.mier.module_home.tab.center.MainCenterViewModel
import com.yuyin.mier.module_home.tab.center.sign.SginDialog
import com.yuyin.mier.module_my.YaoQingActivity
import com.yuyin.mier.module_my.auction.SignedArtistActivity
import com.yuyin.mier.module_my.cp.CPActivity
import com.yuyin.mier.module_my.edituser.ModifyDataActivity
import com.yuyin.mier.module_my.peerage.PeerageActivity
import com.yuyin.mier.module_my.room.MyRoomActivity
import com.yuyin.mier.module_my.set.WxKeFuAt
import com.yuyin.mier.module_my.vip.VipActivity
import kotlinx.android.synthetic.main.activity_user_homepage.*
import kotlinx.android.synthetic.main.fragment_my.*
class MyFragment : BaseDataBindingFragment<MainCenterViewModel, FragmentMyBinding>() {
private lateinit var mAdapter: MyListAdapter
private lateinit var mAdapter2: MyListAdapter2
private var mUserBean: UserBean? = null
override fun startObserve() {
viewModel.userInfoData.observe(this) {
App.guild_id = it.guild_id
App.rid = it.rid
mUserBean = it
loadImage(mDataBinding.ivHead, it.head_pic, R.mipmap.ic_launcher_app)
// loadImage(mDataBinding.ivCover, it.head_pic, R.mipmap.ic_launcher_app)
loadImage(mDataBinding.ivJuewei, it.nobility_image)
if (it.nobility_image.isNotEmpty()) {
mDataBinding.ivJuewei.visibility = View.VISIBLE
} else {
mDataBinding.ivJuewei.visibility = View.GONE
}
mDataBinding.textCP.text = it.cp_num.toString()
loadImage(
mDataBinding.ivGongxian, it.contribution_level_image, R.mipmap.no_tu
)
loadImage(
mDataBinding.ivMeili, it.charm_level_image, R.mipmap.no_tu
)
// if (it.is)
if (it.vid > 0) {
mDataBinding.vipIsOpen.setBackgroundResource(R.mipmap.my_peeg2)
} else {
mDataBinding.vipIsOpen.setBackgroundResource(R.mipmap.my_peeg)
}
mDataBinding.ivUsername.text = it.nick_name
if (it.special_uid == "0") {
mDataBinding.textVip.text = "" + it.uid
loadImage(mDataBinding.ivLianghao, R.mipmap.common_id_img1)
} else {
mDataBinding.textVip.text = "ID:" + it.special_uid
loadImage(mDataBinding.ivLianghao, R.mipmap.common_id_img2)
}
mDataBinding.textCollection.text = it.follow_num
mDataBinding.textFans.text = it.fans_num
mDataBinding.textShouCang.text = it.collect_room_num
}
viewModel.signDayList.observe(this) {
SginDialog(context as AppCompatActivity,viewModel,it).show()
}
}
override fun getLayoutId(): Int = R.layout.fragment_my
override fun initView() {
}
override fun onResume() {
super.onResume()
viewModel.loadUserInfo()
}
override fun initData() {
mAdapter = MyListAdapter()
mAdapter.setNewData(Const.myList1)
mDataBinding.recyclerView1.layoutManager = GridLayoutManager(context, 4)
mDataBinding.recyclerView1.adapter = mAdapter
mAdapter2 = MyListAdapter2()
mAdapter2.setNewData(Const.myList2)
mDataBinding.recyclerView2.layoutManager = GridLayoutManager(context, 2)
mDataBinding.recyclerView2.adapter = mAdapter2
}
override fun initEvent() {
mDataBinding.setVariable(BR.act, this)
mDataBinding.ivEdit.setOnClickListener {
// ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
// .withString("from_id", UserManager.user.uid.toString()).navigation()
startActivity(Intent(requireContext(), ModifyDataActivity::class.java))
}
mDataBinding.ivUsername.setOnClickListener {
startActivity(Intent(requireContext(), ModifyDataActivity::class.java))
}
mDataBinding.ivHead.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", UserManager.user.uid.toString()).navigation()
}
mDataBinding.ivCopy.setOnClickListener {
ClipboardUtils.copyText(viewModel.userInfoData.value!!.uid.toString())
"复制成功".showToast()
}
mAdapter.setOnItemClickListener { adapter, view, position ->
if (mAdapter.getItem(position) == null) return@setOnItemClickListener
val title = mAdapter.getItem(position)!!.title
listClick(title)
}
mAdapter2.setOnItemClickListener { adapter, view, position ->
if (mAdapter2.getItem(position) == null) return@setOnItemClickListener
val title = mAdapter2.getItem(position)!!.title
listClick(title)
}
mDataBinding.ivAdd.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", UserManager.user.uid.toString()).navigation()
}
mDataBinding.ivSetting.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MY_COMM_SET).navigation()
}
mDataBinding.ivQiandao.setOnClickListener {
viewModel.user_day_sign_log()
}
}
open fun listClick(title: String) {
when (title) {
"我的房间" -> {
if (mUserBean == null) return
when (mUserBean!!.is_real) {
"2" -> ARouter.getInstance().build(AroutUtil.PLAY_REAL_NAME).navigation()
"1" -> {
// if (mUserBean!!.rid == "0") {
// "房间信息读取失败...".showToast()
// } else {
// viewModel.enterRoom(mUserBean!!.rid, "", activity as AppCompatActivity)
// }
startActivity(Intent(requireContext(),MyRoomActivity::class.java))
}
"3" -> "实名认证审核中...".showToast()
}
}
"我的装扮" -> ARouter.getInstance().build(AroutUtil.MY_COMM_ZHUANGBAN).navigation()
"装扮商城" -> ARouter.getInstance().build(AroutUtil.MY_COMM_ZHUANGBAN_SHANGCHENG)
.navigation()
"实名认证" -> {
if (mUserBean == null) return
when (mUserBean!!.is_real) {
"2" -> ARouter.getInstance().build(AroutUtil.PLAY_REAL_NAME).navigation()
"1" -> "已认证...".showToast()
"3" -> "实名认证审核中...".showToast()
}
}
"我的钱包" -> ARouter.getInstance().build(AroutUtil.MAIN_MY_MONEY).navigation()
"我的等级" -> ARouter.getInstance().build(AroutUtil.MY_COMM_DENGJI).withString("type", "0")
.navigation()
"魅力等级" -> ARouter.getInstance().build(AroutUtil.MY_COMM_DENGJI).withString("type", "1")
.navigation()
"等级" -> ARouter.getInstance().build(AroutUtil.MY_COMM_DENGJI).navigation()
"礼物记录" -> ARouter.getInstance().build(AroutUtil.MAIN_MY_GIFT_LOG)
.withString("type", "1").withString("title", "礼物收入记录").navigation()
"赠送记录" -> ARouter.getInstance().build(AroutUtil.MAIN_MY_GIFT_LOG)
.withString("type", "2").withString("title", "礼物赠送记录").navigation()
"帮助反馈" -> ARouter.getInstance().build(AroutUtil.MY_COMM_FEEDBACK).navigation()
"系统设置" -> ARouter.getInstance().build(AroutUtil.MY_COMM_SET).navigation()
"我的公会" -> ARouter.getInstance().build(AroutUtil.GHMainActivity).navigation()
"邀请好友" -> {
var intent = Intent(activity, YaoQingActivity::class.java)
intent.putExtra("reg_code", mUserBean?.reg_code)
intent.putExtra("reg_url", mUserBean?.reg_url)
startActivity(intent)
}
//
"关注" -> ARouter.getInstance().build(AroutUtil.LIB_FOLLOW_FANS).withInt("selectTab", 0)
.navigation()
"粉丝" -> ARouter.getInstance().build(AroutUtil.LIB_FOLLOW_FANS).withInt("selectTab", 1)
.navigation()
"收藏" -> ARouter.getInstance().build(AroutUtil.MAIN_MY_SHOUCANG).navigation()
"我的爵位" -> {
startActivity(Intent(requireContext(), PeerageActivity::class.java))
}
"CP" -> {
startActivity(Intent(requireContext(), CPActivity::class.java))
}
"开通会员" -> {
startActivity(Intent(requireContext(), VipActivity::class.java))
}
"签约艺人" -> {
startActivity(Intent(requireContext(), SignedArtistActivity::class.java))
}
"在线客服" ->{
startActivity(Intent(requireContext(), WebViewActivity::class.java))
}
"签到" ->{
viewModel.user_day_sign_log()
}
"入驻联系运营" ->{
startActivity(Intent(requireContext(), WxKeFuAt::class.java))
}
}
}
}

View File

@@ -0,0 +1,80 @@
package com.yuyin.mier.module_home.tab.xiaoxi
import android.content.Intent
import android.view.View
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.alibaba.android.arouter.launcher.ARouter
import com.tencent.qcloud.tuikit.tuiconversation.classicui.page.TUIConversationFragment
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.view.WebViewActivity
import com.yuyin.mier.R
import com.yuyin.mier.adapter.MsgAdapter
import kotlinx.android.synthetic.main.fragment_message.*
class MessageFragment : BaseDataBindingFragment<BaseViewModel, ViewDataBinding>() {
private lateinit var msgAdapter: MsgAdapter
override fun startObserve() {
viewModel.messageCount.observe(this) {
if (it.system_no_read_count > 0) {
system_num.visibility = View.VISIBLE
system_num.text = it.system_no_read_count.toString()
tv_content.text = it.system_last_message.title
} else {
system_num.visibility = View.GONE
system_num.text = ""
}
}
}
override fun getLayoutId(): Int = R.layout.fragment_message
override fun initView() {
val conversationListFragment = TUIConversationFragment()
val manager: FragmentManager = childFragmentManager
val transaction: FragmentTransaction = manager.beginTransaction()
transaction.replace(R.id.container, conversationListFragment as Fragment)
transaction.commit()
}
override fun initData() {
// container.layoutManager = LinearLayoutManager(requireContext())
// msgAdapter = MsgAdapter()
// container.adapter = msgAdapter
}
override fun onResume() {
super.onResume()
// setConversationListener()
viewModel.get_user_message_cover_info()
}
override fun initEvent() {
iv_guanzhu.setOnClickListener {
ARouter.getInstance().build(AroutUtil.LIB_FOLLOW_FANS).withInt("selectTab", 0)
.navigation()
}
iv_fensi.setOnClickListener {
ARouter.getInstance().build(AroutUtil.LIB_FOLLOW_FANS).withInt("selectTab", 1)
.navigation()
}
iv_black.setOnClickListener {
ARouter.getInstance().build(AroutUtil.BLACK_LIST).navigation()
}
gf.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_MESSAGE_OFFICE).navigation()
}
kf.setOnClickListener {
startActivity(Intent(requireContext(), WebViewActivity::class.java))
}
}
}

View File

@@ -0,0 +1,26 @@
package com.yuyin.mier.module_home.tab.xiaoxi.black
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.BlackBean
import java.util.*
class BlackAdapter :
BaseQuickAdapter<BlackBean, BaseViewHolder>(R.layout.item_black, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: BlackBean) {
Glide.with(mContext).load(item.head_pic).into(helper.getView(R.id.v_img))
helper
.setText(R.id.tv_title, item.nick_name)
.setText(R.id.tv_title2, "" + item.uid)
helper.addOnClickListener(R.id.tv_enter)
if (item.sex == "") {
helper.setImageResource(R.id.iv_sex, R.mipmap.login_reg_nan1)
} else {
helper.setImageResource(R.id.iv_sex, R.mipmap.login_reg_nv1)
}
}
}

View File

@@ -0,0 +1,60 @@
package com.yuyin.mier.module_home.tab.xiaoxi.black
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.arouter.AroutUtil.BLACK_LIST
import com.yuyin.lib_base.base.BaseActivity
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.BlackBean
import kotlinx.android.synthetic.main.activity_black_list.*
@Route(path = BLACK_LIST)
class BlackListActivity : BaseActivity<BlackListViewModel>() {
private lateinit var blackAdapter: BlackAdapter
override fun startObserve() {
viewModel.blackData.observe(this) {
if (it.room_visitor_list.isEmpty() && it.room_black_list.isEmpty()) {
ll_nodata.visibility = View.VISIBLE
} else {
ll_nodata.visibility = View.GONE
}
val blackBean = ArrayList<BlackBean>()
blackBean.addAll(it.room_black_list)
blackBean.addAll(it.room_visitor_list)
blackAdapter.setNewData(blackBean)
}
viewModel.removeData.observe(this) {
viewModel.get_blacklist()
}
}
override fun getLayoutId(): Int = R.layout.activity_black_list
override fun initView() {
}
override fun initData() {
blackAdapter = BlackAdapter()
recyclerview.layoutManager = LinearLayoutManager(this)
recyclerview.adapter = blackAdapter
viewModel.get_blacklist()
}
override fun initEvent() {
blackAdapter.setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.tv_enter) {
viewModel.remove_blacklist(blackAdapter.data[position].uid)
}
}
blackAdapter.setOnItemClickListener { adapter, view, position ->
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE).withString("from_id",
blackAdapter.data[position].uid).navigation()
}
}
}

View File

@@ -0,0 +1,26 @@
package com.yuyin.mier.module_home.tab.xiaoxi.black
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.module_home.model.BlackList
import com.yuyin.mier.repository.CommonRepository
class BlackListViewModel : BaseViewModel() {
var repository = CommonRepository()
var blackData = MutableLiveData<BlackList>()
var removeData = MutableLiveData<Any>()
fun get_blacklist() {
launchUI {
val result = repository.get_blacklist()
blackData.value = result.data
}
}
fun remove_blacklist(uid: String) {
launchUI {
val result = repository.remove_blacklist(uid)
removeData.value = result.data
}
}
}

View File

@@ -0,0 +1,19 @@
package com.yuyin.mier.module_home.tab.xiaoxi.xitong
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.module_home.model.OffiMessageBean
import com.yuyin.mier.repository.CommonRepository
class MessageGFViewModel : BaseViewModel() {
var repository = CommonRepository()
var offiMessageData = MutableLiveData<List<OffiMessageBean>>()
fun loadData(type: String, page: Int) {
launchUI {
var data = repository.official_message(type, page.toString())
offiMessageData.value = data.data
}
}
}

View File

@@ -0,0 +1,67 @@
package com.yuyin.mier.module_home.tab.xiaoxi.xitong
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.yuyin.lib_base.arouter.AroutUtil.MAIN_MESSAGE_OFFICE
import com.yuyin.lib_base.base.BaseActivity
import com.yuyin.mier.R
import com.yuyin.mier.adapter.OfficeListAdapter
import kotlinx.android.synthetic.main.activity_message_office.*
@Route(path = MAIN_MESSAGE_OFFICE)
class MessageOfficeActivity : BaseActivity<MessageGFViewModel>() {
private var page = 1
private var officeListAdapter: OfficeListAdapter? = null
override fun startObserve() {
viewModel.getFinally().observe(this) {
smart.finishRefresh()
smart.finishLoadMore()
}
viewModel.offiMessageData.observe(this) {
if (officeListAdapter == null) return@observe
if (page == 1 && it.isEmpty()) {
ll_nodata.visibility = View.VISIBLE
} else {
ll_nodata.visibility = View.GONE
}
if (page == 1) {
officeListAdapter!!.setNewData(it)
} else {
officeListAdapter!!.data.addAll(it)
officeListAdapter!!.notifyDataSetChanged()
}
}
}
override fun getLayoutId(): Int = R.layout.activity_message_office
override fun initView() {
}
override fun initData() {
officeListAdapter = OfficeListAdapter()
recyclerview.layoutManager = LinearLayoutManager(this)
recyclerview.adapter = officeListAdapter
viewModel.loadData("1", page)
}
override fun initEvent() {
smart.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
viewModel.loadData("1", page)
}
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
viewModel.loadData("1", page)
}
})
}
}

View File

@@ -0,0 +1,22 @@
package com.yuyin.mier.module_login.ui
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.yuyin.mier.R
import com.yuyin.mier.module_login.ui.forget.ForgotFragment
import com.yuyin.mier.module_login.ui.forget.ForgotFragment2
class ForgetActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_forget)
val conversationListFragment = ForgotFragment.newInstance("1")
val manager: FragmentManager = supportFragmentManager
val transaction: FragmentTransaction = manager.beginTransaction()
transaction.replace(R.id.container, conversationListFragment as Fragment)
transaction.commit()
}
}

View File

@@ -0,0 +1,17 @@
package com.yuyin.mier.module_login.ui
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.alibaba.android.arouter.facade.annotation.Route
import com.yuyin.lib_base.arouter.AroutUtil.LOGIN_MAIN
import com.yuyin.mier.R
@Route(path = LOGIN_MAIN)
class ModuleLoginMainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_module_login_main)
}
}

View File

@@ -0,0 +1,135 @@
package com.yuyin.mier.module_login.ui.bindZL
import android.graphics.Color
import com.alibaba.android.arouter.launcher.ARouter
import com.bigkoo.pickerview.builder.TimePickerBuilder
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityBindZlBinding
import com.yuyin.mier.module_my.edituser.ModifyDataViewModel
import kotlinx.android.synthetic.main.activity_bind_zl.*
import org.litepal.LitePal
import java.text.SimpleDateFormat
import java.util.*
class BindZLActivity : BaseDataBindingActivity<ModifyDataViewModel, ActivityBindZlBinding>() {
var saxString = "1"
private var startDate: Calendar = Calendar.getInstance()
private var endDate: Calendar = Calendar.getInstance()
private var seleteDate: Calendar = Calendar.getInstance()
private var nowDate: String = ""
override fun startObserve() {
viewModel.editFinish.observe(this) {
var login = LitePal.findFirst(Login::class.java)
login.nick_name = it.nick_name
login.head_pic = it.head_pic
login.save()
UserManager.initData()
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
finish()
}
}
override fun getLayoutId(): Int = R.layout.activity_bind_zl
override fun initView() {
}
override fun initData() {
}
override fun initEvent() {
flNan.setOnClickListener {
saxString = "1"
tvNan.setTextColor(Color.parseColor("#ffffffff"))
tvNv.setTextColor(Color.parseColor("#979BA1"))
flNv.background = resources.getDrawable(R.drawable.shape_white_bg10_5)
flNan.background = resources.getDrawable(R.drawable.shape_white_bg10_6)
iv_woman.setImageResource(R.mipmap.login_reg_nv1)
}
flNv.setOnClickListener {
saxString = "2"
tvNan.setTextColor(Color.parseColor("#979BA1"))
tvNv.setTextColor(Color.parseColor("#ffffffff"))
flNan.background = resources.getDrawable(R.drawable.shape_white_bg10_5)
flNv.background = resources.getDrawable(R.drawable.shape_white_bg10_6)
iv_man.setImageResource(R.mipmap.login_reg_nan1)
}
tv_birthday.setOnClickListener {
val string = getTimeYmd()
val timeYmd: String = getTimeYmd()
val split1 = string.split("-".toRegex()).toTypedArray()
val split = timeYmd.split("-".toRegex()).toTypedArray()
startDate.set(1900, 0, 1)
try {
endDate.set(split[0].toInt(), split[1].toInt() - 1, split[2].toInt())
} catch (e: NumberFormatException) {
e.printStackTrace()
}
// try {
// seleteDate.set(split1[0].toInt(), split1[1].toInt() - 1, split1[2].toInt())
// } catch (e: NumberFormatException) {
// e.printStackTrace()
// }
seleteDate.set(2001, 1, 1)
val pvTime = TimePickerBuilder(
this
) { date, _ ->
if (date != null) {
nowDate = getNowDate(date)
tv_birthday.text = nowDate
}
}
.setRangDate(startDate, endDate)
.setDate(seleteDate)
.build()
pvTime.show()
}
btn_ok.setOnClickListener {
viewModel.editUserInfo(
"",
et_name.text.toString(),
saxString,
tv_birthday.text.toString(),
"", ""
);
}
}
private fun getNowDate(date: Date): String {
val formatter = SimpleDateFormat("yyyy-MM-dd")
return formatter.format(date)
}
/**
* 获取当前时间
*
* @return
*/
private fun getTimeYmd(): String {
val date = Date() // 创建一个时间对象,获取到当前的时间
val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) // 设置时间显示格式
sdf.timeZone = TimeZone.getTimeZone("GMT+8")
return sdf.format(date)
}
}

View File

@@ -0,0 +1,109 @@
package com.yuyin.mier.module_login.ui.forget
import android.os.Bundle
import android.os.CountDownTimer
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mixin.module_login.ui.GraphicCodeDialog
import com.yuyin.mier.BR
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.login_forgot_fragment.*
import kotlinx.android.synthetic.main.login_fragment.send_code
class ForgotFragment : BaseDataBindingFragment<ForgotViewModel, ViewDataBinding>() {
companion object {
fun newInstance(type: String): ForgotFragment {
val fragment = ForgotFragment()
val bundle = Bundle()
bundle.putString("type", type)
fragment.arguments = bundle
return fragment
}
}
private var timer: CountDownTimer? = null
private fun showCode() {
timer = object : CountDownTimer(60 * 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
try {
val i = (millisUntilFinished / 1000).toInt()
send_code.text = i.toString() + "s"
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onFinish() {
send_code.text = "重新发送"
viewModel.sendCodeClick.postValue(true)
}
}.start()
}
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
mDataBinding.executePendingBindings()
viewModel.getError().observe(this, {
viewModel.sendCodeClick.postValue(true)
})
viewModel.sendCode.observe(requireActivity(), {
showCode()
})
viewModel.forgetPwdResult.observe(requireActivity(), {
Navigation.findNavController(btn_ok).navigateUp()
})
}
override fun getLayoutId(): Int = R.layout.login_forgot_fragment
override fun initView() {
}
override fun initData() {
}
override fun initEvent() {
iv_back.setOnClickListener {
Navigation.findNavController(it).navigateUp()
}
// 调用代码记得把xml 里面的点击时间去掉
send_code.setOnClickListener {
val graphicCodeDialog = GraphicCodeDialog(requireContext())
viewModel.create_captcha()
viewModel.captchaBean.observe(this) {
GlideUtil.loadImglogo(
requireContext(),
it.image,
graphicCodeDialog.getBinding().graphicCode
)
}
graphicCodeDialog.getBinding().graphicCode.setOnClickListener {
viewModel.create_captcha()
}
graphicCodeDialog.getBinding().btnConfirm.setOnClickListener {
viewModel.verification(
graphicCodeDialog.getBinding().etCode.text.toString(),
viewModel.captchaBean.value!!.key
)
graphicCodeDialog.dismiss()
}
graphicCodeDialog.show()
}
}
}

View File

@@ -0,0 +1,77 @@
package com.yuyin.mier.module_login.ui.forget
import android.os.Bundle
import android.os.CountDownTimer
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.mier.BR
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.login_forgot_fragment.*
class ForgotFragment2 : BaseDataBindingFragment<ForgotViewModel, ViewDataBinding>() {
companion object {
fun newInstance(type: String): ForgotFragment2 {
val fragment = ForgotFragment2()
val bundle = Bundle()
bundle.putString("type", type)
fragment.arguments = bundle
return fragment
}
}
private var timer: CountDownTimer? = null
private fun showCode() {
timer = object : CountDownTimer(60 * 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
try {
val i = (millisUntilFinished / 1000).toInt()
send_code.text = i.toString() + "s"
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onFinish() {
send_code.text = "重新发送"
viewModel.sendCodeClick.postValue(true)
}
}.start()
}
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
mDataBinding.executePendingBindings()
viewModel.getError().observe(this, {
viewModel.sendCodeClick.postValue(true)
})
viewModel.sendCode.observe(requireActivity(), {
showCode()
})
viewModel.forgetPwdResult.observe(requireActivity(), {
Navigation.findNavController(btn_ok).navigateUp()
})
}
override fun getLayoutId(): Int = R.layout.login_forgot_fragment
override fun initView() {
}
override fun initData() {
}
override fun initEvent() {
iv_back.setOnClickListener {
requireActivity().finish()
}
}
}

View File

@@ -0,0 +1,73 @@
package com.yuyin.mier.module_login.ui.forget
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.repository.CommonRepository
class ForgotViewModel : BaseViewModel() {
private val repository = CommonRepository()
var phone: MutableLiveData<String> = MutableLiveData()
var code: MutableLiveData<String> = MutableLiveData()
var passWord: MutableLiveData<String> = MutableLiveData()
var passWord1: MutableLiveData<String> = MutableLiveData()
var sendCodeClick: MutableLiveData<Boolean> = MutableLiveData(true)
var sendCode: MutableLiveData<String> = MutableLiveData()
var forgetPwdResult: MutableLiveData<String> = MutableLiveData()
fun verification(captcha_code: String, captcha_key: String) {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (sendCodeClick.value == false) return
sendCodeClick.value = false
sendCode.value = "发送"
launchUI {
val result = repository.verification(phone.value.toString(), "1",captcha_code,captcha_key)
result.msg.showToast()
}
}
fun forgetPwd() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (code.value.isNullOrEmpty()) {
"请输入验证码".showToast()
return
}
if (passWord.value.isNullOrEmpty()) {
"请输入密码".showToast()
return
}
if (passWord1.value.isNullOrEmpty()) {
"请再次输入密码".showToast()
return
}
if (passWord.value != passWord1.value) {
"两次密码不一致".showToast()
return
}
launchUI {
val resultPwd = repository.forgetPwd(
phone.value.toString(),
code.value.toString(),
passWord.value.toString()
)
resultPwd.msg.showToast()
forgetPwdResult.value = "成功"
}
}
}

View File

@@ -0,0 +1,171 @@
package com.yuyin.mier.module_login.ui.login
import android.os.CountDownTimer
import android.view.KeyEvent
import android.view.View
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import com.alibaba.android.arouter.launcher.ARouter
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.model.PhotoMemory
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.showToast
import com.yuyin.mixin.module_login.ui.GraphicCodeDialog
import com.yuyin.mier.BR
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.login_fragment.send_code
import kotlinx.android.synthetic.main.login_fragment2.*
import kotlinx.android.synthetic.main.login_fragment2.btn_ok
import kotlinx.android.synthetic.main.login_fragment2.iv_back
import org.litepal.LitePal
import java.util.*
class CodeLoginFragment : BaseDataBindingFragment<LoginViewModel, ViewDataBinding>() {
private var timer: CountDownTimer? = null
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
viewModel.sendCode.observe(requireActivity()) {
showCode()
}
viewModel.getError().observe(this) {
viewModel.sendCodeClick.postValue(true)
}
viewModel.loginValue.observe(requireActivity()) {
"登录成功".showToast()
//用户信息存入数据库
val loginData: Login = it
LitePal.deleteAll(it::class.java)
loginData.save() //litepal数据库不能随便改LoginData数据
UserManager.initData() //存储完,初始化
var isSaveMemory = false
val photoMemoryList: List<PhotoMemory> =
LitePal.findAll(PhotoMemory::class.java) // 查询所有数据
for (i in photoMemoryList.indices) {
if (photoMemoryList[i].photo == it.user_name) {
isSaveMemory = true
}
}
if (!isSaveMemory){
val photoMemory = PhotoMemory()
photoMemory.photo = it.user_name
photoMemory.head_pic = it.head_pic
photoMemory.save()
}
// if (it.is_reg == "1") {
// startActivity(Intent(requireContext(), BindZLActivity::class.java))
// } else {
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
activity?.finish()
// }
}
}
private fun showCode() {
timer = object : CountDownTimer(60 * 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
try {
val i = (millisUntilFinished / 1000).toInt()
send_code.text = i.toString() + "s"
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onFinish() {
send_code.text = "重新发送"
viewModel.sendCodeClick.postValue(true)
}
}.start()
}
override fun getLayoutId(): Int = R.layout.login_fragment2
override fun initView() {
}
override fun initData() {
val photoMemoryList: List<PhotoMemory> =
LitePal.findAll(PhotoMemory::class.java) // 查询所有数据
photo_memory_view.setAdapterList(photoMemoryList)
}
override fun initEvent() {
btn_ok.setOnClickListener {
viewModel.phone_verification_code_log()
}
iv_back.setOnClickListener {
Navigation.findNavController(it).popBackStack()
}
// photo_memory_view.setOnSelectNumberListener {
// viewModel.phone.value = it.photo
// }
// 调用代码记得把xml 里面的点击时间去掉
send_code.setOnClickListener {
val graphicCodeDialog = GraphicCodeDialog(requireContext())
viewModel.create_captcha()
viewModel.captchaBean.observe(this) {
GlideUtil.loadImglogo(
requireContext(),
it.image,
graphicCodeDialog.getBinding().graphicCode
)
}
graphicCodeDialog.getBinding().graphicCode.setOnClickListener {
viewModel.create_captcha()
}
graphicCodeDialog.getBinding().btnConfirm.setOnClickListener {
viewModel.verification(
graphicCodeDialog.getBinding().etCode.text.toString(),
viewModel.captchaBean.value!!.key
)
graphicCodeDialog.dismiss()
}
graphicCodeDialog.show()
}
}
override fun onResume() {
super.onResume()
val view: View? = view
if (view != null) {
view.isFocusableInTouchMode = true
view.requestFocus()
view.setOnKeyListener { view1, i, keyEvent ->
if (i === KeyEvent.KEYCODE_BACK && keyEvent.action === KeyEvent.ACTION_UP) {
Navigation.findNavController(view1).navigateUp()
return@setOnKeyListener true
}
false
}
}
}
}

View File

@@ -0,0 +1,313 @@
package com.yuyin.mier.module_login.ui.login
import android.os.CountDownTimer
import android.util.Log
import android.view.KeyEvent
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import cn.sharesdk.framework.Platform
import cn.sharesdk.framework.PlatformActionListener
import cn.sharesdk.framework.ShareSDK
import cn.sharesdk.tencent.qq.QQ
import cn.sharesdk.wechat.friends.Wechat
import com.alibaba.android.arouter.launcher.ARouter
import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener
import com.kongzue.dialog.v3.MessageDialog
import com.mob.MobSDK
import com.yuyin.lib_base.App
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.util.SBUtils
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.BR
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.login_fragment.*
import org.litepal.LitePal
import java.util.*
import kotlin.collections.HashMap
class LoginFragment : BaseDataBindingFragment<LoginViewModel, ViewDataBinding>() {
private var timer: CountDownTimer? = null
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
viewModel.sendCode.observe(requireActivity()) {
showCode()
}
viewModel.getError().observe(this) {
viewModel.sendCodeClick.postValue(true)
}
viewModel.loginValue.observe(requireActivity()) {
"登录成功".showToast()
//用户信息存入数据库
val loginData: Login = it
LitePal.deleteAll(it::class.java)
loginData.save() //litepal数据库不能随便改LoginData数据
UserManager.initData() //存储完,初始化
// if (loginData.is_reg == "1") {
// startActivity(Intent(activity, BindZLActivity::class.java))
// } else {
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
activity?.finish()
// }
}
}
private fun showCode() {
timer = object : CountDownTimer(60 * 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
try {
val i = (millisUntilFinished / 1000).toInt()
send_code.text = i.toString() + "s"
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onFinish() {
send_code.text = "重新发送"
viewModel.sendCodeClick.postValue(true)
}
}.start()
}
override fun getLayoutId(): Int = R.layout.login_fragment
override fun initView() {
}
override fun initData() {
// btnOneKey.setOnClickListener {
// val uiConfig = ShanYanUIConfig.Builder() //添加协议弹窗
// .setPrivacyState(false)
// .build()
// OneKeyLoginManager.getInstance().setAuthThemeConfig(uiConfig)
// OneKeyLoginManager.getInstance()
// .init(
// activity, "yVdzbOkO"
// ) { code, result ->
//// if (code == 1022) {
//// val oneKeyLogin = LoginConfig()
//// OneKeyLoginManager.getInstance().setAuthThemeConfig(
//// oneKeyLogin.getGConfig(App.instance?.applicationContext), null
//// )
//// OneKeyLoginManager.getInstance().setCheckBoxValue(false);
//// OneKeyLoginManager.getInstance().getPhoneInfo { code, result ->
//// OneKeyLoginManager.getInstance().openLoginAuth(true,
//// { code, result ->
//// if (code != 1000) {
//// "请稍后再试...".showToast()
//// }
//// }
//// ) { code, result ->
//// if (code != 1000) {
//// "请稍后再试...".showToast()
//// } else {
//// var jsonString = JSONObject(result)
//// viewModel.loginGo2(jsonString.getString("token"))
//// }
//// }
//// }
//// } else {
//// "获取失败,请稍后再试...".showToast()
//// }
// }
//
// }
if (activity?.intent?.getIntExtra("sign", 0) === 1) {
tv_forget.postDelayed({
MessageDialog.show(
activity as AppCompatActivity,
"下线通知",
"您的账号在别的设备登录,您已被迫下线",
"确定"
)
}, 2000)
}
val titleRes = ArrayList<String>() //tab标题集合
val dataTab: MutableList<CustomTabEntity> = ArrayList() //CommonTabLayout 所需数据集合
titleRes.add("登录")
titleRes.add("注册")
for (i in titleRes.indices) {
dataTab.add(object : CustomTabEntity {
override fun getTabTitle(): String {
return titleRes[i]
}
override fun getTabSelectedIcon(): Int {
return 0
}
override fun getTabUnselectedIcon(): Int {
return 0
}
})
}
//设置数据
//设置数据
common_tab_layout.setTabData(dataTab as ArrayList<CustomTabEntity?>)
common_tab_layout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
if (position == 0) {
rl_yanzhengma.setVisibility(View.GONE)
btn_ok.setText("登录")
tv_forget.setVisibility(View.VISIBLE)
} else {
rl_yanzhengma.setVisibility(View.VISIBLE)
btn_ok.setText("注册")
tv_forget.setVisibility(View.GONE)
}
}
override fun onTabReselect(position: Int) {}
})
}
override fun initEvent() {
ivPass.setOnClickListener {
// llPas.visibility = View.VISIBLE
// llOne.visibility = View.GONE
Navigation.findNavController(it)
.navigate(R.id.loginFragment2)
}
ivWeiXin.setOnClickListener {
//设置授权登录的平台
MobSDK.submitPolicyGrantResult(true, null)
val plat: Platform = ShareSDK.getPlatform(Wechat.NAME)
//授权回调监听监听oncompleteonerroroncancel三种状态
plat.platformActionListener = object : PlatformActionListener {
override fun onComplete(p0: Platform?, p1: Int, p2: HashMap<String, Any>?) {
p2?.let {
var map = HashMap<String, String>()
map["last_login_device"] = SBUtils.getAndroidId(App.instance)
map["type"] = "1"
map["system"] = "1"
map["wx_openid"] = p2["openid"].toString()
map["head_image"] = p2["headimgurl"].toString()
map["nick_name"] = p2["nickname"].toString()
map["channel_code"] = ""
viewModel.wx_reg_log(map)
}
}
override fun onError(p0: Platform?, p1: Int, p2: Throwable?) {
Log.d("Aaa", "AA")
}
override fun onCancel(p0: Platform?, p1: Int) {
Log.d("Aaa", "AA")
}
}
plat.showUser(null)
plat.authorize()
}
ivQQ.setOnClickListener {
//设置授权登录的平台
MobSDK.submitPolicyGrantResult(true, null)
val plat: Platform = ShareSDK.getPlatform(QQ.NAME)
//授权回调监听监听oncompleteonerroroncancel三种状态
plat.platformActionListener = object : PlatformActionListener {
override fun onComplete(p0: Platform?, p1: Int, p2: HashMap<String, Any>?) {
Log.d("Aaa", "AA")
p2?.let {
var map = HashMap<String, String>()
map["last_login_device"] = SBUtils.getAndroidId(App.instance)
map["type"] = "2"
map["system"] = "1"
map["wx_openid"] = plat.db.userId
map["head_image"] = plat.db.userIcon
map["nick_name"] = plat.db.userName
map["channel_code"] = ""
viewModel.wx_reg_log(map)
}
}
override fun onError(p0: Platform?, p1: Int, p2: Throwable?) {
Log.d("Aaa", "AA")
}
override fun onCancel(p0: Platform?, p1: Int) {
Log.d("Aaa", "AA")
}
}
plat.showUser(null)
plat.authorize()
}
tvLoginType.setOnClickListener {
if (tvLoginType.text.toString() == "切换验证码登录") {
tvLoginType.text = "切换密码登录"
rl_yanzhengma.visibility = View.VISIBLE
rl_mima.visibility = View.GONE
} else {
tvLoginType.text = "切换验证码登录"
rl_yanzhengma.visibility = View.GONE
rl_mima.visibility = View.VISIBLE
}
}
tv_forget.setOnClickListener {
// Navigation.findNavController(it)
// .navigate(R.id.action_loginFragment_to_forgotFragment)
}
btn_ok.setOnClickListener {
if (!checkbox.isChecked) {
"请先阅读并同意用户协议和隐私协议".showToast()
return@setOnClickListener
}
if (btn_ok.text.toString().equals("登录")) {
// if (tvLoginType.text.toString() == "切换验证码登录") {
// viewModel.loginGo()
// } else {
viewModel.phone_verification_code_log()
// }
} else {
viewModel.isVerification()
}
}
tv_regist.setOnClickListener {
Navigation.findNavController(it)
.navigate(R.id.action_loginFragment_to_registMainFragment)
}
}
override fun onResume() {
super.onResume()
val view: View? = view
if (view != null) {
view.isFocusableInTouchMode = true
view.requestFocus()
view.setOnKeyListener { view1, i, keyEvent ->
if (i === KeyEvent.KEYCODE_BACK && keyEvent.action === KeyEvent.ACTION_UP) {
Navigation.findNavController(view1).navigateUp()
return@setOnKeyListener true
}
false
}
}
}
}

View File

@@ -0,0 +1,124 @@
package com.yuyin.mier.module_login.ui.login
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.App
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.util.SBUtils
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.repository.CommonRepository
class LoginViewModel : BaseViewModel() {
private val repository = CommonRepository()
var loginValue: MutableLiveData<Login> = MutableLiveData()
var phone: MutableLiveData<String> = MutableLiveData()
var code: MutableLiveData<String> = MutableLiveData()
var passWord: MutableLiveData<String> = MutableLiveData()
fun loginGo2(token: String) {
launchUI {
val result = repository.phone_reg_log(
token, "1",
SBUtils.getAndroidId(App.instance)
)
loginValue.value = result.data;
}
}
fun loginGo() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (passWord.value.isNullOrEmpty()) {
"请输入密码".showToast()
return
}
launchUI {
val result = repository.loginLogin(
phone.value.toString(), passWord.value.toString(),
SBUtils.getAndroidId(App.instance)
)
loginValue.value = result.data;
}
}
fun wx_reg_log(map: MutableMap<String, String>) {
launchUI {
val result = repository.wx_reg_log(map)
loginValue.value = result.data;
}
}
//点击发送验证码事件监听
var sendCodeClick: MutableLiveData<Boolean> = MutableLiveData(true)
var sendCode: MutableLiveData<String> = MutableLiveData()
fun verification(captcha_code: String, captcha_key: String) {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (sendCodeClick.value == false) return
sendCodeClick.value = false
launchUI {
val result = repository.verification(phone.value.toString(), "2",captcha_code,captcha_key)
sendCode.value = "发送"
result.msg.showToast()
}
}
fun isVerification() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (code.value.isNullOrEmpty()) {
"请输入验证码".showToast()
return
}
if (passWord.value.isNullOrEmpty()) {
"请输入密码".showToast()
return
}
launchUI {
var resultReg = repository.register(
phone.value.toString(),
passWord.value.toString(),
code.value.toString(),
"",
""
)
loginGo()
}
}
fun phone_verification_code_log() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (code.value.isNullOrEmpty()) {
"请输入验证码".showToast()
return
}
launchUI {
var result = repository.phone_verification_code_log(
phone.value.toString(),
code.value.toString(), SBUtils.getAndroidId(App.instance)
)
loginValue.value = result.data;
}
}
}

View File

@@ -0,0 +1,260 @@
package com.yuyin.mier.module_login.ui.login
import android.graphics.Color
import android.os.Build
import android.os.CountDownTimer
import android.text.SpannableString
import android.text.Spanned
import android.text.TextPaint
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.view.KeyEvent
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import com.alibaba.android.arouter.launcher.ARouter
import com.kongzue.dialog.v3.MessageDialog
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.model.PhotoMemory
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.util.SharedPreferencesUtils
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.BR
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.login_fragment3.*
import org.litepal.LitePal
import com.tencent.bugly.crashreport.CrashReport
import com.yuyin.mier.BuildConfig
class PassWordLoginFragment : BaseDataBindingFragment<LoginViewModel, ViewDataBinding>() {
private var timer: CountDownTimer? = null
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
viewModel.getError().observe(this) {
viewModel.sendCodeClick.postValue(true)
}
viewModel.loginValue.observe(requireActivity()) {
"登录成功".showToast()
//用户信息存入数据库
val loginData: Login = it
LitePal.deleteAll(it::class.java)
loginData.save() //litepal数据库不能随便改LoginData数据
UserManager.initData() //存储完,初始化
var isSaveMemory = false
val photoMemoryList: List<PhotoMemory> =
LitePal.findAll(PhotoMemory::class.java) // 查询所有数据
for (i in photoMemoryList.indices) {
if (photoMemoryList[i].photo == it.user_name) {
isSaveMemory = true
}
}
if (!isSaveMemory) {
val photoMemory = PhotoMemory()
photoMemory.photo = it.user_name
photoMemory.head_pic = it.head_pic
photoMemory.save()
}
// if (it.is_reg == "1") {
// startActivity(Intent(requireContext(), BindZLActivity::class.java))
// } else {
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
activity?.finish()
// }
}
}
override fun getLayoutId(): Int = R.layout.login_fragment3
override fun initView() {
if (!SharedPreferencesUtils.getParam(activity, "LOGIN", "1").equals("2")) {
llystk.visibility = View.VISIBLE
tv_content.text = ""
tv_content.append("感谢您信任并使用")
var clickStringJR = SpannableString("余音派对,")
clickStringJR.setSpan(object : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.color = Color.parseColor("#FF5057")
ds.isUnderlineText = false //去掉下划线
}
override fun onClick(p0: View) {
//点击事件
}
}, 0, clickStringJR.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv_content?.append(clickStringJR)
tv_content?.append(
"当您使用本APP前请您务必仔细阅读、充分理解“用户协议”和“隐私政策”各条款包括但不限于: " +
"为您提供服务并保障您的相关信息,以及为您提供的访问、修改、删除和您先关的信息的方式。"
)
tv_content?.append("如您同意")
var clickStringJR3 = SpannableString("《服务协议")
clickStringJR3.setSpan(object : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.color = Color.parseColor("#FF5057")
ds.isUnderlineText = false //去掉下划线
}
override fun onClick(p0: View) {
//点击事件
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI, "服务协议")
}
}, 0, clickStringJR3.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv_content?.append(clickStringJR3)
var clickStringJR5 = SpannableString("隐私政策》")
clickStringJR5.setSpan(object : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.color = Color.parseColor("#FF5057")
ds.isUnderlineText = false //去掉下划线
}
override fun onClick(p0: View) {
//点击事件
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI2, "隐私政策")
}
}, 0, clickStringJR3.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
tv_content?.append(clickStringJR5)
tv_content?.append(",请点击“确认”开始使用我们的产品和服务。")
tv_content?.movementMethod = LinkMovementMethod.getInstance()
tv_cancel.setOnClickListener {
SharedPreferencesUtils.setParam(activity, "LOGIN", "1")
llystk.visibility = View.GONE
activity?.finish()
}
tv_confirm.setOnClickListener {
SharedPreferencesUtils.setParam(activity, "LOGIN", "2")
llystk.visibility = View.GONE
initBugly()
}
} else {
initBugly()
}
}
fun initBugly() {
//初始化bugly
val strategy: CrashReport.UserStrategy = CrashReport.UserStrategy(requireContext())
strategy.setDeviceModel(Build.MODEL)
//设置包名
strategy.setAppPackageName(BuildConfig.APPLICATION_ID)
// 设置App版本号
strategy.setAppVersion(BuildConfig.VERSION_NAME)
// 初始化崩溃报告服务传入应用上下文、AppKey、是否调试模式和自定义策略
CrashReport.initCrashReport(requireContext(), "4bf6f2912b", BuildConfig.DEBUG, strategy)
val photoMemoryList: List<PhotoMemory> =
LitePal.findAll(PhotoMemory::class.java) // 查询所有数据
photo_memory_view.setAdapterList(photoMemoryList)
}
override fun initData() {
if (activity?.intent?.getIntExtra("sign", 0) === 1) {
// tv_forget.postDelayed({
MessageDialog.show(
activity as AppCompatActivity,
"下线通知",
"您的账号在别的设备登录,您已被迫下线",
"确定"
)
// }, 2000)
}
}
override fun initEvent() {
tv_forget.setOnClickListener {
Navigation.findNavController(it)
.navigate(R.id.action_loginFragment_to_forgotFragment2)
}
btn_ok.setOnClickListener {
if (!iv_check.isChecked) {
"请同意用户协议".showToast()
return@setOnClickListener
}
viewModel.loginGo()
}
iv_back.setOnClickListener {
Navigation.findNavController(it).popBackStack()
}
v_register.setOnClickListener {
Navigation.findNavController(it)
.navigate(R.id.action_loginFragment_to_registMainFragment)
}
v_code_login.setOnClickListener {
Navigation.findNavController(it)
.navigate(R.id.action_loginFragment_to_loginFragment2)
}
xieyi.setOnClickListener {
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI, "服务协议")
}
xieyi2.setOnClickListener {
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI2, "隐私政策")
}
iv_unfold.setOnClickListener {
photo_memory_view.visibility = View.VISIBLE
iv_unfold.setImageResource(R.mipmap.unfold_icon)
photo_memory_view.setOnSelectNumberListener {
viewModel.phone.value = it.photo
}
}
main.setOnClickListener {
photo_memory_view.visibility = View.GONE
iv_unfold.setImageResource(R.mipmap.unfold_icon2)
}
}
override fun onResume() {
super.onResume()
val view: View? = view
if (view != null) {
view.isFocusableInTouchMode = true
view.requestFocus()
view.setOnKeyListener { view1, i, keyEvent ->
if (i === KeyEvent.KEYCODE_BACK && keyEvent.action === KeyEvent.ACTION_UP) {
Navigation.findNavController(view1).navigateUp()
return@setOnKeyListener true
}
false
}
}
}
}

View File

@@ -0,0 +1,165 @@
package com.yuyin.mier.module_login.ui.regist
import android.os.CountDownTimer
import android.view.View
import androidx.databinding.ViewDataBinding
import androidx.navigation.Navigation
import com.alibaba.android.arouter.launcher.ARouter
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.util.showToast
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.model.PhotoMemory
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mixin.module_login.ui.GraphicCodeDialog
import com.yuyin.mier.R
import com.yuyin.mier.BR
import kotlinx.android.synthetic.main.login_regist_main_fragment.*
import org.litepal.LitePal
class RegistMainFragment : BaseDataBindingFragment<RegistMainViewModel, ViewDataBinding>() {
private var timer: CountDownTimer? = null
companion object {
fun newInstance() = RegistMainFragment()
}
override fun onStop() {
super.onStop()
if (timer != null)
timer!!.cancel()
}
override fun startObserve() {
mDataBinding.setVariable(BR.layout, viewModel)
mDataBinding.executePendingBindings()
viewModel.sendCode.observe(requireActivity(), {
showCode()
})
viewModel.getError().observe(this, {
viewModel.sendCodeClick.postValue(true)
})
viewModel.loginValue.observe(requireActivity()) {
"登录成功".showToast()
//用户信息存入数据库
var loginData: Login = it
LitePal.deleteAll(it::class.java)
loginData.save() //litepal数据库不能随便改LoginData数据
UserManager.initData() //存储完,初始化
var isSaveMemory = false
val photoMemoryList: List<PhotoMemory> =
LitePal.findAll(PhotoMemory::class.java) // 查询所有数据
for (i in photoMemoryList.indices) {
if (photoMemoryList[i].photo == it.user_name) {
isSaveMemory = true
}
}
if (!isSaveMemory){
val photoMemory = PhotoMemory()
photoMemory.photo = it.user_name
photoMemory.head_pic = it.head_pic
photoMemory.save()
}
ARouter.getInstance().build(AroutUtil.MAIN_MAIN).navigation()
activity?.finish()
}
}
override fun getLayoutId(): Int = R.layout.login_regist_main_fragment
override fun initView() {
}
override fun initData() {
}
override fun initEvent() {
back.setOnClickListener {
Navigation.findNavController(back).navigateUp()
}
// v_login.setOnClickListener {
// Navigation.findNavController(back).navigateUp()
// }
// iv_unfold.setOnClickListener {
// photo_memory_view.visibility = View.VISIBLE
// }
main.setOnClickListener {
photo_memory_view.visibility = View.GONE
}
xieyi.setOnClickListener {
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI, "服务协议")
}
xieyi2.setOnClickListener {
X5WebViewActivity.forward(requireContext(), Const.PAGE_USER_XIEYI2, "隐私政策")
}
btn_ok.setOnClickListener {
if (!iv_check.isChecked) {
"请同意用户协议".showToast()
return@setOnClickListener
}
viewModel.isVerification()
}
// photo_memory_view.setOnSelectNumberListener {
// viewModel.phone.value = it.photo
// }
// 调用代码记得把xml 里面的点击时间去掉
send_code.setOnClickListener {
val graphicCodeDialog = GraphicCodeDialog(requireContext())
viewModel.create_captcha()
viewModel.captchaBean.observe(this) {
GlideUtil.loadImglogo(
requireContext(),
it.image,
graphicCodeDialog.getBinding().graphicCode
)
}
graphicCodeDialog.getBinding().graphicCode.setOnClickListener {
viewModel.create_captcha()
}
graphicCodeDialog.getBinding().btnConfirm.setOnClickListener {
viewModel.verification(
graphicCodeDialog.getBinding().etCode.text.toString(),
viewModel.captchaBean.value!!.key
)
graphicCodeDialog.dismiss()
}
graphicCodeDialog.show()
}
}
private fun showCode() {
timer = object : CountDownTimer(60 * 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
try {
val i = (millisUntilFinished / 1000).toInt()
send_code.text = i.toString() + "s"
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onFinish() {
send_code.text = "重新发送"
viewModel.sendCodeClick.postValue(true)
}
}.start()
}
}

View File

@@ -0,0 +1,102 @@
package com.yuyin.mier.module_login.ui.regist
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.App
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.util.SBUtils
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.repository.CommonRepository
class RegistMainViewModel : BaseViewModel() {
private val repository = CommonRepository()
var sex: MutableLiveData<String> = MutableLiveData("1")
var loginValue: MutableLiveData<Login> = MutableLiveData()
var phone: MutableLiveData<String> = MutableLiveData()
var code: MutableLiveData<String> = MutableLiveData()
var yaoqing: MutableLiveData<String> = MutableLiveData("")
var passWord: MutableLiveData<String> = MutableLiveData()
var passWord2: MutableLiveData<String> = MutableLiveData()
//点击发送验证码事件监听
var sendCodeClick: MutableLiveData<Boolean> = MutableLiveData(true)
var sendCode: MutableLiveData<String> = MutableLiveData()
fun verification(captcha_code: String, captcha_key: String) {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (sendCodeClick.value == false) return
sendCodeClick.value = false
launchUI {
val result = repository.verification(phone.value.toString(), "2",captcha_code,captcha_key)
sendCode.value = "发送"
result.msg.showToast()
}
}
fun isVerification() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (code.value.isNullOrEmpty()) {
"请输入验证码".showToast()
return
}
// if (passWord.value.isNullOrEmpty() || passWord2.value.isNullOrEmpty()) {
// "请输入密码".showToast()
// return
// }
// if (passWord.value.isNullOrEmpty() != passWord2.value.isNullOrEmpty()) {
// "两次输入的密码不一致".showToast()
// return
// }
if (passWord.value.isNullOrEmpty()) {
"请输入密码".showToast()
return
}
launchUI {
var resultReg = repository.register(
phone.value.toString(),
passWord.value.toString(),
code.value.toString(),
yaoqing.value.toString(),
sex.value.toString()
)
loginGo()
}
}
private fun loginGo() {
if (phone.value.isNullOrEmpty()) {
"请输入手机号".showToast()
return
}
if (passWord.value.isNullOrEmpty()) {
"请输入密码".showToast()
return
}
launchUI {
val result = repository.loginLogin(
phone.value.toString(), passWord.value.toString(),
SBUtils.getAndroidId(App.instance)
)
loginValue.value = result.data;
}
}
}

View File

@@ -0,0 +1,196 @@
package com.yuyin.mier.module_my
import android.Manifest
import android.content.ClipData
import android.content.ClipboardManager
import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.MediaStore
import android.view.View
import com.tbruyelle.rxpermissions2.RxPermissions
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.util.PermissionsChecker
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityYaoqingBinding
import com.yuyin.mier.module_my.zhuangban.FriendListActivity
import com.yuyin.mier.view.ZXingUtils
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
class YaoQingActivity : BaseDataBindingActivity<YaoQingViewModel, ActivityYaoqingBinding>() {
var permissionListTmp = arrayOf<String>(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE)
override fun startObserve() {
viewModel.bindCode.observe(this) {
mDataBinding.flMa.visibility = View.GONE
finish()
}
}
override fun getLayoutId(): Int = R.layout.activity_yaoqing
override fun initView() {
mDataBinding.tvSure.setOnClickListener {
viewModel.bind_reg_code(mDataBinding.etCode.text.toString())
}
mDataBinding.tvBc.setOnClickListener {
var mPermissionsChecker= PermissionsChecker(this@YaoQingActivity)
if (mPermissionsChecker!!.lacksPermissions(*permissionListTmp)) {
mDataBinding.llQuanxian.visibility= View.VISIBLE
}else{
mDataBinding.llQuanxian.visibility= View.GONE
}
val rxPermissions = RxPermissions(this)
rxPermissions
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe { granted: Boolean ->
if (granted) {
mDataBinding.llQuanxian.visibility= View.GONE
saveMediaToStorage(this, getViewBitmap(mDataBinding.llbg)!!)
"保存图片成功".showToast()
}else{
mDataBinding.llQuanxian.visibility= View.GONE
}
}
}
}
override fun initData() {
loadImage(mDataBinding.civHead, UserManager.user.head_pic)
mDataBinding.tvName1.text = UserManager.user.nick_name
val bitmap = ZXingUtils.createQRImage(
intent.getStringExtra("reg_url"), 400, 400
)
mDataBinding.ivQR.setImageBitmap(bitmap)
mDataBinding.tvYQM.text = intent.getStringExtra("reg_code")
}
override fun initEvent() {
mDataBinding.tvCOPY.setOnClickListener {
copyContentToClipboard(intent.getStringExtra("reg_url"), this)
"复制成功".showToast()
}
mDataBinding.ivClose.setOnClickListener {
mDataBinding.flMa.visibility = View.GONE
}
mDataBinding.tvMingXi.setOnClickListener {
val intent = Intent(this, FriendListActivity::class.java)
startActivity(intent)
}
}
/**
* 复制内容到剪贴板
*
* @param content
* @param context
*/
fun copyContentToClipboard(content: String?, context: Context) {
//获取剪贴板管理器:
val cm = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
// 创建普通字符型ClipData
val mClipData = ClipData.newPlainText("Label", content)
// 将ClipData内容放到系统剪贴板里。
cm.setPrimaryClip(mClipData)
}
fun getViewBitmap(v: View?): Bitmap? {
if (null == v) {
return null
}
v.isDrawingCacheEnabled = true
v.buildDrawingCache()
if (Build.VERSION.SDK_INT >= 11) {
v.measure(
View.MeasureSpec.makeMeasureSpec(v.width, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(v.height, View.MeasureSpec.EXACTLY)
)
v.layout(
v.x.toInt(),
v.y.toInt(),
v.x.toInt() + v.measuredWidth,
v.y.toInt() + v.measuredHeight
)
} else {
v.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
)
v.layout(0, 0, v.measuredWidth, v.measuredHeight)
}
val bitmap = Bitmap.createBitmap(v.drawingCache, 0, 0, v.measuredWidth, v.measuredHeight)
v.isDrawingCacheEnabled = false
v.destroyDrawingCache()
return bitmap
}
private fun saveMediaToStorage(context: Context, bitmap: Bitmap) {
//Generating a file name
val filename = "${System.currentTimeMillis()}.jpg"
//Output stream
var fos: OutputStream? = null
//For devices running android >= Q
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//getting the contentResolver
context?.contentResolver?.also { resolver ->
//Content resolver will process the contentvalues
val contentValues = ContentValues().apply {
//putting file information in content values
put(MediaStore.MediaColumns.DISPLAY_NAME, filename)
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg")
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM)
}
//Inserting the contentValues to contentResolver and getting the Uri
val imageUri: Uri? =
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
//Opening an outputstream with the Uri that we got
fos = imageUri?.let { resolver.openOutputStream(it) }
}
} else {
//These for devices running on android < Q
//So I don't think an explanation is needed here
val imagesDir =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
val image = File(imagesDir, filename)
fos = FileOutputStream(image)
}
fos?.use {
//Finally writing the bitmap to the output stream that we opened
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, it)
// ToastUtils.showShort(context.getString(R.string.save_success))
sendBroadcast(
Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(
File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),
filename
)
)
)
)
}
}
}

View File

@@ -0,0 +1,29 @@
package com.yuyin.mier.module_my
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.repository.CommonRepository
import com.yuyin.module_live.model.InvitationList
class YaoQingViewModel : BaseViewModel() {
var myRepository = CommonRepository()
var bindCode = MutableLiveData<Any>()
fun bind_reg_code(reg_code: String) {
launchUI {
val result = myRepository.bind_reg_code(reg_code)
bindCode.value = result.data
}
}
var friendBean = MutableLiveData<InvitationList>()
fun get_my_reg_friend_list(page:Int) {
launchUI {
val result = myRepository.get_my_reg_friend_list(page.toString(),"20")
friendBean.value = result.data
}
}
}

View File

@@ -0,0 +1,63 @@
package com.yuyin.mier.module_my.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.yuyin.lib_base.adapter.MyBaseAdapter;
import com.yuyin.mier.R;
import com.yuyin.mier.module_my.model.GoodsListBean;
/**
* 充值
*/
public class ChargeAdapter extends MyBaseAdapter<GoodsListBean> {
private Context context;
public ChargeAdapter(Context context) {
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder VH;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_chager, null);
VH = new ViewHolder(convertView);
convertView.setTag(VH);
} else {
VH = (ViewHolder) convertView.getTag();
}
VH.textNum1.setText(list_adapter.get(position).getIntegral() + "");
VH.textNum3.setText("" + list_adapter.get(position).getMoney());
if (list_adapter.get(position).isSelect()) {
VH.rlBg.setSelected(true);
VH.textNum1.setSelected(true);
VH.textNum3.setSelected(true);
} else {
VH.rlBg.setSelected(false);
VH.textNum1.setSelected(false);
VH.textNum3.setSelected(false);
}
return convertView;
}
public static class ViewHolder {
RelativeLayout rlBg;
TextView textNum1, textNum3;
public ViewHolder(View convertView) {
rlBg = (RelativeLayout) convertView.findViewById(R.id.rlBg);
textNum1 = (TextView) convertView.findViewById(R.id.textNum1);
textNum3 = (TextView) convertView.findViewById(R.id.textNum3);
}
}
}

View File

@@ -0,0 +1,20 @@
package com.yuyin.mier.module_my.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.module_live.model.FriendBean
import java.util.*
class FriendAdapter :
BaseQuickAdapter<FriendBean, BaseViewHolder>(R.layout.item_friend, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: FriendBean) {
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView(R.id.iv_head))
helper.setText(R.id.tv_name, item.nick_name)
.setText(R.id.tv_time, item.add_time)
.setText(R.id.tv_shouyi,"收益:"+item.give_earnings+"钻石")
}
}

View File

@@ -0,0 +1,22 @@
package com.yuyin.mier.module_my.adapter
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_my.model.GiftLogBean
import java.util.*
class GiftLogAdapter :
BaseQuickAdapter<GiftLogBean, BaseViewHolder>(R.layout.item_gift_log_list, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GiftLogBean) {
helper
.setText(R.id.tv_name, item.send_user_info.nick_name)
.setText(R.id.tv_id, "ID" + item.send_user_info.uid)
.setText(R.id.tv_num, item.total_send_amount)
.setText(R.id.tv_time, TimeUtil.toDateYmd(item.last_send_time))
Glide.with(mContext).load(item.send_user_info.head_pic).error(R.mipmap.ic_launcher_app)
.placeholder(R.mipmap.ic_launcher_app).into(helper.getView(R.id.v_img))
}
}

View File

@@ -0,0 +1,18 @@
package com.yuyin.mier.module_my.adapter
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_my.model.GiftLogSubBean
import java.util.*
class GiftLogSubAdapter :
BaseQuickAdapter<GiftLogSubBean, BaseViewHolder>(R.layout.item_gift_log_list_sub, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: GiftLogSubBean) {
helper
.setText(R.id.tv_title2, "${item.gift_name}x${item.gift_num}")
.setText(R.id.tv_title3, "${item.gift_total_price}金币")
Glide.with(mContext).load(item.base_image).into(helper.getView(R.id.v_img))
}
}

View File

@@ -0,0 +1,20 @@
package com.yuyin.mier.module_my.adapter
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.module_live.model.UserGiftList
import java.util.*
class HomePageGiftAdapter :
BaseQuickAdapter<UserGiftList, BaseViewHolder>(R.layout.item_homepage_gift, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: UserGiftList) {
helper
.setText(R.id.tv_num, "x${item.gift_total_sum}")
.setText(R.id.tv_title1, item.gift_name)
.setText(R.id.tv_title2, "${item.gift_price}金币")
Glide.with(mContext).load(item.base_image).error(R.mipmap.no_tu)
.into(helper.getView(R.id.iv_img))
}
}

View File

@@ -0,0 +1,40 @@
package com.yuyin.mier.module_my.adapter
import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_my.model.UserAlbumsList
import java.util.*
class MyPicListAdapter(private val showDel: Boolean) :
BaseQuickAdapter<UserAlbumsList, BaseViewHolder>(
R.layout.item_my_pics, ArrayList()
) {
override fun convert(helper: BaseViewHolder, item: UserAlbumsList) {
helper.addOnClickListener(R.id.iv_del)
val ivDel = helper.getView<ImageView>(R.id.iv_del)
if (item.type == 1) {
ivDel.visibility = View.VISIBLE
Glide.with(mContext)
.load(item.image)
.placeholder(R.mipmap.no_tu)
.error(R.mipmap.no_tu)
.into((helper.getView<View>(R.id.iv_img) as ImageView))
} else {
ivDel.visibility = View.GONE
Glide.with(mContext)
.load(item.image)
.placeholder(R.mipmap.icon_add_pic22)
.error(R.mipmap.icon_add_pic22)
.into((helper.getView<View>(R.id.iv_img) as ImageView))
}
if (showDel && item.type == 1) {
ivDel.visibility = View.VISIBLE
} else {
ivDel.visibility = View.GONE
}
}
}

View File

@@ -0,0 +1,36 @@
package com.yuyin.mier.module_my.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.App
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.MyRoomList
class MyRoomListAdapter : BaseQuickAdapter<MyRoomList, BaseViewHolder>(R.layout.item_my_room) {
override fun convert(helper: BaseViewHolder, item: MyRoomList) {
helper.addOnClickListener(R.id.iv_quite_room)
.addOnClickListener(R.id.iv_enter_room)
GlideUtil.loadImglogo(mContext, item.room_cover, helper.getView(R.id.iv_cover))
helper.setText(R.id.tv_room_name, item.room_name).setText(R.id.tv_room_id, "ID:" + item.room_number)
if (item.user_type == 1) {
helper.setText(R.id.tv_user_type, "房主")
if (App.rid==item.rid.toString()){
helper.setGone(R.id.iv_quite_room, false)
}else{
helper.setGone(R.id.iv_quite_room, true)
}
} else if (item.user_type == 2) {
helper.setText(R.id.tv_user_type, "管理员")
helper.setGone(R.id.iv_quite_room, true)
} else {
helper.setText(R.id.tv_user_type, "主持人")
helper.setGone(R.id.iv_quite_room, true)
}
}
}

View File

@@ -0,0 +1,26 @@
package com.yuyin.mier.module_my.adapter
import android.graphics.Color
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.NobilityPower
class PeerageAdapter : BaseQuickAdapter<NobilityPower, BaseViewHolder>(R.layout.item_peerage) {
override fun convert(helper: BaseViewHolder, item: NobilityPower) {
helper.setText(R.id.tv_name, item.name)
// .setText(R.id.tv_content, item.content)
if (item.is_power == 1) {
GlideUtil.loadImglogo(mContext, item.image, helper.getView(R.id.iv_icon))
helper.getView<TextView>(R.id.tv_name).setTextColor(Color.parseColor("#FFFFBB3A"))
} else {
GlideUtil.loadImglogo(mContext, item.images, helper.getView(R.id.iv_icon))
helper.getView<TextView>(R.id.tv_name).setTextColor(Color.parseColor("#FF999999"))
}
}
}

View File

@@ -0,0 +1,25 @@
package com.yuyin.mier.module_my.adapter
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.mier.R
import com.yuyin.mier.module_my.model.CollectRoomListBean
import java.util.*
class ShouCangRoomAdapter :
BaseQuickAdapter<CollectRoomListBean, BaseViewHolder>(R.layout.item_shoucang, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: CollectRoomListBean) {
helper.addOnClickListener(R.id.tv_enter)
Glide.with(mContext).load(item.room_cover).into(helper.getView(R.id.v_img))
helper
.setText(R.id.tv_title, item.room_name)
.setText(R.id.tv_title2, "ID" + item.room_number.toString())
helper.addOnClickListener(R.id.tv_enter)
if(item.is_online=="1"){
helper.setImageResource(R.id.iv_online,R.mipmap.online1)
}else{
helper.setImageResource(R.id.iv_online,R.mipmap.online2)
}
}
}

View File

@@ -0,0 +1,26 @@
package com.yuyin.mier.module_my.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.mier.R
import com.yuyin.module_live.model.SignedArtistBean
class SignedArtistAdapter :
BaseQuickAdapter<SignedArtistBean, BaseViewHolder>(R.layout.item_signed_artists2) {
override fun convert(helper: BaseViewHolder, item: SignedArtistBean) {
helper.addOnClickListener(R.id.btn_confirm,R.id.btn_cancel)
GlideUtil.loadImglogo(mContext, item.head_pic, helper.getView(R.id.iv_head))
helper.setText(R.id.tv_name, item.nick_name)
.setText(R.id.tv_time,"ID:${item.uid}")
.setText(R.id.tv_time2,"到期时间"+TimeUtil.toDateYmdHan3(item.end_time.toLong()))
if (item.sex == 1) {
helper.setImageResource(R.id.iv_sex, R.mipmap.login_reg_nan1)
} else {
helper.setImageResource(R.id.iv_sex, R.mipmap.login_reg_nv1)
}
}
}

View File

@@ -0,0 +1,32 @@
package com.yuyin.mier.module_my.adapter
import android.graphics.Color
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.mier.R
import com.yuyin.mier.module_home.model.userWithdrawalBean
import java.util.*
class TxLogDeatileAdapter :
BaseQuickAdapter<userWithdrawalBean, BaseViewHolder>(R.layout.item_txmx_new, ArrayList()) {
override fun convert(helper: BaseViewHolder, item: userWithdrawalBean) {
if(item.status=="1"){ // 1待审核 2已到账3打款失败
helper.setText(R.id.tv_tx_status, "待审核")
helper.setBackgroundRes(R.id.tv_tx_status,R.drawable.shape_tx_mxbg1)
helper.setTextColor(R.id.tv_tx_status,Color.parseColor("#999999"))
}else if(item.status=="2"){ // 1待审核 2已到账 3打款失败
helper.setText(R.id.tv_tx_status, "已到账")
helper.setBackgroundRes(R.id.tv_tx_status,R.drawable.shape_tx_mxbg2)
helper.setTextColor(R.id.tv_tx_status,Color.parseColor("#00AA58"))
}else if(item.status=="3"){ // 1待审核 2已到账 3打款失败
helper.setText(R.id.tv_tx_status, "打款失败")
helper.setBackgroundRes(R.id.tv_tx_status,R.drawable.shape_tx_mxbg1)
helper.setTextColor(R.id.tv_tx_status,Color.parseColor("#999999"))
}
helper.setText(R.id.tv_tx_date, TimeUtil.toDateYmd5(item.add_time))
.setText(R.id.tv_tx_money, item.general_money+"")
}
}

View File

@@ -0,0 +1,49 @@
package com.yuyin.mier.module_my.adapter
import android.view.View
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.module_live.model.UserGiftList
class UserGiftWallAdapter :
BaseQuickAdapter<UserGiftList, BaseViewHolder>(R.layout.item_user_gift_wall) {
override fun convert(helper: BaseViewHolder, item: UserGiftList) {
GlideUtil.loadImglogo(mContext, item.base_image, helper.getView(R.id.iv_cover))
helper.setText(R.id.tv_name, item.gift_name)
.setText(R.id.tv_num, "x" + item.num)
.setText(R.id.tv_price, item.gift_price)
helper.getView<View>(R.id.rl_wall_bg).isSelected = item.isSelect
if (item.isSelect) {
// helper.getView<LinearLayout>(R.id.rl_wall_bg).alpha = 1f
helper.setVisible(R.id.tv_num, true)
helper.setVisible(R.id.iv_head, true)
// helper.setVisible(R.id.tv_num, item.num.isNotEmpty())
helper.setVisible(R.id.tv_num, true)
// if(!TextUtils.isEmpty(item.max_gift_num_user.head_pic)){
// GlideUtil.loadImglogo(
// mContext,
// item.max_gift_num_user.head_pic,
// helper.getView(R.id.iv_head)
// )
// }
helper.addOnClickListener(R.id.iv_head)
} else {
// helper.getView<LinearLayout>(R.id.rl_wall_bg).alpha = 0.6f
helper.setVisible(R.id.tv_num, false)
helper.setVisible(R.id.iv_head, false)
}
}
}

View File

@@ -0,0 +1,110 @@
package com.yuyin.mier.module_my.auction
import androidx.recyclerview.widget.LinearLayoutManager
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivitySignedArtistBinding
import com.yuyin.mier.module_home.tab.center.MainCenterViewModel
import com.yuyin.mier.module_my.adapter.SignedArtistAdapter
import com.yuyin.mier.module_my.set.SetTipsDialog
class SignedArtistActivity : BaseDataBindingActivity<MainCenterViewModel,
ActivitySignedArtistBinding>() {
var page = 1
lateinit var signedArtistAdapter: SignedArtistAdapter
override fun startObserve() {
viewModel.signedArtist.observe(this) {
if (page == 1) {
signedArtistAdapter.setNewData(it)
} else {
signedArtistAdapter.addData(it)
}
}
viewModel.getFinally().observe(this) {
mDataBinding.smart.finishRefresh()
mDataBinding.smart.finishLoadMore()
}
viewModel.renewalAmountBean.observe(this) { money ->
val setTipsDialog = SetTipsDialog(this);
if (money.money.toInt() > 0) {
setTipsDialog.getBinding().tvContent.text = "本次需花费${money.money}金币续约7天,确定续约吗?"
} else {
setTipsDialog.getBinding().tvContent.text =
"前三次免费续约,本次可花费${money.money}金币续约7天,确定续约吗?"
}
setTipsDialog.getBinding().btnConfirm.setOnClickListener {
//在子线程执行删除缓存
viewModel.user_renewal_contract(money.id)
setTipsDialog.dismiss()
}
setTipsDialog.show()
}
}
override fun getLayoutId(): Int {
return R.layout.activity_signed_artist
}
override fun initView() {
mDataBinding.rvContainer.layoutManager = LinearLayoutManager(this)
signedArtistAdapter = SignedArtistAdapter()
mDataBinding.rvContainer.adapter = signedArtistAdapter
}
override fun initData() {
viewModel.get_user_contract_list(UserManager.user.uid.toString(), page.toString(), "20")
}
override fun initEvent() {
signedArtistAdapter.setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.btn_confirm) {
viewModel.user_renewal_contract_status(signedArtistAdapter.data[position].id.toString())
} else if (view.id == R.id.btn_cancel) {
viewModel.user_cancel_contract(
signedArtistAdapter.data[position].id.toString(),
UserManager.user.uid.toString()
)
}
}
mDataBinding.smart.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onRefresh(refreshLayout: RefreshLayout) {
page = 1
viewModel.get_user_contract_list(
UserManager.user.uid.toString(),
page.toString(),
"20"
)
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
page++
viewModel.get_user_contract_list(
UserManager.user.uid.toString(),
page.toString(),
"20"
)
}
})
}
}

View File

@@ -0,0 +1,166 @@
package com.yuyin.mier.module_my.chongzhi
import android.annotation.SuppressLint
import android.os.Handler
import android.os.Message
import android.text.TextUtils
import androidx.databinding.ViewDataBinding
import com.alipay.sdk.app.PayTask
import com.tencent.mm.opensdk.modelpay.PayReq
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.module_my.adapter.ChargeAdapter
import com.yuyin.mier.module_my.model.GoodsListBean
import com.yuyin.mier.module_my.model.PayResult
import kotlinx.android.synthetic.main.activity_chongzhi.*
import java.util.ArrayList
class ChongZhiActivity : BaseDataBindingActivity<ChongZhiViewModel, ViewDataBinding>() {
private lateinit var chargeAdapter: ChargeAdapter
override fun startObserve() {
viewModel.goodsListData.observe(this, {
chargeAdapter.getList_adapter().clear()
chargeAdapter.getList_adapter().addAll(it)
chargeAdapter.notifyDataSetChanged()
})
viewModel.alipay.observe(this, {
val payRunnable = Runnable {
val alipay = PayTask(this)
val result: Map<String, String> = alipay.payV2(
it,
true
)
val msg = Message()
msg.what = SDK_PAY_FLAG
msg.obj = result
mHandler.sendMessage(msg)
}
// 必须异步调用
val payThread = Thread(payRunnable)
payThread.start()
})
viewModel.weixin.observe(this, {
val mWxApi = WXAPIFactory.createWXAPI(
this,null)
// 将该app注册到微信
mWxApi.registerApp("wx3858bffeddfb91b8")
// 判断是否安装客户端
if (!mWxApi.isWXAppInstalled) {
"请您先安装微信客户端!".showToast()
return@observe
}
val req = PayReq()
req.appId = "wx3858bffeddfb91b8" // 微信开放平台审核通过的应用APPID
req.partnerId = it.partnerid // 微信支付分配的商户号
req.prepayId = it.prepayid // 预支付订单号app服务器调用“统一下单”接口获取
req.nonceStr = it.noncestr // 随机字符串不长于32位
req.timeStamp = java.lang.String.valueOf(it.timestamp) // 时间戳
req.packageValue = it.packageX // 固定值Sign=WXPay可以直接写死服务器返回的也是这个固定值
req.sign = it.sign // 签名,
// 调用微信SDK发起支付回调WxPayEntryActivity
mWxApi.sendReq(req)
})
}
override fun getLayoutId(): Int = R.layout.activity_chongzhi
override fun initView() {
}
override fun initData() {
chargeAdapter = ChargeAdapter(this)
myGrid.adapter = chargeAdapter
viewModel.loadData(UserManager.user.uid.toString())
}
override fun initEvent() {
textVx.setOnClickListener {
checkbox2.isChecked = true
checkbox.isChecked = false
}
textZfb.setOnClickListener {
checkbox2.isChecked = false
checkbox.isChecked = true
}
myGrid.setOnItemClickListener { adapterView, view, position, l ->
val list_adapter: List<GoodsListBean> = chargeAdapter.getList_adapter()
if (list_adapter[position].isSelect) {
} else {
for (list in list_adapter) {
list.isSelect = false
}
list_adapter[position].isSelect = true
chargeAdapter.notifyDataSetChanged()
}
}
btn_ok.setOnClickListener {
val list_adapter: List<GoodsListBean> = chargeAdapter.getList_adapter()
val listNew: MutableList<GoodsListBean> = ArrayList<GoodsListBean>()
for (list in list_adapter) {
if (list.isSelect) {
listNew.add(list)
}
}
if (listNew.size > 0) {
if (checkbox2.isChecked) {
loadWxData(java.lang.String.valueOf(listNew[0].crid))
} else if (checkbox.isChecked) {
loadZfbData(java.lang.String.valueOf(listNew[0].crid))
// ToastUtil.showToast(context,"暂不支持")
} else if (!textVx.isSelected && !textZfb.isSelected) {
"请选择充值方式".showToast()
}
} else {
"请选择充值金额".showToast()
}
}
}
private fun loadWxData(valueOf: String) {
viewModel.rechargeWxPay(UserManager.user.uid.toString(), valueOf, "2")
}
private fun loadZfbData(valueOf: String) {
viewModel.rechargePay(UserManager.user.uid.toString(), valueOf, "1")
}
private val SDK_PAY_FLAG = 1
@SuppressLint("HandlerLeak")
private val mHandler: Handler = object : Handler() {
override fun handleMessage(msg: Message) {
val payResult2 = PayResult(msg.obj as Map<String, String>)
when (msg.what) {
SDK_PAY_FLAG -> {
val payResult = PayResult(msg.obj as Map<String, String>)
/**
* 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
val resultInfo: String = payResult.getResult() // 同步返回需要验证的信息
val resultStatus: String = payResult.getResultStatus()
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
"支付成功".showToast()
} else {
// 失败。
"支付失败,请重试".showToast()
}
}
else -> {
}
}
}
}
}

View File

@@ -0,0 +1,38 @@
package com.yuyin.mier.module_my.chongzhi
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.model.Wxmodel
import com.yuyin.mier.module_my.model.GoodsListBean
import com.yuyin.mier.repository.CommonRepository
class ChongZhiViewModel : BaseViewModel() {
var repository = CommonRepository()
var weixin = MutableLiveData<Wxmodel>()
var goodsListData = MutableLiveData<ArrayList<GoodsListBean>>()
fun loadData(uid: String) {
launchUI {
val result = repository.goodsList(uid)
goodsListData.value = result.data
}
}
var alipay = MutableLiveData<String>()
fun rechargePay(user_id: String, goods_id: String, type: String) {
launchUI {
val result = repository.rechargePay(user_id, goods_id, type)
alipay.value = result.data
}
}
fun rechargeWxPay(user_id: String, goods_id: String, type: String) {
launchUI {
val result = repository.rechargeWxPay(user_id, goods_id, type)
weixin.value = result.data
}
}
}

View File

@@ -0,0 +1,65 @@
package com.yuyin.mier.module_my.cp
import android.view.View
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityCpBinding
class CPActivity : BaseDataBindingActivity<CPViewModel, ActivityCpBinding>() {
override fun startObserve() {
viewModel.cpDetail.observe(this) {
if (it.is_have_cp == 2) {
mDataBinding.emptyView.visibility = View.VISIBLE
mDataBinding.llCp.visibility = View.GONE
} else {
mDataBinding.emptyView.visibility = View.GONE
mDataBinding.llCp.visibility = View.VISIBLE
mDataBinding.cpLeftName.text = it.nick_name
mDataBinding.cpRightName.text = it.receive_nick_name
GlideUtil.loadImglogo(this, it.head_pic, mDataBinding.leftHead)
GlideUtil.loadImglogo(this, it.receive_head_pic, mDataBinding.rightHead)
// loadImage( mDataBinding.leftFrame, it.win_base_image,R.mipmap.)
// loadImage( mDataBinding.rightFrame, it.receive_win_base_image,)
mDataBinding.tvValue.text = it.now_value.toString()+"/"+it.next_value
if(it.is_online=="1"){
mDataBinding.ivOnline.setImageResource(R.mipmap.online1)
}else{
mDataBinding.ivOnline.setImageResource(R.mipmap.online2)
}
if(it.receive_is_online=="1"){
mDataBinding.ivOnline2.setImageResource(R.mipmap.online1)
}else{
mDataBinding.ivOnline2.setImageResource(R.mipmap.online2)
}
}
}
}
override fun getLayoutId(): Int {
return R.layout.activity_cp
}
override fun initView() {
}
override fun initData() {
viewModel.user_coupling_info(UserManager.user.uid.toString())
}
override fun initEvent() {
mDataBinding.ivRemoveCp.setOnClickListener {
}
}
}

View File

@@ -0,0 +1,21 @@
package com.yuyin.mier.module_my.cp
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.module_my.model.CPDetailsBean
import com.yuyin.mier.repository.CommonRepository
class CPViewModel : BaseViewModel() {
private val repository = CommonRepository()
val cpDetail = MutableLiveData<CPDetailsBean>()
fun user_coupling_info(uid: String) {
launchUI {
val result = repository.user_coupling_info(uid)
cpDetail.value = result.data
}
}
}

View File

@@ -0,0 +1,98 @@
package com.yuyin.mier.module_my.dengji
import android.content.Intent
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener
import com.yuyin.mier.BR
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityDjBinding
import com.yuyin.mier.module_my.tequan.TeQuanActivity
import com.yuyin.lib_base.arouter.AroutUtil.MY_COMM_DENGJI
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.mier.adapter.LeverListAdapter
import kotlinx.android.synthetic.main.activity_dj.*
@Route(path = MY_COMM_DENGJI)
class DengJiActivity : BaseDataBindingActivity<DengJiViewModel, ActivityDjBinding>() {
private val titleRes = ArrayList<String>() //tab标题集合
private val dataTab: ArrayList<CustomTabEntity> = ArrayList() //CommonTabLayout 所需数据集合
private lateinit var leverListAdapter: LeverListAdapter
override fun startObserve() {
viewModel.dengJiBeanData.observe(this) {
mDataBinding.setVariable(BR.data1, it.contribution_level_info)
mDataBinding.setVariable(BR.data2, it.charm_level_info)
mDataBinding.setVariable(BR.vm1, viewModel)
}
viewModel.lever.observe(this) {
leverListAdapter.setNewData(it.level_list)
}
}
override fun getLayoutId(): Int = R.layout.activity_dj
override fun initView() {
loadImage(mDataBinding.headImage, UserManager.user.head_pic, R.mipmap.ic_launcher_app)
loadImage(mDataBinding.headImage2, UserManager.user.head_pic, R.mipmap.ic_launcher_app)
mDataBinding.idd1.text = UserManager.user.nick_name
mDataBinding.idd2.text = UserManager.user.nick_name
titleRes.add("贡献等级介绍")
titleRes.add("魅力等级介绍")
for (i in titleRes.indices) {
dataTab.add(object : CustomTabEntity {
override fun getTabTitle(): String {
return titleRes[i]
}
override fun getTabSelectedIcon(): Int {
return 0
}
override fun getTabUnselectedIcon(): Int {
return 0
}
})
}
tab_layout.setTabData(dataTab)
tab_layout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
if (position == 0) {
viewModel.get_level_list("2")
} else {
viewModel.get_level_list("1")
}
}
override fun onTabReselect(position: Int) {}
})
}
override fun initData() {
viewModel.getUserLevelInfo()
viewModel.get_level_list("2")
mDataBinding.rvContainer.layoutManager = LinearLayoutManager(this)
leverListAdapter = LeverListAdapter()
mDataBinding.rvContainer.adapter = leverListAdapter
}
override fun initEvent() {
mDataBinding.tequan.setOnClickListener {
var intent = Intent(this, TeQuanActivity::class.java)
startActivity(intent)
}
}
}

View File

@@ -0,0 +1,39 @@
package com.yuyin.mier.module_my.dengji
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.ui.X5WebViewActivity
import com.yuyin.mier.module_home.model.LeverBean
import com.yuyin.mier.module_my.model.DengJiBean
import com.yuyin.mier.repository.CommonRepository
class DengJiViewModel : BaseViewModel() {
private val repository = CommonRepository()
var dengJiBeanData: MutableLiveData<DengJiBean> = MutableLiveData()
fun getUserLevelInfo() {
launchUI {
var result = repository.get_user_level_info()
dengJiBeanData.value = result.data
}
}
fun goShuoMing() {
App.instance?.baseContext?.let { X5WebViewActivity.forward(it, Const.PAGE_DENGJI, "等级说明") }
}
var lever = MutableLiveData<LeverBean>()
fun get_level_list(type:String) {
launchUI {
var result = repository.get_level_list(type)
lever.value = result.data
}
}
}

View File

@@ -0,0 +1,431 @@
package com.yuyin.mier.module_my.edituser
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.text.TextUtils
import android.view.View
import androidx.recyclerview.widget.GridLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.baoyz.actionsheet.ActionSheet
import com.baoyz.actionsheet.ActionSheet.ActionSheetListener
import com.bigkoo.pickerview.builder.TimePickerBuilder
import com.bumptech.glide.Glide
import com.yuyin.lib_base.arouter.AroutUtil.MAIN_MY_USER_INFO
import com.yuyin.lib_base.base.BaseActivity
import com.yuyin.lib_base.util.showToast
import com.lzy.imagepicker.ImagePicker
import com.lzy.imagepicker.bean.ImageItem
import com.lzy.imagepicker.ui.ImageGridActivity
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMUserFullInfo
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.model.Login
import com.yuyin.lib_base.util.PermissionsChecker
import com.yuyin.mier.R
import com.yuyin.module_community.adapter.FBPicListAdapter
import com.yuyin.module_community.adapter.FullyGridLayoutManager
import com.yuyin.module_community.model.ImageItems
import kotlinx.android.synthetic.main.activity_modify_data.*
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import org.litepal.LitePal
import java.io.File
import java.lang.Exception
import java.text.SimpleDateFormat
import java.util.*
@Route(path = MAIN_MY_USER_INFO)
class ModifyDataActivity : BaseActivity<ModifyDataViewModel>() {
private var startDate: Calendar = Calendar.getInstance()
private var endDate: Calendar = Calendar.getInstance()
private var seleteDate: Calendar = Calendar.getInstance()
var permissionListTmp = arrayOf<String>(Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE)
//图片
val REQUEST_CODE_SELECT = 100
val REQUEST_CODE_SELEC2 = 101
private var sexStr: String = ""
private var nowDate: String = ""
private var maxSelectNum = 9 //最多显示的图片数量
override fun startObserve() {
//绑定数据
viewModel.userInfoData.observe(this) {
loadImage(head_image, it.head_pic, R.mipmap.ic_launcher_app)
//昵称
textSend.setText(it.nick_name)
//性别
sexStr = it.sex
if (it.sex == "1") {
sex.text = ""
} else {
sex.text = ""
}
//ID号
id.text = it.uid
//出生日期
birthday.text = it.birthday
imgString = it.head_pic
tv_qianming.setText(it.autograph)
tv_aihao.setText(it.hobby)
}
viewModel.editFinish.observe(this) {
"修改成功".showToast()
var login = LitePal.findFirst(Login::class.java)
login.nick_name = it.nick_name
login.head_pic = it.head_pic
login.save()
UserManager.initData()
val info = V2TIMUserFullInfo()
info.setNickname(it.nick_name)
info.faceUrl = it.head_pic
V2TIMManager.getInstance().setSelfInfo(info, null)
finish()
}
viewModel.imgListData.observe(this) {
if (it.isEmpty()) return@observe
val nickname = textSend.text.toString().trim()
val birthDay = birthday.text.toString().trim()
val qianming = tv_qianming.text.toString().trim()
val aihao = tv_aihao.text.toString().trim()
imgString = it[0]
viewModel.editUserInfo(
imgString,
nickname,
sexStr,
birthDay,
qianming,
aihao
)
}
}
override fun getLayoutId(): Int = R.layout.activity_modify_data
override fun initView() {
}
override fun initData() {
adapter = FBPicListAdapter()
val manager = FullyGridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false)
sor_release_rv.layoutManager = manager
sor_release_rv.adapter = adapter
imageListAll2.add(ImageItems(2, ImageItem()))
adapter.setNewData(imageListAll2)
viewModel.loadUserInfo()
}
override fun initEvent() {
rl_sex.setOnClickListener {
ActionSheet.createBuilder(this, supportFragmentManager)
.setCancelButtonTitle("取消")
.setOtherButtonTitles("", "")
.setCancelableOnTouchOutside(true)
.setListener(object : ActionSheetListener {
override fun onDismiss(actionSheet: ActionSheet, isCancel: Boolean) {}
override fun onOtherButtonClick(actionSheet: ActionSheet, index: Int) {
when (index) {
0 -> {
sexStr = "1"
sex.text = ""
}
1 -> {
sexStr = "2"
sex.text = ""
}
}
}
}).show()
}
tv_baocun.setOnClickListener {
val nickname = textSend.text.toString().trim()
if (TextUtils.isEmpty(nickname)) {
"昵称为空".showToast()
return@setOnClickListener
}
val birthDay = birthday.text.toString().trim()
if (TextUtils.isEmpty(birthDay)) {
"生日为空".showToast()
return@setOnClickListener
}
val qianming = tv_qianming.text.toString().trim()
if (TextUtils.isEmpty(qianming)) {
"签名不能为空".showToast()
return@setOnClickListener
}
val aihao = tv_aihao.text.toString().trim()
if (TextUtils.isEmpty(aihao)) {
"爱好不能为空".showToast()
return@setOnClickListener
}
if (selImageList.size == 0) {
viewModel.editUserInfo(
imgString,
nickname,
sexStr,
birthDay,
qianming,
aihao
)
} else {
uploadFile(selImageList[0].path)
}
}
head_image.setOnClickListener {
showImgPop()
}
birthday_btn.setOnClickListener {
val string = birthday.text.toString()
val timeYmd: String = getTimeYmd()
val split1 = string.split("-".toRegex()).toTypedArray()
val split = timeYmd.split("-".toRegex()).toTypedArray()
startDate.set(1900, 0, 1)
try {
endDate.set(split[0].toInt(), split[1].toInt() - 1, split[2].toInt())
} catch (e: NumberFormatException) {
e.printStackTrace()
}
try {
seleteDate.set(split1[0].toInt(), split1[1].toInt() - 1, split1[2].toInt())
} catch (e: NumberFormatException) {
e.printStackTrace()
}
val pvTime = TimePickerBuilder(
this@ModifyDataActivity
) { date, _ ->
if (date != null) {
nowDate = getNowDate(date)
birthday.text = nowDate
}
}
.setRangDate(startDate, endDate)
.setDate(seleteDate)
.build()
pvTime.show()
}
adapter.setOnItemClickListener { adapter2, view, position ->
var mPermissionsChecker= PermissionsChecker(this@ModifyDataActivity)
if (mPermissionsChecker!!.lacksPermissions(*permissionListTmp)) {
ll_quanxian.visibility= View.VISIBLE
}else{
ll_quanxian.visibility= View.GONE
}
if (adapter.data[position].type == 2) {
var numss = 9 - (adapter.data.size - 1)
if (numss > 3) numss = 3
val rxPermissions = RxPermissions(this)
val finalNumss = numss
rxPermissions
.request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe { granted: Boolean ->
if (granted) { // Always true pre-M
// 跳转到相册
ll_quanxian.visibility= View.GONE
ImagePicker.getInstance().selectLimit = finalNumss
ImagePicker.getInstance().isMultiMode = true
ImagePicker.getInstance().isCrop = false
val intent = Intent(this, ImageGridActivity::class.java)
//显示选中的图片
startActivityForResult(intent, REQUEST_CODE_SELEC2)
}else{
ll_quanxian.visibility= View.GONE
}
}
}
}
adapter.setOnItemChildClickListener { adapter, view, position ->
when (view.id) {
R.id.iv_del -> {
try {
tempList.removeAt(position)
imageListAll1.removeAt(position)
imageListAll2 = imageListAll1
if (tempList.size == maxSelectNum - 1) {
imageListAll2.add(ImageItems(2, ImageItem()))
adapter.setNewData(imageListAll2)
} else {
adapter.notifyDataSetChanged()
}
}catch (e:Exception){
e.printStackTrace()
}
}
}
}
}
private fun uploadFile(pic: String) {
val parts = ArrayList<MultipartBody.Part>()
val listPos: MutableList<Int> = ArrayList()
if (!TextUtils.isEmpty(pic)) {
val file2 = File(pic)
val requestFile2 = RequestBody.create("multipart/form-data".toMediaTypeOrNull(), file2)
val body2 = MultipartBody.Part.createFormData("file[]", file2.name, requestFile2)
parts.add(body2)
listPos.add(1)
}
if (parts.size != 0) {
viewModel.uploadImages(parts)
}
}
//图片的弹窗
private fun showImgPop() {
ActionSheet.createBuilder(this, supportFragmentManager)
.setCancelButtonTitle("取消")
.setOtherButtonTitles("拍照", "从手机选择")
.setCancelableOnTouchOutside(true)
.setListener(object : ActionSheetListener {
override fun onDismiss(actionSheet: ActionSheet, isCancel: Boolean) {}
@SuppressLint("CheckResult")
override fun onOtherButtonClick(actionSheet: ActionSheet, index: Int) {
var mPermissionsChecker= PermissionsChecker(this@ModifyDataActivity)
if (mPermissionsChecker!!.lacksPermissions(*permissionListTmp)) {
ll_quanxian.visibility= View.VISIBLE
}else{
ll_quanxian.visibility= View.GONE
}
val rxPermissions = RxPermissions(this@ModifyDataActivity)
rxPermissions
.request(
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
)
.subscribe { granted: Boolean ->
if (granted) { // Always true pre-M
ll_quanxian.visibility= View.GONE
when (index) {
0 -> {
//相机
ImagePicker.getInstance().isCrop = true
val intent = Intent(
this@ModifyDataActivity,
ImageGridActivity::class.java
)
intent.putExtra(
ImageGridActivity.EXTRAS_TAKE_PICKERS,
true
) // 是否是直接打开相机
startActivityForResult(
intent,
REQUEST_CODE_SELECT
)
}
1 -> {
// 跳转到相册
// Always true pre-M
// 跳转到相册
ImagePicker.getInstance().selectLimit = 1
ImagePicker.getInstance().isMultiMode = false
ImagePicker.getInstance().isCrop = true
ImagePicker.getInstance().isShowCamera = true
val intent = Intent(
this@ModifyDataActivity,
ImageGridActivity::class.java
)
//显示选中的图片
//显示选中的图片
startActivityForResult(
intent,
REQUEST_CODE_SELECT
)
}
}
}else{
ll_quanxian.visibility= View.GONE
}
}
}
}).show()
}
private fun getNowDate(date: Date): String {
val formatter = SimpleDateFormat("yyyy-MM-dd")
return formatter.format(date)
}
/**
* 获取当前时间
*
* @return
*/
private fun getTimeYmd(): String {
val date = Date() // 创建一个时间对象,获取到当前的时间
val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) // 设置时间显示格式
sdf.timeZone = TimeZone.getTimeZone("GMT+8")
return sdf.format(date)
}
/*-----------------------图片选择回调------------------------------*/
private val selImageList = ArrayList<ImageItem>()
private var imgString = ""
private var tempList: ArrayList<ImageItem> = ArrayList()
private lateinit var adapter: FBPicListAdapter
private var imageListAll1 = ArrayList<ImageItems>()
private var imageListAll2 = ArrayList<ImageItems>()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (data == null) {
return
}
val tempList: ArrayList<ImageItem>?
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
//添加图片返回
if (requestCode == REQUEST_CODE_SELECT) {
tempList =
data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS) as ArrayList<ImageItem>?
if (tempList == null) {
return
}
selImageList.clear()
selImageList.addAll(tempList)
if (selImageList.size > 0) {
Glide.with(this).load(selImageList[0].path).into(head_image)
}
} else if (requestCode == REQUEST_CODE_SELEC2) {
tempList =
data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS) as ArrayList<ImageItem>?
if (tempList == null) {
return
}
adapter.data.clear()
for (i in tempList.indices) {
imageListAll1.add(ImageItems(1, tempList[i]))
}
imageListAll2 = imageListAll1
if (imageListAll2.size < maxSelectNum) {
imageListAll2.add(ImageItems(2, ImageItem()))
}
adapter.setNewData(imageListAll2)
}
}
}
override fun onDestroy() {
super.onDestroy()
}
}

View File

@@ -0,0 +1,27 @@
package com.yuyin.mier.module_my.edituser
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.module_my.model.UserInfoBean
import com.yuyin.mier.repository.CommonRepository
import java.net.URLEncoder
class ModifyDataViewModel : BaseViewModel() {
var repository = CommonRepository()
var editFinish = MutableLiveData<UserInfoBean>()
//修改资料
fun editUserInfo(
img: String,
nickname: String,
sex: String,
birthday: String,
autograph: String,
hobby: String
) {
launchUI {
var data =
repository.setUserInfo(img, nickname, sex, birthday, "",autograph,hobby)
editFinish.value = data.data
}
}
}

View File

@@ -0,0 +1,42 @@
package com.yuyin.mier.module_my.feedback
import android.text.TextUtils
import com.alibaba.android.arouter.facade.annotation.Route
import com.yuyin.lib_base.arouter.AroutUtil.MY_COMM_FEEDBACK
import com.yuyin.lib_base.base.BaseActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import kotlinx.android.synthetic.main.activity_feedback.*
@Route(path = MY_COMM_FEEDBACK)
class FeedBackActivity : BaseActivity<FeedBackViewModel>() {
override fun startObserve() {
viewModel.feedbackData.observe(this, {
"提交成功".showToast()
finish()
})
}
override fun getLayoutId(): Int = R.layout.activity_feedback
override fun initView() {
}
override fun initData() {
}
override fun initEvent() {
butt_ok.setOnClickListener {
if (TextUtils.isEmpty(et_content.text.toString().trim())) {
"请填写您的反馈建议".showToast()
} else {
viewModel.feedBack(
UserManager.user.uid.toString(),
et_content.text.toString().trim()
)
}
}
}
}

View File

@@ -0,0 +1,17 @@
package com.yuyin.mier.module_my.feedback
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.repository.CommonRepository
class FeedBackViewModel : BaseViewModel() {
private val repository = CommonRepository()
var feedbackData: MutableLiveData<Any> = MutableLiveData()
fun feedBack(userID: String, content: String) {
launchUI {
var result = repository.feedBack(userID, content)
feedbackData.value = "成功"
}
}
}

View File

@@ -0,0 +1,30 @@
package com.yuyin.mier.module_my.gh.deatile
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityGonghuiButieBinding
import com.yuyin.mier.module_my.gh.home.GHHomeViewModel
import kotlinx.android.synthetic.main.activity_gonghui_butie.*
class GHBuTieActivity :
BaseDataBindingActivity<GHHomeViewModel, ActivityGonghuiButieBinding>() {
override fun startObserve() {
}
override fun getLayoutId(): Int= R.layout.activity_gonghui_butie
override fun initView() {
webview.loadUrl(Const.GH_BUTIE)
title3.text="上周流水:"+intent.getStringExtra("last_week_income")
title4.text="本周流水:"+intent.getStringExtra("this_week_income")
title5.text="上周收益:"+intent.getStringExtra("last_week_income_money")
}
override fun initData() {
}
override fun initEvent() {
}
}

View File

@@ -0,0 +1,203 @@
package com.yuyin.mier.module_my.gh.deatile
import android.content.Intent
import android.text.TextUtils
import android.view.View
import android.widget.RelativeLayout
import android.widget.TextView
import com.alibaba.android.arouter.launcher.ARouter
import com.blankj.utilcode.util.ClipboardUtils
import com.kongzue.dialog.util.BaseDialog
import com.kongzue.dialog.v3.CustomDialog
import com.yuyin.lib_base.App
import com.yuyin.lib_base.arouter.AroutUtil
import com.yuyin.lib_base.base.BaseDataBindingActivity
import com.yuyin.lib_base.base.UserManager
import com.yuyin.lib_base.util.GlideUtil
import com.yuyin.lib_base.util.TimeUtil
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityGonghuiDeatileBinding
import com.yuyin.mier.module_my.gh.home.GHHomeActivity
import com.yuyin.mier.module_my.gh.home.GHHomeViewModel
import com.yuyin.mier.module_my.gh.shenqing.GHSQActivity
import kotlinx.android.synthetic.main.activity_gh_home.flADD
import kotlinx.android.synthetic.main.activity_gonghui_deatile.*
class GongHuiDeatileActivity :
BaseDataBindingActivity<GHHomeViewModel, ActivityGonghuiDeatileBinding>() {
var money = "0"
private var guild_id = ""
override fun startObserve() {
viewModel.userInfoData.observe(this) {
App.guild_id = it.guild_id
}
viewModel.guildInfoBean.observe(this) {
money = it.money
if (TextUtils.isEmpty(it.intro)) {
tv_ghjj.text = "暂无简介"
} else {
tv_ghjj.text = it.intro
}
GlideUtil.loadImglogo(this, it.cover, iv_gh_img)
tv_guild_name.text = it.guild_name
tv_gh_id.text =
if (it.guild_special_id == "0") "ID:" + it.id else "ID:" + it.guild_special_id
tv_gh_num.text = it.num
tv_add_time.text = "创建时间:" + TimeUtil.toDateYmd(it.add_time)
tv_gxz.text = it.contribution_value
tv_ghhz.text = it.ghz.nick_name
GlideUtil.loadImglogo(this, it.ghz.head_pic, hz_head)
if (it.ghz.noblity_image.isNotEmpty()) {
GlideUtil.loadImglogo(this, it.ghz.noblity_image, iv_juewei)
}
if (it.ghz.contribution_level_image.isNotEmpty()) {
GlideUtil.loadImglogo(this, it.ghz.contribution_level_image, iv_gongxian)
}
if (it.ghz.charm_level_image.isNotEmpty()) {
GlideUtil.loadImglogo(this, it.ghz.charm_level_image, iv_meili)
}
if (it.ghz.uid == UserManager.user.uid.toString()) {
tv_gh_butie.visibility = View.VISIBLE
out.visibility = View.GONE
add.visibility = View.GONE
jiesan.visibility = View.VISIBLE
// tv_title2.visibility=View.VISIBLE
}
}
}
override fun getLayoutId(): Int = R.layout.activity_gonghui_deatile
override fun initView() {
guild_id = intent.getStringExtra("ghID").toString()
viewModel.get_the_guild_info(guild_id)
if (guild_id == App.guild_id) {
out.visibility = View.VISIBLE
} else {
add.visibility = View.VISIBLE
}
}
override fun initData() {
}
override fun onResume() {
super.onResume()
viewModel.loadUserInfo()
}
override fun initEvent() {
ll_go_info.setOnClickListener {
ARouter.getInstance().build(AroutUtil.MAIN_MY_HOME_PAGE)
.withString("from_id", viewModel.guildInfoBean.value!!.uid)
.navigation()
}
tv_copy.setOnClickListener {
if (viewModel.guildInfoBean.value!!.guild_special_id == "0") {
ClipboardUtils.copyText(viewModel.guildInfoBean.value!!.id)
"复制成功".showToast()
} else {
ClipboardUtils.copyText(viewModel.guildInfoBean.value!!.guild_special_id)
"复制成功".showToast()
}
}
//申请列表
tv_title2.setOnClickListener {
var intent = Intent(this, GHSQActivity::class.java)
startActivity(intent)
}
tv_gh_fj.setOnClickListener {
var intent = Intent(this, GHHomeActivity::class.java)
intent.putExtra("ghID", guild_id)
intent.putExtra("type", "room")
startActivity(intent)
}
tv_gh_ren.setOnClickListener {
var intent = Intent(this, GHHomeActivity::class.java)
intent.putExtra("ghID", guild_id)
intent.putExtra("type", "people")
startActivity(intent)
}
tv_gh_butie.setOnClickListener {
var intent = Intent(this, GHBuTieActivity::class.java)
intent.putExtra("last_week_income", viewModel.guildInfoBean.value!!.last_week_income)
intent.putExtra("this_week_income", viewModel.guildInfoBean.value!!.this_week_income)
intent.putExtra(
"last_week_income_money",
viewModel.guildInfoBean.value!!.last_week_income_money
)
startActivity(intent)
}
add.setOnClickListener {
flADD.visibility = View.VISIBLE
}
no1.setOnClickListener {
flADD.visibility = View.GONE
}
sure1.setOnClickListener {
viewModel.join_guild(guild_id)
flADD.visibility = View.GONE
}
out.setOnClickListener {
val dialog =
CustomDialog.build(
this,
R.layout.dialog_gh_exit
) { dialog, v ->
var cancel = v?.findViewById<TextView>(R.id.tv_cancel)
var confirm = v?.findViewById<TextView>(R.id.tv_confirm)
var tv_content = v?.findViewById<TextView>(R.id.tv_content)
tv_content?.text =
"退出公会需要支付${money}金币退出公会20天不能加入别的公会您确定要退出吗"
cancel?.setOnClickListener {
dialog?.doDismiss()
}
confirm?.setOnClickListener {
viewModel.quit_guild(intent.getStringExtra("ghID").toString())
finish()
dialog?.doDismiss()
}
}
val layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
dialog?.customLayoutParams = layoutParams
dialog?.align = BaseDialog.ALIGN.DEFAULT
dialog?.show()
}
jiesan.setOnClickListener {
val dialog =
CustomDialog.build(
this,
R.layout.dialog_gh_exit
) { dialog, v ->
var cancel = v?.findViewById<TextView>(R.id.tv_cancel)
var confirm = v?.findViewById<TextView>(R.id.tv_confirm)
var tv_content = v?.findViewById<TextView>(R.id.tv_content)
tv_content?.text = "确定解散此公会吗?"
cancel?.setOnClickListener {
dialog?.doDismiss()
}
confirm?.setOnClickListener {
viewModel.diss_guild(guild_id)
finish()
dialog?.doDismiss()
}
}
val layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
dialog?.customLayoutParams = layoutParams
dialog?.align = BaseDialog.ALIGN.DEFAULT
dialog?.show()
}
}
}

View File

@@ -0,0 +1,202 @@
package com.yuyin.mier.module_my.gh.home
import android.content.Intent
import android.view.View
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import com.blankj.utilcode.util.LogUtils
import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener
import com.kongzue.dialog.util.BaseDialog
import com.kongzue.dialog.v3.CustomDialog
import com.yuyin.mier.R
import com.yuyin.mier.databinding.ActivityGhHomeBinding
import com.yuyin.mier.module_my.gh.home.sub1.GHHomeFragment
import com.yuyin.mier.module_my.gh.home.sub1.GHHomeFragment2
import com.yuyin.mier.module_my.gh.shenqing.GHSQActivity
import com.yuyin.lib_base.App
import com.yuyin.lib_base.Const
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.base.BaseDataBindingActivity
import kotlinx.android.synthetic.main.activity_gh_home.*
class GHHomeActivity : BaseDataBindingActivity<GHHomeViewModel, ActivityGhHomeBinding>() {
private val fsRes: ArrayList<Fragment> = ArrayList<Fragment>() //fragment集合
private val titleRes = ArrayList<String>() //tab标题集合
private val dataTab: MutableList<CustomTabEntity> =
ArrayList<CustomTabEntity>() //CommonTabLayout 所需数据集合
// lateinit var baseIndicatorAdapter: BaseIndicatorAdapter
var money = "0"
override fun startObserve() {
viewModel.ghSet.observe(this) {
// tvTitle.text = it.guild_name
money=it.quit_money
LogUtils.e("is_deacon"+it.is_deacon)
if (it.is_deacon == "1") {
// tvSQ.visibility = View.VISIBLE
Const.GH_REMOVE = true
//// out.visibility = View.GONE
} else {
// tvSQ.visibility = View.GONE
Const.GH_REMOVE = false
}
//is_join_guild 1 加入 2 未加入
// if (it.is_join_guild == "1") {
// add.visibility = View.GONE
// out.visibility = View.VISIBLE
// } else {
// add.visibility = View.VISIBLE
// out.visibility = View.GONE
// }
}
viewModel.ghListBean2.observe(this) {
if (it.size > 0 && tvSQ.visibility==View.VISIBLE) {
mDataBinding.tvNum.visibility = View.VISIBLE
mDataBinding.tvNum.text = it.size.toString()
} else {
mDataBinding.tvNum.visibility = View.GONE
}
}
}
override fun getLayoutId(): Int = R.layout.activity_gh_home
var ghID = ""
override fun initView() {
ghID = intent.getStringExtra("ghID").toString()
// var ghName = intent.getStringExtra("ghName").toString()
//
// if (ghID == App.guild_id) {
// add.visibility = View.GONE
// out.visibility = View.VISIBLE
// } else {
// add.visibility = View.VISIBLE
// out.visibility = View.GONE
// }
titleRes.add("公会成员")
titleRes.add("公会房间")
fsRes.add(GHHomeFragment2.getInstance(ghID))
fsRes.add(GHHomeFragment.getInstance(ghID))
//设置数据
view_pager.adapter = MyPagerAdapter(
supportFragmentManager, fsRes, titleRes
)
mDataBinding.tabLayout.setViewPager(mDataBinding.viewPager)
// mDataBinding.rvContainer.layoutManager = GridLayoutManager(this, 2)
// baseIndicatorAdapter = BaseIndicatorAdapter()
// mDataBinding.rvContainer.adapter = baseIndicatorAdapter
// baseIndicatorAdapter.setNewData(titleRes)
// baseIndicatorAdapter.setOnItemClickListener { adapter, view, position ->
// baseIndicatorAdapter.setSelectPosition(position)
// view_pager.currentItem = position
// }
initListener()
// viewModel.get_apply_guild_list(getMap())
viewModel.user_is_deacon(intent.getStringExtra("ghID").toString())
if(intent.getStringExtra("type").toString()=="room"){
view_pager.currentItem=1
tvTitle.text ="公会房间"
}else{
view_pager.currentItem=0
tvTitle.text ="公会人员"
}
}
override fun initData() {
}
override fun initEvent() {
tvSQ.setOnClickListener {
var intent = Intent(this, GHSQActivity::class.java)
startActivity(intent)
}
add.setOnClickListener {
flADD.visibility = View.VISIBLE
}
out.setOnClickListener {
val dialog =
CustomDialog.build(
this,
R.layout.dialog_gh_exit
) { dialog, v ->
var cancel = v?.findViewById<TextView>(R.id.tv_cancel)
var confirm = v?.findViewById<TextView>(R.id.tv_confirm)
var tv_content = v?.findViewById<TextView>(R.id.tv_content)
tv_content?.text = "退出公会需要支付${money}金币退出公会20天不能加入别的公会您确定要退出吗"
cancel?.setOnClickListener {
dialog?.doDismiss()
}
confirm?.setOnClickListener {
viewModel.quit_guild(intent.getStringExtra("ghID").toString())
finish()
dialog?.doDismiss()
}
}
val layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
dialog?.customLayoutParams = layoutParams
dialog?.align = BaseDialog.ALIGN.DEFAULT
dialog?.show()
}
flADD.setOnClickListener {
flADD.visibility = View.GONE
}
sure1.setOnClickListener {
viewModel.join_guild(intent.getStringExtra("ghID").toString())
flADD.visibility = View.GONE
}
}
/**quit_guild
* 初始化监听
*/
private fun initListener() {
//TabLayout监听
tab_layout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
//显示相应的item界面
view_pager.currentItem = position
if(position==0){
tab_layout.setBackgroundResource(R.mipmap.gh_tab1)
}else{
tab_layout.setBackgroundResource(R.mipmap.gh_tab2)
}
}
override fun onTabReselect(position: Int) {}
})
//ViewPager监听
view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(i: Int, v: Float, i1: Int) {}
override fun onPageSelected(i: Int) {
//设置相应选中图标和颜色
tab_layout.currentTab = i
// baseIndicatorAdapter.setSelectPosition(i)
}
override fun onPageScrollStateChanged(i: Int) {}
})
//设置默认第0个
view_pager.currentItem = 0
}
fun getMap(): HashMap<String, String> {
var map = HashMap<String, String>()
map["page"] = 1.toString()
map["guild_id"] = App.guild_id
return map
}
}

View File

@@ -0,0 +1,67 @@
package com.yuyin.mier.module_my.gh.home
import androidx.lifecycle.MutableLiveData
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.lib_base.util.showToast
import com.yuyin.mier.module_home.model.GHDeatileBean
import com.yuyin.mier.module_home.model.GHSet
import com.yuyin.mier.module_home.model.GHUserListBean
import com.yuyin.mier.repository.CommonRepository
class GHHomeViewModel : BaseViewModel() {
var repository = CommonRepository()
var ghListBean = MutableLiveData<Any>()
var ghSet = MutableLiveData<GHSet>()
fun join_guild(guild_id: String) {
launchUI {
var result = repository.join_guild(guild_id)
ghListBean.value = result.data
if (result.code==200){
result.msg.showToast()
}
}
}
fun user_is_deacon(guild_id: String) {
launchUI {
var result = repository.user_is_deacon(guild_id)
ghSet.value = result.data
}
}
fun quit_guild(guild_id: String) {
launchUI {
var result = repository.quit_guild(guild_id)
ghListBean.value = result.data
if (result.code==200){
result.msg.showToast()
}
}
}
var ghListBean2 = MutableLiveData<ArrayList<GHUserListBean>>()
fun get_apply_guild_list(map: MutableMap<String, String>) {
launchUI {
var result = repository.get_apply_guild_list(map)
ghListBean2.value = result.data.list
}
}
var guildInfoBean = MutableLiveData<GHDeatileBean>()
fun get_the_guild_info(guild_id: String) {
launchUI {
var result = repository.get_the_guild_info(guild_id)
guildInfoBean.value=result.data
}
}
fun diss_guild(guild_id: String) {
launchUI {
var result = repository.diss_guild(guild_id)
if (result.code==200){
result.msg.showToast()
}
}
}
}

View File

@@ -0,0 +1,89 @@
package com.yuyin.mier.module_my.gh.home.sub1
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.viewpager.widget.ViewPager
import com.yuyin.lib_base.adapter.MyPagerAdapter
import com.yuyin.lib_base.base.BaseDataBindingFragment
import com.yuyin.lib_base.base.BaseViewModel
import com.yuyin.mier.R
import com.yuyin.mier.adapter.BaseIndicatorAdapter
import com.yuyin.mier.databinding.FragmentGhHomeSubBinding
import com.yuyin.mier.module_my.gh.home.sub2.GHRoomSubFragment
import kotlinx.android.synthetic.main.activity_gh_home.*
import java.util.*
class GHHomeFragment : BaseDataBindingFragment<BaseViewModel, FragmentGhHomeSubBinding>() {
private val fsRes: ArrayList<Fragment> = ArrayList<Fragment>() //fragment集合
private val titleRes = ArrayList<String>() //tab标题集合
lateinit var baseIndicatorAdapter: BaseIndicatorAdapter
companion object {
fun getInstance(type: String): GHHomeFragment {
val fragment = GHHomeFragment()
val bundle = Bundle()
bundle.putString("ghID", type)
fragment.arguments = bundle
return fragment
}
}
override fun startObserve() {
}
override fun getLayoutId(): Int = R.layout.fragment_gh_home_sub
override fun initView() {
val ghID = arguments?.getString("ghID").toString()
titleRes.add("昨日")
titleRes.add("今日")
titleRes.add("本周")
titleRes.add("上周")
titleRes.add("月榜")
fsRes.add(GHRoomSubFragment.getInstance("1", ghID))
fsRes.add(GHRoomSubFragment.getInstance("2", ghID))
fsRes.add(GHRoomSubFragment.getInstance("3", ghID))
fsRes.add(GHRoomSubFragment.getInstance("4", ghID))
fsRes.add(GHRoomSubFragment.getInstance("5", ghID))
mAdapter = MyPagerAdapter(childFragmentManager, fsRes, titleRes)
mDataBinding.viewpager.adapter = mAdapter
// mDataBinding.tabLayout.setViewPager(mDataBinding.viewpager)
mDataBinding.viewpager.offscreenPageLimit = fsRes.size
mDataBinding.rvContainer.layoutManager = GridLayoutManager(requireContext(), 5)
baseIndicatorAdapter = BaseIndicatorAdapter()
mDataBinding.rvContainer.adapter = baseIndicatorAdapter
baseIndicatorAdapter.setNewData(titleRes)
baseIndicatorAdapter.setOnItemClickListener { adapter, view, position ->
baseIndicatorAdapter.setSelectPosition(position)
mDataBinding.viewpager.currentItem = position
}
mDataBinding.viewpager.addOnPageChangeListener(object :ViewPager.OnPageChangeListener{
override fun onPageScrolled(
position: Int, positionOffset: Float, positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
baseIndicatorAdapter.setSelectPosition(position)
}
override fun onPageScrollStateChanged(state: Int) {
}
})
}
override fun initData() {
}
override fun initEvent() {
}
private lateinit var mAdapter: MyPagerAdapter
}

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