From b13afc751dbbce24753d008f1f87d2c5e133a4ad Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期二, 09 七月 2024 15:19:26 +0800 Subject: [PATCH] fix bug --- app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt | 13 app/src/main/java/com/dollearn/student/MainActivity.kt | 57 + app/src/main/res/mipmap-xxhdpi/share_wx.png | 0 xldutils-kotlin/src/main/AndroidManifest.xml | 2 app/src/main/java/com/dollearn/student/utils/Const.kt | 30 app/src/main/java/com/dollearn/student/network/entity/Goods.kt | 2 app/src/main/res/xml/scene_fragment_look.xml | 2 app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt | 11 app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt | 4 .idea/gradle.xml | 3 app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt | 3 app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt | 10 app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt | 7 app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt | 31 app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt | 17 app/src/main/res/xml/fragment_listen_scene_result_2.xml | 2 app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt | 9 app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt | 145 + app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt | 3 app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java | 6 app/src/main/res/xml/scene_fragment_match.xml | 2 app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt | 5 app/src/main/java/com/dollearn/student/network/entity/Banner.kt | 8 app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt | 28 app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt | 33 app/src/main/res/layout/activity_login.xml | 1 app/src/main/res/drawable/selector_enable_choose.xml | 5 app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt | 26 app/src/main/res/values/colors.xml | 1 app/src/main/res/xml/fragment_listen_scene_result_4.xml | 2 app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt | 45 app/src/main/res/xml/item_game_1_scene.xml | 2 app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt | 1 app/src/main/java/com/dollearn/student/ui/SplashActivity.kt | 6 app/src/main/res/layout/dialog_rule.xml | 2 app/src/main/res/xml/scene_fragment_listen_voice.xml | 2 app/src/main/java/com/dollearn/student/network/HttpManager.kt | 351 +----- app/src/main/java/com/dollearn/student/network/Functions.kt | 6 app/src/main/res/mipmap-xxhdpi/share_moment.png | 0 app/src/main/res/xml/fragment_listen_scene_result_6.xml | 65 + app/src/main/java/com/dollearn/student/network/ApiService.kt | 351 ------ app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt | 14 app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt | 39 app/src/main/res/layout/fragment_include.xml | 54 + app/src/main/res/mipmap-xxhdpi/ic_launcher.png | 0 app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt | 7 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt | 5 app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt | 3 app/src/main/res/layout/item_week.xml | 2 app/src/main/res/layout/activity_exchange_record.xml | 18 app/src/main/java/com/dollearn/student/network/Apis.kt | 68 - app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt | 115 ++ app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt | 4 app/src/main/res/xml/scene_fragment_choose_voice.xml | 2 app/build.gradle | 6 app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt | 8 app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt | 1 app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt | 4 app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt | 6 app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt | 6 app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt | 30 app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt | 8 app/src/main/res/xml/fragment_listen_scene_result_1.xml | 2 app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt | 102 + app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt | 6 app/src/main/res/drawable/bg_blue_line_grey_8dp.xml | 6 app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt | 48 app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt | 9 app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt | 13 app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt | 122 ++ app/src/main/java/com/dollearn/student/DollearnApplication.kt | 9 xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt | 2 app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt | 67 + app/src/main/java/com/dollearn/student/ui/H5Activity.kt | 5 app/src/main/java/com/dollearn/student/dialog/TipDialog.kt | 1 xldutils-kotlin/src/main/res/layout/activity_base_title.xml | 3 app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt | 9 app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt | 10 app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt | 2 app/src/main/res/layout/dialog_share.xml | 65 + app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt | 3 app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt | 52 app/src/main/res/xml/fragment_listen_scene_result_3.xml | 2 app/src/main/res/layout/fragment_q_a.xml | 59 app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt | 7 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt | 4 app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt | 7 app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt | 7 app/src/main/AndroidManifest.xml | 112 +- app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt | 12 app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt | 24 app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt | 3 app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt | 57 + app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt | 213 ++- /dev/null | 32 app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt | 132 ++ app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt | 6 app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt | 111 + app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt | 10 app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt | 7 app/src/main/res/xml/fragment_listen_scene_result_5.xml | 65 + xldutils-kotlin/src/main/res/layout/activity_image_pager.xml | 4 102 files changed, 1,797 insertions(+), 1,312 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ccfa5ee..b14f736 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,9 +5,7 @@ <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> <option name="testRunner" value="PLATFORM" /> - <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleJvm" value="Embedded JDK" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> @@ -18,6 +16,7 @@ <option value="$PROJECT_DIR$/zxinglibrary" /> </set> </option> + <option name="resolveExternalAnnotations" value="false" /> <option name="resolveModulePerSourceSet" value="false" /> <option name="useQualifiedModuleNames" value="true" /> </GradleProjectSettings> diff --git a/app/build.gradle b/app/build.gradle index 91e3030..da03d56 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ applicationId "com.dollearn.student" minSdkVersion 21 targetSdkVersion 30 - versionCode 8 - versionName "1.18" + versionCode 1 + versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -47,7 +47,7 @@ applicationVariants.all { variant -> // 更新至Android Studio 3.3 gradle 4.10.1 variant.outputs.all { - outputFileName = "wepark-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk" + outputFileName = "dollearn-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk" } } // ndk { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 563c930..7adcfcb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,7 @@ </queries> <application - android:name=".WeparkApplication" + android:name=".DollearnApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" @@ -44,7 +44,8 @@ android:theme="@style/AppTheme"> <activity android:name=".MainActivity" - android:launchMode="singleTask" /> + android:launchMode="singleTask" + android:screenOrientation="landscape" /> <activity android:name=".ui.SplashActivity" android:screenOrientation="landscape"> <intent-filter> @@ -63,7 +64,8 @@ android:exported="true" /> <activity android:name=".ui.H5Activity" - android:launchMode="singleTask" /> + android:launchMode="singleTask" + android:screenOrientation="landscape" /> <activity android:name=".ui.login.LoginActivity" android:label="登录" @@ -85,16 +87,15 @@ <activity android:name=".ui.home.JoinVipActivity" android:label="成为会员" /> - <activity android:name=".ui.home.PayResultActivity" /> - <activity - android:name=".ui.course.JoinCourseActivity" - android:label="运动营详情" /> + <activity android:name=".ui.home.PayResultActivity" + android:screenOrientation="landscape" /> <activity android:name=".ui.home.AddStudentActivity" android:label="添加运动营成员" android:windowSoftInputMode="adjustPan" /> <activity android:name=".ui.home.MatchActivity" - android:label="自主学习5-音图相配" /> + android:label="自主学习5-音图相配" + android:screenOrientation="landscape" /> <activity android:name=".ui.home.MatchDetailActivity" android:label="活动详情" /> @@ -140,9 +141,6 @@ android:label="课时详情" android:launchMode="singleTask" /> <activity - android:name=".ui.discovery.ShopListActivity" - android:label="门店列表" /> - <activity android:name=".ui.discovery.ShopDetailActivity" android:label="门店详情" /> <activity @@ -173,9 +171,6 @@ android:name=".ui.course.ReportActivity" android:label="测试报告" /> <activity - android:name=".ui.course.ReserveRecordActivity" - android:label="预约运动营" /> - <activity android:name=".ui.welfare.UserInfoActivity" android:label="个人信息" /> <activity @@ -185,12 +180,6 @@ <activity android:name=".ui.welfare.CoinRecordActivity" android:label="账单" /> - <activity - android:name=".ui.welfare.CouponActivity" - android:label="我的券包" /> - <activity - android:name=".ui.welfare.ScoreShopActivity" - android:label="积分商城" /> <activity android:name=".ui.welfare.GoodsDetailActivity" android:label="商品详情" /> @@ -213,49 +202,68 @@ <activity android:name=".ui.course.ExperienceCourseActivity" android:label="体验购课" /> - <activity android:name=".ui.course.SmartStadiumActivity" android:label="扫码启动智慧足球墙"/> <activity android:name=".ui.game.GameActivity" android:label="智慧球场" android:configChanges="orientation|screenSize|keyboardHidden" android:screenOrientation="portrait" /> - <activity android:name=".ui.welfare.OnlineShopActivity" /> - <activity android:name=".ui.game.MyDataActivity" android:label="我的数据"/> - <activity android:name=".ui.course.UnPayCourseDetailActivity" android:label="运动营详情"/> - <activity android:name=".ui.home.PlatformActivity" /> - <activity android:name=".ui.worldcup.WorldCupListActivity" android:label="社区世界杯"/> - <activity android:name=".ui.worldcup.WorldCupDetailActivity" android:label="社区世界杯"/> - <activity android:name=".ui.worldcup.JoinWCActivity" android:label="社区世界杯"/> - <activity android:name=".ui.worldcup.MyWorldActivity" android:label="我的报名"/> - <activity android:name=".ui.discovery.MyQrCodeActivity" android:label="我的二维码"/> - <activity android:name=".ui.worldcup.MyWorldInfoActivity" android:label="社区世界杯"/> - <activity android:name=".ui.discovery.StudentManageActivity" android:label="人员管理"/> - <activity android:name=".ui.worldcup.RefereeWorldListActivity" android:label="社区世界杯"/> - <activity android:name=".ui.worldcup.StartWorldActivity" /> - <activity android:name=".ui.home.WeekSelectActivity" android:label="第一年学习周目选择"> + <activity android:name=".ui.welfare.OnlineShopActivity" + android:screenOrientation="landscape"/> + <activity android:name=".ui.game.MyDataActivity" android:label="我的数据" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.PlatformActivity" + android:screenOrientation="landscape"/> + <activity android:name=".ui.worldcup.WorldCupListActivity" android:label="社区世界杯" + android:screenOrientation="landscape"/> + <activity android:name=".ui.worldcup.WorldCupDetailActivity" android:label="社区世界杯" + android:screenOrientation="landscape"/> + <activity android:name=".ui.worldcup.JoinWCActivity" android:label="社区世界杯" + android:screenOrientation="landscape"/> + <activity android:name=".ui.worldcup.RefereeWorldListActivity" android:label="社区世界杯" + android:screenOrientation="landscape"/> + <activity android:name=".ui.worldcup.StartWorldActivity" + android:screenOrientation="landscape" /> + <activity android:name=".ui.home.WeekSelectActivity" android:label="第一年学习周目选择" + android:screenOrientation="landscape"> <!-- <intent-filter>--> <!-- <action android:name="android.intent.action.MAIN" />--> <!-- <category android:name="android.intent.category.LAUNCHER" />--> <!-- </intent-filter>--> </activity> - <activity android:name=".ui.home.ScheduleActivity" /> - <activity android:name=".ui.shop.ExchangeActivity" android:label="立即兑换"/> - <activity android:name=".ui.mine.LearnRecordActivity" android:label="学习记录"/> - <activity android:name=".ui.mine.ChangeAddressActivity" android:label="修改地址"/> - <activity android:name=".ui.shop.AddAddressActivity" android:label="添加地址"/> - <activity android:name=".ui.mine.AddressManageActivity" android:label="地址管理"/> - <activity android:name=".ui.mine.ScoreRecordActivity" android:label="积分明细"/> - <activity android:name=".ui.home.ListenActivity" android:label="自主学习1-听音选图" android:launchMode="singleTask"/> - <activity android:name=".ui.home.ChooseVoiceActivity" android:label="自主学习2-看图选音" android:launchMode="singleTask"/> - <activity android:name=".ui.home.IncludeActivity" android:label="自主学习3-归纳排除" android:launchMode="singleTask"/> - <activity android:name=".ui.home.QAActivity" android:label="自主学习4-有问有答" android:launchMode="singleTask"/> - <activity android:name=".ui.home.ResultActivity" /> - <activity android:name=".ui.home.LookImgActivity" android:label="自主学故事1-看图配音" android:launchMode="singleTask"/> - <activity android:name=".ui.home.RememberFinishActivity" android:label="自主故事2—框架记忆"/> - <activity android:name=".ui.home.ListenStoryActivity" android:label="自主故事2—框架记忆" /> - <activity android:name=".ui.home.MemoryActivity" android:label="自主游戏1—超级记忆" /> - <activity android:name=".ui.home.SuperListenActivity" android:label="自主游戏1—超级听力" /> + <activity android:name=".ui.home.ScheduleActivity" + android:screenOrientation="landscape"/> + <activity android:name=".ui.shop.ExchangeActivity" android:label="立即兑换" + android:screenOrientation="landscape"/> + <activity android:name=".ui.mine.LearnRecordActivity" android:label="学习记录" + android:screenOrientation="landscape"/> + <activity android:name=".ui.mine.ChangeAddressActivity" android:label="修改地址" + android:screenOrientation="landscape"/> + <activity android:name=".ui.shop.AddAddressActivity" android:label="添加地址" + android:screenOrientation="landscape"/> + <activity android:name=".ui.mine.AddressManageActivity" android:label="地址管理" + android:screenOrientation="landscape"/> + <activity android:name=".ui.mine.ScoreRecordActivity" android:label="积分明细" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.ListenActivity" android:label="自主学习1-听音选图" android:launchMode="singleTask" android:screenOrientation="landscape"/> + <activity android:name=".ui.home.ChooseVoiceActivity" android:label="自主学习2-看图选音" android:launchMode="singleTask" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.IncludeActivity" android:label="自主学习3-归纳排除" android:launchMode="singleTask" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.QAActivity" android:label="自主学习4-有问有答" android:launchMode="singleTask" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.ResultActivity" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.LookImgActivity" android:label="自主学故事1-看图配音" android:launchMode="singleTask" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.RememberFinishActivity" android:label="自主故事2—框架记忆" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.ListenStoryActivity" android:label="自主故事2—框架记忆" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.MemoryActivity" android:label="自主游戏1—超级记忆" + android:screenOrientation="landscape"/> + <activity android:name=".ui.home.SuperListenActivity" android:label="自主游戏1—超级听力" + android:screenOrientation="landscape"/> <meta-data android:name="com.amap.api.v2.apikey" diff --git a/app/src/main/java/com/dollearn/student/WeparkApplication.kt b/app/src/main/java/com/dollearn/student/DollearnApplication.kt similarity index 94% rename from app/src/main/java/com/dollearn/student/WeparkApplication.kt rename to app/src/main/java/com/dollearn/student/DollearnApplication.kt index b2ab797..f5203fd 100644 --- a/app/src/main/java/com/dollearn/student/WeparkApplication.kt +++ b/app/src/main/java/com/dollearn/student/DollearnApplication.kt @@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit -class WeparkApplication :BaseApplication(), Application.ActivityLifecycleCallbacks { +class DollearnApplication :BaseApplication(), Application.ActivityLifecycleCallbacks { override fun getSPName() = "GWXSp" private var heartSubscribe: Disposable? = null @@ -113,14 +113,13 @@ var provinceCode = "" //当前省 var cityName = "" //当前市 var cityCode = "" //当前市 - var store = "" //门店名称 var storeId = "" //门店id var avatar = "" //本人头像 - var appContext: WeparkApplication? = null - fun getInstance(): WeparkApplication? { + var appContext: DollearnApplication? = null + fun getInstance(): DollearnApplication? { if (appContext == null) { - appContext = WeparkApplication() + appContext = DollearnApplication() } return appContext } diff --git a/app/src/main/java/com/dollearn/student/MainActivity.kt b/app/src/main/java/com/dollearn/student/MainActivity.kt index 2f671f4..df759cc 100644 --- a/app/src/main/java/com/dollearn/student/MainActivity.kt +++ b/app/src/main/java/com/dollearn/student/MainActivity.kt @@ -1,14 +1,17 @@ package com.dollearn.student import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.util.Log import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentPagerAdapter import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.showAllowingStateLoss +import cn.sinata.xldutils.utils.SPUtils import com.flyco.tablayout.listener.CustomTabEntity import com.flyco.tablayout.listener.OnTabSelectListener import com.github.zackratos.ultimatebar.UltimateBar -import com.dollearn.student.dialog.CompetitionTipDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.UserBean import com.dollearn.student.network.request @@ -29,6 +32,7 @@ private val fragments = arrayListOf<Fragment>() var homeData: UserBean? = null //个人信息 var score = 0 + private var handler: Handler? = null override fun initClick() { } @@ -42,6 +46,50 @@ initTab() EventBus.getDefault().register(this) getData() + getVoiceUrl() + getScoreConfig() + } + + private fun getScoreConfig() { + HttpManager.onlineDuration().request(this,false,{_,data-> + SPUtils.instance().put(Const.SCORE_DURATION,(data?:"0").toInt()).apply() + startTimer() + }){_,_-> + startTimer() + } + } + + private fun startTimer() { + val duration = SPUtils.instance().getInt(Const.SCORE_DURATION,30)//单位分钟 + var mins = 0 + handler = object :Handler(Looper.myLooper()!!){ + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + if (msg.what == 0){ + mins++ + Log.e("mmp","当前已在线${mins}分钟") + if (mins > duration){ + HttpManager.giveIntegral().request(this@MainActivity,false,{_,_-> + mins = 0 + handler?.sendEmptyMessageDelayed(0,1000*60) + }){_,_-> + handler?.sendEmptyMessageDelayed(0,1000*60) + } + }else + handler?.sendEmptyMessageDelayed(0,1000*60) + } + } + } + handler?.sendEmptyMessageDelayed(0,1000*60) + } + + private fun getVoiceUrl() { + HttpManager.promptVoice().request(this,false){_,data-> + if (!data?.correct.isNullOrEmpty()) + SPUtils.instance().put(Const.RV,data?.correct?:"").apply() + if (!data?.error.isNullOrEmpty()) + SPUtils.instance().put(Const.EV,data?.error?:"").apply() + } } private fun initTab() { @@ -97,7 +145,7 @@ @Subscribe fun onSwitch(e:EmptyEvent){ - if (e.code == Const.EventCode.SWITCH_HOME){ + if (e.code == Const.EventCode.CLICK_GAME_ITEM){ switchHome() }else if(e.code == Const.EventCode.CHANGE_WELFARE){ tab_bar.currentTab = 2 @@ -145,6 +193,7 @@ override fun onDestroy() { super.onDestroy() EventBus.getDefault().unregister(this) - WeparkApplication.storeId = "" + handler?.removeCallbacksAndMessages(null) + handler = null } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt deleted file mode 100644 index 470f386..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.utils.getQRcodeImg -import kotlinx.android.synthetic.main.dialog_check_qrcode.* -import kotlinx.android.synthetic.main.dialog_check_shops.* -import kotlinx.android.synthetic.main.dialog_check_shops.iv_close -import kotlinx.android.synthetic.main.dialog_choose_coupon.* -import kotlinx.android.synthetic.main.my_reservatiion_layout.* - -class CheckQrCodeDialog:BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_check_qrcode - - override fun setGravity() = Gravity.CENTER - - - private val qrinfo by lazy { arguments?.getString("qrinfo") } - private val title by lazy { arguments?.getString("title") } - - override fun initView() { - if (!title.isNullOrEmpty()){ - tv_title.visible() - tv_title.text = title - } - ivqr.setImageBitmap(getQRcodeImg(context, qrinfo)) - iv_close.setOnClickListener { dismissAllowingStateLoss() } - } - - override fun onStart() { - super.onStart() - val window = dialog?.window - val attributes = window?.attributes - attributes?.dimAmount = 0.9f - window?.attributes = attributes - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt deleted file mode 100644 index f46f837..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.utils.myToast -import com.dollearn.student.R -import com.dollearn.student.network.entity.Coupon -import com.dollearn.student.ui.home.adapter.CouponAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_choose_coupon.* - -class ChooseCouponDialog:BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_choose_coupon - - override fun setGravity() = Gravity.BOTTOM - - private val list = arrayListOf<Coupon>() - private val adapter = CouponAdapter(list) - - private val checked by lazy { arguments?.getLong("checked") } - var callback:StringCallback? = null - - override fun initView() { - list.addAll(arguments?.getParcelableArrayList("list")?: arrayListOf()) - adapter.checked = checked?: 0L - rv_coupon.layoutManager = LinearLayoutManager(requireContext()) - rv_coupon.adapter = adapter - adapter.setOnItemClickListener { view, position -> - adapter.checked = list[position].id - adapter.notifyDataSetChanged() - } - tv_action.setOnClickListener { - if (adapter.checked==0L) - myToast("请选择优惠券") - else{ - callback?.onResult(adapter.checked.toString()) - dismissAllowingStateLoss() - } - } - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt deleted file mode 100644 index c64a987..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt +++ /dev/null @@ -1,184 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.WeparkApplication -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.CommonData -import com.dollearn.student.network.request -import com.dollearn.student.ui.home.adapter.StringAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_shop_choose.* -import org.greenrobot.eventbus.EventBus - -class ChooseShopDialog : BaseDialogFragment() { - var stringCallback: StringCallback? = null - override fun setContentView() = R.layout.dialog_shop_choose - - private var provinceCode = "" - private var cityCode = "" - private var shopId = "" - private var shopName = "" - private val cities = arrayListOf<CommonData>() - private val cityStrings = arrayListOf<String>() - private val cityAdapter = StringAdapter(cityStrings) - - private val shops = arrayListOf<CommonData>() - private val shopStrings = arrayListOf<String>() - private val shopAdapter = StringAdapter(shopStrings) - - private fun getscoreshopUse(): Boolean { - if (arguments == null) return false - else - return arguments?.getBoolean("scoreshopUse", false) as Boolean - - - } - - - override fun setGravity() = Gravity.CENTER - - override fun initView() { - tv_province.text = WeparkApplication.province - provinceCode = WeparkApplication.provinceCode - tv_city.text = WeparkApplication.cityName - cityCode = WeparkApplication.cityCode - - if (!getscoreshopUse()) { - shopId = WeparkApplication.storeId - tv_shop.text = WeparkApplication.store - } - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - tv_action.clickDelay { - if (shopId.isEmpty() && !getscoreshopUse()) - myToast("请选择门店") - else { - if (getscoreshopUse()) { - - stringCallback?.onResult( - if (shopId.isEmpty() && shopName.isEmpty()) - "" else "$shopId-*-*$shopName" - ) - } else { - WeparkApplication.province = tv_province.text.toString() - WeparkApplication.provinceCode = provinceCode - WeparkApplication.cityName = tv_city.text.toString() - WeparkApplication.cityCode = cityCode - WeparkApplication.store = tv_shop.text.toString() - WeparkApplication.storeId = shopId - EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_SHOP)) - } - - dismissAllowingStateLoss() - } - } - getProvince() - tv_province.clickDelay { - bg.callOnClick() - rv_province.visible() - } - tv_city.clickDelay { - bg.callOnClick() - getCity() - } - tv_shop.clickDelay { - bg.callOnClick() - getShop() - } - bg.clickDelay { - rv_province.gone() - rv_city.gone() - rv_shop.gone() - } - rv_city.layoutManager = LinearLayoutManager(requireContext()) - rv_city.adapter = cityAdapter - cityAdapter.setOnItemClickListener { view, position -> - cityCode = cities[position].code - tv_city.text = cities[position].name - tv_shop.text = "" - shopId = "" - rv_city.gone() - } - rv_shop.layoutManager = LinearLayoutManager(requireContext()) - rv_shop.adapter = shopAdapter - shopAdapter.setOnItemClickListener { view, position -> - if (getscoreshopUse() && position == 0) { - shopId = "" - tv_shop.text = "全部门店" - shopName = "" - } else { - shopId = shops[position].id.toString() - tv_shop.text = shops[position].name - shopName = shops[position].name - } - - rv_shop.gone() - } - } - - private fun getProvince() { - HttpManager.queryProvinceAndCity(null) - .request(requireActivity() as BaseActivity) { _, data -> - if (!isAdded) - return@request - rv_province.layoutManager = LinearLayoutManager(requireContext()) - val list = arrayListOf<String>() - list.addAll((data ?: arrayListOf()).map { it.name }) - val stringAdapter = StringAdapter(list) - rv_province.adapter = stringAdapter - stringAdapter.setOnItemClickListener { view, position -> - provinceCode = data!![position].code - tv_province.text = data[position].name - tv_city.text = "" - cityCode = "" - tv_shop.text = "" - shopId = "" - rv_province.gone() - } - } - } - - private fun getCity() { - if (provinceCode.isEmpty()) { - myToast("请选择省") - return - } - HttpManager.queryProvinceAndCity(provinceCode) - .request(requireActivity() as BaseActivity) { _, data -> - cities.clear() - cityStrings.clear() - cities.addAll(data ?: arrayListOf()) - cityStrings.addAll((cities.map { it.name })) - cityAdapter.notifyDataSetChanged() - rv_city.visible() - } - } - - private fun getShop() { - if (cityCode.isEmpty()&&provinceCode.isEmpty()) { - myToast("请选择所在城市") - return - } - HttpManager.queryStoreByCityCode(cityCode,provinceCode) - .request(requireActivity() as BaseActivity) { _, data -> - shops.clear() - shopStrings.clear() - shops.addAll(data ?: arrayListOf()) - shopStrings.addAll((shops.map { it.name })) - if (getscoreshopUse()) { - shops.add(0, CommonData()) - shopStrings.add(0, "全部门店") - } - shopAdapter.notifyDataSetChanged() - rv_shop.visible() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt deleted file mode 100644 index 7237147..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import com.dollearn.student.R -import com.dollearn.student.ui.worldcup.MyWorldActivity -import kotlinx.android.synthetic.main.dialog_competition_tip.* -import org.jetbrains.anko.support.v4.startActivity -import org.jetbrains.anko.support.v4.toast - -class CompetitionTipDialog: BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_competition_tip - - override fun setGravity() = Gravity.CENTER - - override fun initView() { - tv_close.setOnClickListener { dismissAllowingStateLoss() } - tv_see.setOnClickListener { - startActivity<MyWorldActivity>("index" to 2) - dismissAllowingStateLoss() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt new file mode 100644 index 0000000..3c89557 --- /dev/null +++ b/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt @@ -0,0 +1,28 @@ +package com.dollearn.student.dialog + +import android.view.Gravity +import com.dollearn.student.R +import com.dollearn.student.utils.interfaces.StringCallback +import kotlinx.android.synthetic.main.dialog_share.* +class ShareDialog:BaseDialogFragment() { + override fun setContentView() = R.layout.dialog_share + + override fun setGravity() = Gravity.BOTTOM + + var callback:StringCallback? = null + + override fun initView() { + iv_close.setOnClickListener { dismissAllowingStateLoss() } + + wv_1.setOnClickListener { + callback?.onResult("wx") + dismissAllowingStateLoss() + } + + wv_2.setOnClickListener { + callback?.onResult("circle") + dismissAllowingStateLoss() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt b/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt index c6d25f6..c313ed2 100644 --- a/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt +++ b/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt @@ -53,7 +53,6 @@ tv_ok.gone() tv_alert.visible() tv_alert.text = ok - alert_line.visible() } tv_msg.text = msg diff --git a/app/src/main/java/com/dollearn/student/network/ApiService.kt b/app/src/main/java/com/dollearn/student/network/ApiService.kt index 1c688ac..a120182 100644 --- a/app/src/main/java/com/dollearn/student/network/ApiService.kt +++ b/app/src/main/java/com/dollearn/student/network/ApiService.kt @@ -2,22 +2,17 @@ import cn.sinata.xldutils.data.ResultData import com.google.gson.JsonObject -import com.dollearn.student.WeparkApplication -import com.dollearn.student.WeparkApplication.Companion.storeId +import com.dollearn.student.DollearnApplication.Companion.storeId import com.dollearn.student.network.entity.* import com.dollearn.student.utils.Const import com.dollearn.student.utils.pay.PayInfo import io.reactivex.Flowable -import okhttp3.ResponseBody import retrofit2.http.* interface ApiService { @FormUrlEncoded @POST(Apis.H5_URL) fun getH5(@Field("type") type: Int): Flowable<ResultData<String>> - - @POST(Apis.queryBasisSet) - fun queryBasisSet(): Flowable<ResultData<ArrayList<CommonData>>> @FormUrlEncoded @POST(Apis.queryProvinceAndCity) @@ -26,25 +21,6 @@ @FormUrlEncoded @POST(Apis.queryStoreByCityCode) fun queryStoreByCityCode(@Field("cityCode") code: String,@Field("provinceCode") provinceCode: String): Flowable<ResultData<ArrayList<CommonData>>> - - @FormUrlEncoded - @POST(Apis.queryVersionByType) - fun queryVersionByType( - @Field("type") type: Int = 1 - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.querySystemSetByType) - fun querySystemSetByType( - @Field("type") type: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.queryJoinPlayPai) - fun queryJoinPlayPai( - @Field("lat") lat: Double?, - @Field("lon") lon: Double? - ): Flowable<ResultData<HomeData>> @FormUrlEncoded @POST(Apis.addVipPayment) @@ -61,10 +37,6 @@ @Field("couponId") couponId: Long, @Field("orderId") orderId: String? ): Flowable<ResultData<PayInfo>> - - @FormUrlEncoded - @POST(Apis.payment) - fun paymentCourse2(@FieldMap map: HashMap<String, Any?>): Flowable<ResultData<PayInfo>> @FormUrlEncoded @POST(Apis.payment) @@ -88,28 +60,8 @@ ): Flowable<ResultData<PayInfo>> @FormUrlEncoded - @POST(Apis.queryStoreConfig) - fun queryStoreConfig(@Field("storeId") storeId: String): Flowable<ResultData<List<Banner>>> - - @FormUrlEncoded - @POST(Apis.queryIndexSet) - fun queryIndexSet(@Field("id") storeId: String): Flowable<ResultData<List<Banner>>> - - @FormUrlEncoded @POST(Apis.queryPhysical) fun queryPhysical(@Field("stuID") id: String): Flowable<ResultData<Report>> - - @FormUrlEncoded - @POST(Apis.cancelCourse) - fun cancelCourse(@Field("courseStuRecordId") courseStuRecordId: String): Flowable<ResultData<Any>> - - @FormUrlEncoded - @POST(Apis.reverse) - fun reverse( - @Field("time") time: String, - @Field("stuId") stuId: String, - @Field("courseID") courseID: String - ): Flowable<ResultData<Any>> @FormUrlEncoded @POST(Apis.stuAppointList) @@ -122,18 +74,11 @@ @Field("size") size: Int = Const.PAGE_SIZE ): Flowable<ResultData<List<ReserveRecord>>> - @FormUrlEncoded - @POST(Apis.goodsOfCourseStore) - fun goodsOfCourseStore( - @Field("isCourse") isCourse: Int, - @Field("pointsMerId") pointsMerId: String, - @Field("lat") lat: Double?, - @Field("lon") lon: Double? - ): Flowable<ResultData<DefaultData>> - - @GET(Apis.userDetails) fun userDetails(): Flowable<ResultData<UserBean>> + + @GET(Apis.shareInfo) + fun shareInfo(): Flowable<ResultData<ConfigBean>> @GET(Apis.studyRecord) fun studyRecord(): Flowable<ResultData<StudyRecord>> @@ -141,13 +86,6 @@ @FormUrlEncoded @POST(Apis.uploadImage) fun uploadImage(@Field("userImage") userImage: String): Flowable<ResultData<Any>> - - @FormUrlEncoded - @POST(Apis.queryCompetitionList) - fun queryCompetitionList( - @Field("cityCode") cityCode: String?, @Field("registerCondition") registerCondition: Int?, - @Field("heat") heat: String?, @Field("content") search: String? - ): Flowable<ResultData<List<Match>>> @FormUrlEncoded @POST(Apis.queryClassificationBenefitsVideosList) @@ -233,14 +171,6 @@ fun weeksOfAddHours(@Field("packetId") id: Long): Flowable<ResultData<Any>> @FormUrlEncoded - @POST(Apis.paymentCourseCouponList) - fun paymentCourseCouponList(@Field("coursePackagePaymentConfigId") id: Int?): Flowable<ResultData<List<Coupon>>> - - @FormUrlEncoded - @POST(Apis.queryCouponList) - fun queryCouponList(@Field("distributionMethod") id: Int = 2): Flowable<ResultData<List<Coupon>>> - - @FormUrlEncoded @POST(Apis.queryMySiteById) fun queryMySiteById(@Field("id") id: String): Flowable<ResultData<MySite>> @@ -265,46 +195,6 @@ @Field("courseTypeId") courseTypeId: Int?, @Field("search") search: String? ): Flowable<ResultData<List<JoinedCourse>>> - - @FormUrlEncoded - @POST(Apis.querySiteTimes) - fun querySiteTimes( - @Field("id") id: String, - @Field("day") day: String, - @Field("halfName") halfName: String?, - @Field("siteName") siteName: String? - ): Flowable<ResultData<List<PlaceTime>>> - - @FormUrlEncoded - @POST(Apis.querySiteCouponList) - fun querySiteCouponList( - @Field("siteId") id: String, - @Field("lat") lat: Double?, - @Field("lon") lon: Double?, - @Field("price") price: Double - ): Flowable<ResultData<List<Coupon>>> - - @FormUrlEncoded - @POST(Apis.querySiteInfo) - fun querySiteInfo( - @Field("id") id: String, - @Field("lat") lat: Double?, - @Field("lon") lon: Double? - ): Flowable<ResultData<Place>> - - @FormUrlEncoded - @POST(Apis.reservationSite) - fun reservationSite( - @Field("id") id: String, - @Field("booker") booker: String, - @Field("phone") phone: String, - @Field("times") times: String, - @Field("payType") payType: Int, - @Field("couponId") couponId: Long?, - @Field("isHalf") isHalf: Int, - @Field("halfName") halfName: String?, - @Field("nextName") nextName: String - ): Flowable<ResultData<PayInfo>> @FormUrlEncoded @POST(Apis.continuePaymentMySite) @@ -415,10 +305,6 @@ ): Flowable<ResultData<WeeksOfCourseDetails>> @FormUrlEncoded - @POST(Apis.switchStu) - fun switchStu(@Field("stuId") stuId: String): Flowable<ResultData<Any>> - - @FormUrlEncoded @POST(Apis.lessonDetails) fun lessonDetails( @Field("stuId") stuId: String, @@ -450,6 +336,9 @@ @Query("phone") phone: String ): Flowable<ResultData<Any>> + @GET(Apis.promptVoice) + fun promptVoice(): Flowable<ResultData<ConfigBean>> + @FormUrlEncoded @POST fun register( @@ -466,13 +355,6 @@ @Field("openId") openId: String?, @Field("lat") lat: Double?, @Field("lon") lon: Double? ): Flowable<ResultData<JsonObject>> - @FormUrlEncoded - @POST(Apis.userLogin) - fun userLogin( - @Field("password") password: String, - @Field("phone") phone: String - ): Flowable<ResultData<String>> - @POST(Apis.captchaLogin) fun captchaLogin( @Body phoneRequest : String @@ -486,6 +368,12 @@ @GET(Apis.studySchedule) fun studySchedule(@Query("week")week:Int,@Query("day")day:Int): Flowable<ResultData<Schedule>> + + @GET(Apis.onlineDuration) + fun onlineDuration(): Flowable<ResultData<String>> + + @GET(Apis.giveIntegral) + fun giveIntegral(): Flowable<ResultData<Boolean>> @FormUrlEncoded @POST(Apis.queryBanner) @@ -546,21 +434,6 @@ @Field("shopId") shopId: String? ): Flowable<ResultData<List<Goods>>> - - @FormUrlEncoded - @POST(Apis.exchangeStoreIds) - fun exchangeStoreIds( - @Field("goodsType") goodsType: Int, - @Field("pointsMerId") id: String - ): Flowable<ResultData<List<Shop>>> - - @FormUrlEncoded - @POST(Apis.exchangeRecords) - fun exchangeRecords( - @Field("goodsType") goodsType: Int?, - @Field("useType") useType: Int? - ): Flowable<ResultData<List<ExchangeRecord>>> - @FormUrlEncoded @POST(Apis.redemptionDetails) fun redemptionDetails( @@ -569,18 +442,6 @@ @POST(Apis.cancellation) fun cancellation(): Flowable<ResultData<Any>> - - @FormUrlEncoded - @POST(Apis.productRedemptionOperation) - fun productRedemptionOperation( - @Field("goodsType") goodsType: Int, - @Field("exchangeType") exchangeType: Int, - @Field("goodId") goodId: String, - @Field("nums") nums: Int, - @Field("payType") payType: Int?, - @Field("stuIds") stuIds: String?, - @Field("storeId") storeId: String? - ): Flowable<ResultData<PayInfo>> @FormUrlEncoded @POST(Apis.queryStoreFreeBenefit) @@ -651,14 +512,20 @@ @POST(Apis.exitLearning) fun exitLearning(@Body body: String): Flowable<ResultData<Any>> - @POST(Apis.completeLearning) - fun completeLearning(@Body body: String): Flowable<ResultData<Any>> + @GET(Apis.exitGameOrStory) + fun exitGameOrStory(@Query("studyTime") studyTime: Int): Flowable<ResultData<Any>> - @POST(Apis.completeStory) - fun completeStory(@Body body: String): Flowable<ResultData<Any>> + @POST(Apis.completeLearning) + fun completeLearning(@Body body: String): Flowable<ResultData<Int?>> + + @GET(Apis.completeStory) + fun completeStory(@Query("accuracy") accuracy: Int, + @Query("storyId") storyId: String, + @Query("type") type: Int, + @Query("studyTime") studyTime: Int): Flowable<ResultData<Int?>> @POST(Apis.gameAchievement) - fun gameAchievement(@Body body: String): Flowable<ResultData<Any>> + fun gameAchievement(@Body body: String): Flowable<ResultData<Int?>> @GET(Apis.teamSchedule) fun teamSchedule(@Query("day") day:Int,@Query("type") type:Int,@Query("week") week:Int): Flowable<ResultData<ProgressBean>> @@ -772,154 +639,10 @@ ): Flowable<ResultData<GoodsList>> @GET(Apis.goodDetail) - fun goodDetail( - @Query("goodId") goodId: String): Flowable<ResultData<GoodsDetail>> - - @FormUrlEncoded - @POST(Apis.queryIsTest) - fun queryIsTest( - @Field("gradeId") gradeId: Int, - @Field("subjectsId") subjectsId: Int - ): Flowable<ResultData<TestingResult>> - - @FormUrlEncoded - @POST(Apis.queryTestQuestion) - fun queryTestQuestion( - @Field("gradeId") gradeId: Int, - @Field("subjectsId") subjectsId: Int - ): Flowable<ResultData<ArrayList<TestingQuestion>>> - - @FormUrlEncoded - @POST(Apis.optSubmitTestPaper) - fun optSubmitTestPaper( - @Field("paperId") paperId: Int, - @Field("time") time: Int, - @Field("data") data: String - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.queryMeAppraisal) - fun queryMeAppraisal( - @Field("current") current: Int, - @Field("size") size: Int = Const.PAGE_SIZE - ): Flowable<ResultData<ArrayList<TestingRecord>>> - - @FormUrlEncoded - @POST(Apis.queryOrderList) - fun queryOrderList( - @Field("current") current: Int, - @Field("type") type: Int, - @Field("size") size: Int = Const.PAGE_SIZE - ): Flowable<ResultData<ArrayList<Order>>> - - @FormUrlEncoded - @POST(Apis.queryApplyDetail) - fun queryApplyDetail( - @Field("courseStudentId") courseStudentId: Int - ): Flowable<ResultData<Order>> - - @POST(Apis.queryIsBindAlipay) - fun queryIsBindAlipay(): Flowable<ResultData<Boolean>> + fun goodDetail(@Query("goodId") goodId: String): Flowable<ResultData<GoodsDetail>> @GET(Apis.exchangeRecord) - fun exchangeRecord(): Flowable<ResultData<List<ExchangeRecord>>> - - @FormUrlEncoded - @POST(Apis.queryCanRefund) - fun queryCanRefund( - @Field("courseStudentId") courseStudentId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optApplyRefund) - fun optApplyRefund( - @Field("courseStudentId") courseStudentId: Int, - @Field("refundClassHours") refundClassHours: Int, - @Field("refundMark") refundMark: String, - @Field("refundMoney") refundMoney: Double - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optCancelApply) - fun optCancelApply( - @Field("applyId") applyId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optAddBind) - fun optAddBind( - @Field("openId") openId: String, - @Field("unionid") unionid: String, - @Field("otherName") otherName: String, - @Field("type") type: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optAddQuestion) - fun optAddQuestion( - @Field("question") question: String, - @Field("describe") describe: String, - @Field("imgUrl") imgUrl: String, - @Field("golds") golds: Int - ): Flowable<ResultData<RewardQuestion>> - - @FormUrlEncoded - @POST(Apis.queryQuestionSquareList) - fun queryQuestionSquareList( - @Field("current") current: Int, - @Field("conditions") conditions: String?, - @Field("size") size: Int = Const.PAGE_SIZE - ): Flowable<ResultData<ArrayList<RewardQuestion>>> - - @FormUrlEncoded - @POST(Apis.queryQuestionAnswerList) - fun queryQuestionAnswerList( - @Field("current") current: Int, - @Field("questionId") questionId: Int, - @Field("size") size: Int = Const.PAGE_SIZE - ): Flowable<ResultData<ArrayList<RewardAnswer>>> - - @FormUrlEncoded - @POST - fun queryMeQuestionList( - @Field("current") current: Int, - @Url url: String, - @Field("size") size: Int = Const.PAGE_SIZE - ): Flowable<ResultData<ArrayList<RewardQuestion>>> - - @FormUrlEncoded - @POST(Apis.optDeleteQuestion) - fun optDeleteQuestion( - @Field("questionId") questionId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optDeleteAnswer) - fun optDeleteAnswer( - @Field("answerId") answerId: Int, - @Field("questionId") questionId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optAdoptAnswer) - fun optAdoptAnswer( - @Field("answerId") answerId: Int, - @Field("questionId") questionId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.optAddAnswer) - fun optAddAnswer( - @Field("answer") answer: String, - @Field("questionId") questionId: Int - ): Flowable<ResultData<JsonObject>> - - @FormUrlEncoded - @POST(Apis.queryGameList) - fun queryGameList( - @Field("siteId") siteId: Int, - @Field("storeId") storeId: String - ): Flowable<ResultData<List<GameBean>>> + fun exchangeRecord(@Query("pageNumber") page:Int,@Query("pageSize") pageSize: Int = 30): Flowable<ResultData<ExchangeRecordBean>> @Headers("notapp:true") @FormUrlEncoded @@ -932,17 +655,6 @@ ): Flowable<ResultData<List<GameRecordBean>>> @FormUrlEncoded - @POST(Apis.payGame) - fun payGame( - @Field("configId") configId: Int, - @Field("gameId") gameId: Int, - @Field("spaceId") spaceId: Int, - @Field("sutuId") sutuId: Int, - @Field("type") type: Int, - @Field("gameType") gameType: Int - ): Flowable<ResultData<PayInfo>> - - @FormUrlEncoded @POST(Apis.registeredData) fun registeredData( @Field("lat") lat: Double?, @@ -950,13 +662,6 @@ @Field("coursePayId") coursePayId: String, @Field("orderId") orderId: String ): Flowable<ResultData<JoinedCourse>> - - @FormUrlEncoded - @POST(Apis.indexOfEx) - fun indexOfEx( - @Field("latitude") lat: Double?, - @Field("longitude") lon: Double? - ): Flowable<ResultData<List<Shop>>> @FormUrlEncoded @POST(Apis.storeList) @@ -997,10 +702,6 @@ @Field("imgs") imgs: String?, @Field("score") score: Double ): Flowable<ResultData<Any>> - - @Headers("notapp:true") - @GET - fun getGameList(@Url url: String): Flowable<ResponseBody> @POST(Apis.getHomeModule) fun getHomeModule(): Flowable<ResultData<Banner>> diff --git a/app/src/main/java/com/dollearn/student/network/Apis.kt b/app/src/main/java/com/dollearn/student/network/Apis.kt index 57f9b32..84b8d9b 100644 --- a/app/src/main/java/com/dollearn/student/network/Apis.kt +++ b/app/src/main/java/com/dollearn/student/network/Apis.kt @@ -20,13 +20,11 @@ // const val gameRecord ="https://try.daowepark.com/v7/user_api/general/gameRecord" //测试 /**公共接口*/ - val SHARE_URL = "https://gengwoxue.com:8443/share/index.html?type=1&invitation=%d" //普通分享 + val SHARE_URL = "https://dollearn.com/" //分享链接 官网 const val H5_URL = "study/base/user/getProtocol" //获取协议 const val getCode = "study/base/user/sendPhoneCode" - const val queryBasisSet = "base/app/agreement/queryBasisSet" - const val queryVersionByType = "base/app/agreement/queryVersionByType" - const val querySystemSetByType = "base/app/agreement/querySystemSetByType" - const val querySystemImg = "base/user/parentPage" + const val promptVoice = "study/base/study/promptVoice" + const val querySystemImg = "study/base/user/studyPage" const val queryProvinceAndCity = "other/base/store/queryProvinceAndCity" const val queryStoreByCityCode = "other/base/store/queryStoreByCityCode" @@ -35,7 +33,6 @@ */ const val register = "account/base/appUser/addAppUser" const val updatePassword = "account/base/appUser/updatePassword" - const val userLogin = "account/base/appUser/loginPassword" const val captchaLogin = "study/base/user/studyLogin" const val forgetPassword = "account/base/appUser/forgetPassword" const val bindWx = "account/base/appUser/bind" @@ -46,6 +43,8 @@ const val goodRecommend = "study/base/study/goodRecommend" const val weekList = "study/base/study/weekList" const val studySchedule = "study/base/study/studySchedule" + const val onlineDuration = "study/base/study/onlineDuration" + const val giveIntegral = "study/base/study/giveIntegral" const val queryBanner = "other/base/banner/queryBannerList" const val querySearchCourseList = "api/app/course/querySearchCourseList" @@ -63,6 +62,7 @@ const val questionsAndAnswers = "study/base/study/questionsAndAnswers" const val pictureMateVoice = "study/base/study/pictureMateVoice" const val exitLearning = "study/base/study/exitLearning" + const val exitGameOrStory = "study/base/study/exitGameOrStory" const val teamSchedule = "study/base/study/teamSchedule" const val completeLearning = "study/base/study/completeLearning" @@ -91,9 +91,9 @@ /** * 我的 */ + const val shareInfo = "study/base/user/shareInfo" const val userDetails = "study/base/user/userInfo" const val studyRecord = "study/base/study/studyRecord" - const val optAddBind = "api/app/student/optAddBind" const val exchangeRecord = "goods/base/goods/exchangeRecord" const val shopAddress = "goods/base/goods/shopAddress" const val setDefaultStudy = "goods/base/goods/setDefaultStudy" @@ -105,32 +105,10 @@ const val updateInfo = "account/api/appUser/updateInfo" /** - * 测评 - */ - const val queryIsTest = "api/app/test/queryIsTest" - const val queryTestQuestion = "api/app/test/queryTestQuestion" - const val optSubmitTestPaper = "api/app/test/optSubmitTestPaper" - const val queryMeAppraisal = "api/app/test/queryMeAppraisal" - - /** - * 订单 - */ - const val queryOrderList = "api/app/order/queryOrderList" - const val queryApplyDetail = "api/app/student/queryApplyDetail" - const val queryIsBindAlipay = "api/app/student/queryIsBindAlipay" - const val queryCanRefund = "api/app/student/queryCanRefund" - const val optApplyRefund = "api/app/student/optApplyRefund" - const val optCancelApply = "api/app/student/optCancelApply" - - /** * 加入玩派 */ - const val queryCouponList = "activity/api/coupon/queryCouponList" - const val queryJoinPlayPai = "account/api/appUser/queryJoinPlayPai" const val addVipPayment = "account/api/appUser/addVipPayment" const val paymentCourse = "course/api/course/paymentCourse" - const val queryStoreConfig = "other/base/store/queryStoreConfig" - const val queryIndexSet = "other/base/store/queryIndexSet" const val queryStoreLists = "other/base/store/queryStoreLists" const val voucherCenter = "account/api/useBenefit/voucherCenter" const val rechargeDescription = "other/base/stored/rechargeDescription" @@ -148,7 +126,6 @@ const val queryStudentData = "account/api/startCource/queryStudentData" const val stuGoog = "account/api/startCource/stuGoog" const val weeksOfCourseDetails = "account/api/startCource/weeksOfCourseDetailsList" - const val switchStu = "account/api/startCource/switchStu" const val lessonDetails = "account/api/startCource/lessonDetails" const val editDefault = "account/api/startCource/editDefault" const val recordDetails = "account/api/startCource/recordDetails" @@ -161,13 +138,9 @@ const val registeredData = "course/api/startCource/RegisteredData" const val payment = "course/api/startCource/payment" const val queryPhysical = "account/api/startCource/queryPhysical" - const val reverse = "course/api/startCource/reverse" - const val cancelCourse = "account/api/startCource/cancelCourse" const val stuAppointList = "account/api/startCource/stuAppointList" - const val goodsOfCourseStore = "account/api/useBenefit/goodsOfCourseStore" const val weeksOfGetHours = "account/api/startCource/weeksOfGetHours" const val weeksOfAddHours = "account/api/startCource/weeksOfAddHours" - const val paymentCourseCouponList = "course/api/course/paymentCourseCouponList" const val queryMySiteById = "other/api/site/queryMySiteById" const val payCourseInfo = "course/api/startCource/payCourseInfo" @@ -185,13 +158,8 @@ const val userBilling = "account/api/useBenefit/userBilling" const val queryCouponPackage = "activity/api/coupon/queryCouponPackage" const val integralMallList = "account/api/useBenefit/integralMallList" - const val goodsDetails = "account/api/useBenefit/goodsDetails" - const val goodsDetailsOne = "account/api/useBenefit/goodsDetailsOne" const val cancellation = "account/api/useBenefit/cancellation" - const val productRedemptionOperation = "account/api/useBenefit/productRedemptionOperation" - const val exchangeRecords = "account/api/useBenefit/exchangeRecords" const val redemptionDetails = "account/api/useBenefit/redemptionDetails" - const val exchangeStoreIds = "account/api/useBenefit/exchangeStoreIds" /** * 视频 @@ -207,20 +175,13 @@ */ const val querySiteList = "other/base/site/querySiteList" const val querySiteType = "other/base/site/querySiteType" - const val querySiteInfo = "other/base/site/querySiteInfo" - const val querySiteTimes = "other/base/site/querySiteTimes" - const val querySiteCouponList = "activity/api/coupon/querySiteCouponList" - const val reservationSite = "other/api/site/reservationSite" const val queryMySite = "other/api/site/queryMySite" const val cancelMySite = "other/api/site/cancelMySite" const val continuePaymentMySite = "other/api/site/continuePaymentMySite" - - /** * 赛事 */ - const val queryCompetitionList = "competition/base/competition/queryCompetitionList" const val queryAllCity = "other/base/store/queryAllCity" const val queryCompetitionInfo = "competition/base/competition/queryCompetitionInfo" const val queryParticipantList = "competition/api/participant/queryParticipantList" @@ -236,7 +197,6 @@ /** * 探索玩湃 */ - const val indexOfEx = "account/api/exploreWP/indexOfEx" const val storeList = "account/base/exploreWP/storeList" const val storeDetail = "account/base/exploreWP/storeDetail" const val saveEvaluation = "other/base/storeEvaluation/saveEvaluation" @@ -245,20 +205,6 @@ const val noticeDetail = "account/base/exploreWP/noticeDetail" const val exceptionDetail = "account/base/exploreWP/exceptionDetail" const val exceptionList = "account/base/exploreWP/exceptionList" - - const val optAddQuestion = "api/app/answer/optAddQuestion" - const val queryQuestionSquareList = "api/app/answer/queryQuestionSquareList" - const val queryQuestionAnswerList = "api/app/answer/queryQuestionAnswerList" - const val optDeleteQuestion = "api/app/answer/optDeleteQuestion" - const val optDeleteAnswer = "api/app/answer/optDeleteAnswer" - const val optAdoptAnswer = "api/app/answer/optAdoptAnswer" - const val optAddAnswer = "api/app/answer/optAddAnswer" - - /** - * 游戏 - */ - const val queryGameList ="other/api/game/queryGameList" - const val payGame ="other/api/game/payGame" /** * 世界杯 diff --git a/app/src/main/java/com/dollearn/student/network/Functions.kt b/app/src/main/java/com/dollearn/student/network/Functions.kt index 2b0699c..993eb2f 100644 --- a/app/src/main/java/com/dollearn/student/network/Functions.kt +++ b/app/src/main/java/com/dollearn/student/network/Functions.kt @@ -6,7 +6,7 @@ import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.rxutils.ResultDataSubscriber import cn.sinata.xldutils.utils.SPUtils -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.ui.login.LoginActivity import com.dollearn.student.utils.Const import io.reactivex.Flowable @@ -29,7 +29,7 @@ if (code == 700||code == 600){//token无效 error(code,"登录已失效") SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply() - (activity.application as WeparkApplication).exit() + (activity.application as DollearnApplication).exit() activity.startActivity<LoginActivity>() }else{ super.onError(code, msg) @@ -55,7 +55,7 @@ if (code == 700||code == 600){//token无效 error(code,"登录已失效") SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply() - (fragment.activity!!.application as WeparkApplication).exit() + (fragment.activity!!.application as DollearnApplication).exit() fragment.startActivity<LoginActivity>() }else{ super.onError(code, msg) diff --git a/app/src/main/java/com/dollearn/student/network/HttpManager.kt b/app/src/main/java/com/dollearn/student/network/HttpManager.kt index eb8af44..4c6caf6 100644 --- a/app/src/main/java/com/dollearn/student/network/HttpManager.kt +++ b/app/src/main/java/com/dollearn/student/network/HttpManager.kt @@ -2,14 +2,12 @@ import cn.sinata.xldutils.data.ResultData import com.google.gson.JsonObject -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.ChooseStudentDialog import com.dollearn.student.network.entity.* import com.dollearn.student.utils.pay.PayInfo import com.google.gson.Gson import io.reactivex.Flowable -import okhttp3.ResponseBody -import retrofit2.http.Field object HttpManager { private const val PAGE_SIZE = 20 @@ -41,28 +39,6 @@ */ fun queryStoreByCityCode(code: String,provinceCode:String): Flowable<ResultData<ArrayList<CommonData>>> { return request().queryStoreByCityCode(code,provinceCode) - } - - /** - * 获取最新版本 - */ - fun queryVersionByType(): Flowable<ResultData<JsonObject>> { - return request().queryVersionByType() - } - - /** - * 获取客服电话/推广中心图片/引导页等 - * @param type 1=客服电话,2=推广中心图片,3=引导页 - */ - fun querySystemSetByType(type: Int): Flowable<ResultData<JsonObject>> { - return request().querySystemSetByType(type) - } - - /** - * 获取加入玩湃首页数据 - */ - fun queryJoinPlayPai(lat: Double?, lon: Double?): Flowable<ResultData<HomeData>> { - return request().queryJoinPlayPai(lat, lon) } /** @@ -102,10 +78,6 @@ return request().payment(payType, id, courseId, courseCount, students, useCoupon, coupon) } - fun paymentCourse2(map: HashMap<String, Any?>): Flowable<ResultData<PayInfo>> { - return request().paymentCourse2(map) - } - /** * 赛事报名 */ @@ -114,38 +86,10 @@ } /** - * 门店配置 - */ - fun queryStoreConfig(shopId: String): Flowable<ResultData<List<Banner>>> { - return request().queryStoreConfig(shopId) - } - - /** - * 门店更多配置 - */ - fun queryIndexSet(shopId: String): Flowable<ResultData<List<Banner>>> { - return request().queryIndexSet(shopId) - } - - /** * 体检报告 */ fun queryPhysical(id: String): Flowable<ResultData<Report>> { return request().queryPhysical(id) - } - - /** - * 预约 - */ - fun reverse(time: String, stuId: String, courseId: String): Flowable<ResultData<Any>> { - return request().reverse(time, stuId, courseId) - } - - /** - * 取消预约 - */ - fun cancelCourse(id: String): Flowable<ResultData<Any>> { - return request().cancelCourse(id) } /** @@ -161,23 +105,20 @@ return request().stuAppointList(id, type, timeType, search,page) } - /** - * 兑换默认运动营成员或门店 - */ - fun goodsOfCourseStore(isCourse: Int, id: String): Flowable<ResultData<DefaultData>> { - return request().goodsOfCourseStore( - isCourse, - id, - WeparkApplication.lat, - WeparkApplication.lon - ) - } /** * 用户信息 */ fun userDetails(): Flowable<ResultData<UserBean>> { return request().userDetails() + } + + + /** + * 分享信息 + */ + fun shareInfo(): Flowable<ResultData<ConfigBean>> { + return request().shareInfo() } /** @@ -260,8 +201,8 @@ return request().querySiteList( page, PAGE_SIZE, - WeparkApplication.lat, - WeparkApplication.lon, + DollearnApplication.lat, + DollearnApplication.lon, cityCode, startTime, endTime, @@ -285,17 +226,6 @@ return request().cancelMySite(id) } - /** - * 赛事列表 - */ - fun queryCompetitionList( - cityCode: String?, - registerCondition: Int?, - heat: String?, - search: String? - ): Flowable<ResultData<List<Match>>> { - return request().queryCompetitionList(cityCode, registerCondition, heat, search) - } /** * 我的赛事列表 @@ -311,19 +241,6 @@ return request().querySiteType() } - /** - * 支付运动营--完成后优惠券列表 - */ - fun paymentCourseCouponList(id: Int? = null): Flowable<ResultData<List<Coupon>>> { - return request().paymentCourseCouponList(id) - } - - /** - * 支付会员--完成后优惠券列表 - */ - fun queryCouponList(): Flowable<ResultData<List<Coupon>>> { - return request().queryCouponList() - } /** * 查询预约详情 @@ -365,59 +282,6 @@ */ fun registeredCourses(type: Int?, search: String?): Flowable<ResultData<List<JoinedCourse>>> { return request().registeredCourses(type, search) - } - - /** - * 场地时间段 - */ - fun querySiteTimes(id: String, date: String,siteName:String?,halfName:String?): Flowable<ResultData<List<PlaceTime>>> { - return request().querySiteTimes(id, date,halfName,siteName) - } - - /** - * 场地优惠券 - */ - fun querySiteCouponList(id: String, price: Double): Flowable<ResultData<List<Coupon>>> { - return request().querySiteCouponList( - id, - WeparkApplication.lat, - WeparkApplication.lon, - price - ) - } - - /** - * 场地详情 - */ - fun querySiteInfo(id: String): Flowable<ResultData<Place>> { - return request().querySiteInfo(id, WeparkApplication.lat, WeparkApplication.lon) - } - - /** - * 场地下单 - */ - fun reservationSite( - id: String, - name: String, - phone: String, - time: String, - payType: Int, - coupon: Long?, - isHalf: Int, - halfName: String?, - nextName: String - ): Flowable<ResultData<PayInfo>> { - return request().reservationSite( - id, - name, - phone, - time, - payType, - coupon, - isHalf, - halfName, - nextName - ) } /** @@ -575,16 +439,9 @@ id, storeID, time, - WeparkApplication.lat, - WeparkApplication.lon + DollearnApplication.lat, + DollearnApplication.lon ) - } - - /** - * 切换运动营成员 - */ - fun switchStu(id: String): Flowable<ResultData<Any>> { - return request().switchStu(id) } /** @@ -606,6 +463,13 @@ */ fun getCode(phone: String): Flowable<ResultData<Any>> { return request().getCode(phone) + } + + /** + * 获取正确和错误语音 + */ + fun promptVoice(): Flowable<ResultData<ConfigBean>> { + return request().promptVoice() } /** @@ -650,6 +514,20 @@ */ fun studySchedule(week:Int,day:Int): Flowable<ResultData<Schedule>> { return request().studySchedule(week,day) + } + + /** + * 获取在线时间赠送积分信息(单位分钟) + */ + fun onlineDuration(): Flowable<ResultData<String>> { + return request().onlineDuration() + } + + /** + * 获取在线时间赠送积分信 + */ + fun giveIntegral(): Flowable<ResultData<Boolean>> { + return request().giveIntegral() } /** @@ -781,28 +659,35 @@ /** * 保存进度 */ - fun exitLearning(answerNumber: Int,correctNumber: Int,day: Int,week: Int,type: Int,teamIds:String,topicIds:String): Flowable<ResultData<Any>> { - return request().exitLearning(Gson().toJson(ReqSaveProgress(answerNumber,correctNumber,day, week, type, teamIds, topicIds))) + fun exitLearning(schedule: Int,season: Int,studyTime: Int,answerNumber: Int,correctNumber: Int,day: Int,week: Int,type: Int,teamIds:String,topicIds:String): Flowable<ResultData<Any>> { + return request().exitLearning(Gson().toJson(ReqSaveProgress(schedule+1,season,answerNumber,correctNumber,day, week, studyTime,type, teamIds, topicIds))) + } + + /** + * 保存游戏和故事时间 + */ + fun exitGameOrStory(studyTime: Int): Flowable<ResultData<Any>> { + return request().exitGameOrStory(studyTime) } /** * 完成学习 */ - fun completeLearning(rate: Int,time: Int,day: Int,week: Int,season: Int,type: Int,teamIds:String): Flowable<ResultData<Any>> { + fun completeLearning(rate: Int,time: Int,day: Int,week: Int,season: Int,type: Int,teamIds:String): Flowable<ResultData<Int?>> { return request().completeLearning(Gson().toJson(ReqFinishStudy(rate,day,season,teamIds,time,type,week))) } /** - * 完成学习 + * 完成故事 */ - fun completeStory(rate: Int,type: Int,storyId:String): Flowable<ResultData<Any>> { - return request().completeStory(Gson().toJson(ReqFinishStory(rate,storyId, type))) + fun completeStory(rate: Int,type: Int,storyId:String,time: Int): Flowable<ResultData<Int?>> { + return request().completeStory(rate,storyId, type,time) } /** * 完成游戏 */ - fun gameAchievement(rate: Int,difficulty: Int,gameId:String,gameName:String,useTime:Int): Flowable<ResultData<Any>> { + fun gameAchievement(rate: Int,difficulty: Int,gameId:String,gameName:String,useTime:Int): Flowable<ResultData<Int?>> { return request().gameAchievement(Gson().toJson(ReqFinishGame(rate,difficulty,gameId,gameName, useTime))) } @@ -872,26 +757,13 @@ sort, page, PAGE_SIZE, - WeparkApplication.lat, - WeparkApplication.lon, + DollearnApplication.lat, + DollearnApplication.lon, search, shopId ) } - /** - * 商品可用门店列表 - */ - fun exchangeStoreIds(type: Int, id: String): Flowable<ResultData<List<Shop>>> { - return request().exchangeStoreIds(type, id) - } - - /** - * 兑换记录 - */ - fun exchangeRecords(type: Int?, state: Int?): Flowable<ResultData<List<ExchangeRecord>>> { - return request().exchangeRecords(type, state) - } /** * 兑换详情 @@ -908,29 +780,6 @@ } /** - * 兑换商品 - */ - fun productRedemptionOperation( - goodsId: String, - goodsType: Int, - exchangeType: Int, - num: Int, - payType: Int?, - students: String?, - storeId: String? - ): Flowable<ResultData<PayInfo>> { - return request().productRedemptionOperation( - goodsType, - exchangeType, - goodsId, - num, - payType, - students, - storeId - ) - } - - /** * 查询免费福利 */ fun queryStoreFreeBenefit(id: String): Flowable<ResultData<JsonObject>> { @@ -941,7 +790,7 @@ * 福利 */ fun weekLimitedBenefit(type: Int): Flowable<ResultData<ArrayList<Welfare>>> { - return request().weekLimitedBenefit(type, WeparkApplication.lat, WeparkApplication.lon) + return request().weekLimitedBenefit(type, DollearnApplication.lat, DollearnApplication.lon) } /** @@ -1131,88 +980,19 @@ return request().goodDetail(id) } - /** - * 订单详情 - */ - fun queryIsBindAlipay(): Flowable<ResultData<Boolean>> { - return request().queryIsBindAlipay() - } /** * 兑换记录 */ - fun exchangeRecord(): Flowable<ResultData<List<ExchangeRecord>>> { - return request().exchangeRecord() + fun exchangeRecord(page: Int): Flowable<ResultData<ExchangeRecordBean>> { + return request().exchangeRecord(page) } - - /** - * 运动营退款 - */ - fun optApplyRefund( - id: Int, - refundClassHours: Int, - refundMark: String, - refundMoney: Double - ): Flowable<ResultData<JsonObject>> { - return request().optApplyRefund(id, refundClassHours, refundMark, refundMoney) - } - - /** - * 撤销运动营退款 - */ - fun optCancelApply(id: Int): Flowable<ResultData<JsonObject>> { - return request().optCancelApply(id) - } - - /** - * 添加悬赏问题 - */ - fun optAddQuestion( - question: String, - describe: String, - img: String, - gold: Int - ): Flowable<ResultData<RewardQuestion>> { - return request().optAddQuestion(question, describe, img, gold) - } - - /** - * 悬赏问题列表 - */ - fun queryQuestionSquareList( - page: Int, - key: String? = null - ): Flowable<ResultData<ArrayList<RewardQuestion>>> { - return request().queryQuestionSquareList(page, key) - } - - /** - * 悬赏答案列表 - */ - fun queryQuestionAnswerList(page: Int, id: Int): Flowable<ResultData<ArrayList<RewardAnswer>>> { - return request().queryQuestionAnswerList(page, id) - } - - /** * 已报运动营详情 */ fun registeredData(id: String,orderId: String): Flowable<ResultData<JoinedCourse>> { - return request().registeredData(WeparkApplication.lat,WeparkApplication.lon,id,orderId) - } - /** - * 探索首页 - */ - fun indexOfEx(): Flowable<ResultData<List<Shop>>> { - return request().indexOfEx(WeparkApplication.lat, WeparkApplication.lon) - } - - /** - * 游戏列表 - */ - fun queryGameList(storeID: String,siteId:Int): Flowable<ResultData<List<GameBean>>> { - return request().queryGameList(siteId,storeID) + return request().registeredData(DollearnApplication.lat,DollearnApplication.lon,id,orderId) } /** @@ -1222,20 +1002,14 @@ return request().gameRecord(userId,page) } - /** - * 游戏支付 - */ - fun payGame(configId:Int,gameId:Int,spaceId:Int,sutuId:Int,type: Int,gameType: Int): Flowable<ResultData<PayInfo>> { - return request().payGame(configId,gameId,spaceId,sutuId, type,gameType) - } /** * 门店列表 */ fun storeList(cityCode: String?, distanceSort: Int?,search: String?): Flowable<ResultData<List<ShopListBean>>> { return request().storeList( - WeparkApplication.lat, - WeparkApplication.lon, + DollearnApplication.lat, + DollearnApplication.lon, cityCode, distanceSort, search) @@ -1315,13 +1089,6 @@ } /** - * 获取游戏列表 - */ - fun getGameList(url: String): Flowable<ResponseBody> { - return request().getGameList(url) - } - - /** *获取平台配置模块详情【2.0】 */ fun getHomeModule(): Flowable<ResultData<Banner>> { @@ -1346,7 +1113,7 @@ * 裁判世界杯列表 */ fun getWorldCupListCoach(storeId: Int?,search: String?): Flowable<ResultData<List<WorldCupBean>>> { - return request().getWorldCupListCoach(WeparkApplication.lat,WeparkApplication.lon,storeId,search) + return request().getWorldCupListCoach(DollearnApplication.lat,DollearnApplication.lon,storeId,search) } /** @@ -1360,7 +1127,7 @@ * 世界杯详情 */ fun getWorldCupInfo(id: String): Flowable<ResultData<WorldCupBean>> { - return request().getWorldCupInfo(id,WeparkApplication.lat, WeparkApplication.lon) + return request().getWorldCupInfo(id,DollearnApplication.lat, DollearnApplication.lon) } /** @@ -1409,7 +1176,7 @@ * 世界杯报名详情 */ fun getMyWorldCupInfo(id: String): Flowable<ResultData<WorldCupBean>> { - return request().getMyWorldCupInfo(id,WeparkApplication.lat, WeparkApplication.lon) + return request().getMyWorldCupInfo(id,DollearnApplication.lat, DollearnApplication.lon) } /** diff --git a/app/src/main/java/com/dollearn/student/network/entity/Banner.kt b/app/src/main/java/com/dollearn/student/network/entity/Banner.kt index 9feef0e..098db52 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/Banner.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/Banner.kt @@ -6,11 +6,9 @@ import com.dollearn.student.ui.course.* import com.dollearn.student.ui.discovery.NoticeDetailActivity import com.dollearn.student.ui.discovery.ServiceActivity -import com.dollearn.student.ui.discovery.ShopListActivity import com.dollearn.student.ui.home.* import com.dollearn.student.ui.mine.RechargeActivity import com.dollearn.student.ui.welfare.GoodsDetailActivity -import com.dollearn.student.ui.welfare.ScoreShopActivity import com.dollearn.student.ui.worldcup.WorldCupDetailActivity import com.dollearn.student.ui.worldcup.WorldCupListActivity import com.dollearn.student.utils.Const @@ -49,7 +47,7 @@ "加入玩湃"->{ when(page){ "主页"->{ - EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_HOME)) + EventBus.getDefault().post(EmptyEvent(Const.EventCode.CLICK_GAME_ITEM)) context.startActivity<MainActivity>() } "课程列表"->{ @@ -104,7 +102,6 @@ "充值中心"-> context.startActivity<RechargeActivity>() "积分商城"-> { when(type){ - "主页"-> context.startActivity<ScoreShopActivity>() "指定商品"-> context.startActivity<GoodsDetailActivity>("id" to turnId) } } @@ -119,9 +116,6 @@ } "探索玩湃"-> { when(page) { - "门店列表"-> { - context.startActivity<ShopListActivity>() - } "常见问题"-> { when(type){ "列表"-> context.startActivity<ServiceActivity>("index" to 1) diff --git a/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt b/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt new file mode 100644 index 0000000..eea2336 --- /dev/null +++ b/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt @@ -0,0 +1,8 @@ +package com.dollearn.student.network.entity + +data class ConfigBean( + val error:String, + val correct:String, + val img:String, + val title:String +) \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt b/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt index 2f41b56..d4d2f11 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt @@ -19,4 +19,16 @@ val orderNumber: String, var state: Int, val userId: Int -) \ No newline at end of file +) + +data class ExchangeRecordBean( + val current: Int, + val hasNextPage: Boolean, + val hasPrevPage: Boolean, + val pages: Int, + val records: List<ExchangeRecord>, + val size: Int, + val startIndex: Int, + val total: Int +) + diff --git a/app/src/main/java/com/dollearn/student/network/entity/Goods.kt b/app/src/main/java/com/dollearn/student/network/entity/Goods.kt index 3f54220..4699645 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/Goods.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/Goods.kt @@ -24,5 +24,5 @@ val typeIds: String, val updateBy: String, val updateTime: String, - val userCount: Int + val userCount: Int? ):Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt b/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt index 57fb57f..b9097f1 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt @@ -6,6 +6,7 @@ @Parcelize data class GoodsDetail( val exchangeNumber: Int, + val residueNumber: Int?, val good: Goods, val goodTypes: List<GoodsType>?, val orderNumber: String, @@ -17,14 +18,10 @@ val address: String, val city: String, val cityCode: String, - val createBy: String?, - val createTime: String, - val disabled: Boolean, val id: String, val isDefault: Int, val province: String, val provinceCode: String, val recipient: String, - val recipientPhone: String, - val updateTime: String + val recipientPhone: String ):Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt b/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt index d48c752..75a536c 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt @@ -5,13 +5,7 @@ @Parcelize data class GoodsType( - val createBy: String, - val createTime: String, - val disabled: Boolean, val id: Int, - val isDelete: Int, val name: String, - val updateBy: String, - val updateTime: String, var checked:Boolean = false ): Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt b/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt index 641410e..734136a 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt @@ -3,5 +3,6 @@ data class ProgressBean( val topicIds: List<String>, val answerNumber: Int, - val correctNumber: Int + val correctNumber: Int, + val schedule: Int ) \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt b/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt deleted file mode 100644 index 0715b41..0000000 --- a/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.dollearn.student.network.entity - -data class ReqFinishStory( - val accuracy: Int, - val storyId: String, - val type: Int -) \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt b/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt index 06a10d2..1361cea 100644 --- a/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt +++ b/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt @@ -1,10 +1,13 @@ package com.dollearn.student.network.entity data class ReqSaveProgress( + val schedule:Int, + val quarter:Int, val answerNumber:Int, val correctNumber:Int, val day:Int, val week:Int, + val studyTime:Int, val type:Int, val teamIds:String, val topicIds:String diff --git a/app/src/main/java/com/dollearn/student/ui/H5Activity.kt b/app/src/main/java/com/dollearn/student/ui/H5Activity.kt index 71db1db..250b206 100644 --- a/app/src/main/java/com/dollearn/student/ui/H5Activity.kt +++ b/app/src/main/java/com/dollearn/student/ui/H5Activity.kt @@ -14,13 +14,12 @@ import cn.sinata.xldutils.visible import com.github.zackratos.ultimatebar.UltimateBar import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.request import com.dollearn.student.ui.login.LoginActivity import com.dollearn.student.utils.Const -import org.jetbrains.anko.backgroundColorResource import org.jetbrains.anko.backgroundResource import org.jetbrains.anko.find import org.jetbrains.anko.startActivity @@ -81,7 +80,7 @@ HttpManager.cancellation().request(this@H5Activity){ _, _-> myToast("注销成功") SPUtils.instance().remove(Const.User.TOKEN).apply() - (application as WeparkApplication).exit() + (application as DollearnApplication).exit() startActivity<LoginActivity>() } } diff --git a/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt b/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt index b03cd92..2f9ab9b 100644 --- a/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt @@ -14,7 +14,7 @@ import com.amap.api.maps.MapsInitializer import com.dollearn.student.MainActivity import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.RuleDialog import com.dollearn.student.network.Apis import com.dollearn.student.network.HttpManager @@ -58,7 +58,7 @@ ruleDialog.show(supportFragmentManager,"rule") },500) } -// getSignInfo(this) + getSignInfo(this) } private fun getImg() { @@ -114,7 +114,7 @@ * 判断是否第一次启动 */ private fun startNext(){ - (application as WeparkApplication).initSdk() + (application as DollearnApplication).initSdk() // if (SPUtils.instance().getBoolean(Const.FIRST_LAUNCH,true)){ //第一次启动显示引导页 // HttpManager.querySystemSetByType(3).request(this,false,{_,data-> // val s = data?.optString("content") diff --git a/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt b/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt index ccb4329..188bd56 100644 --- a/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt @@ -4,12 +4,12 @@ import cn.sinata.xldutils.R import cn.sinata.xldutils.activity.TitleActivity import com.github.zackratos.ultimatebar.UltimateBar -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import org.jetbrains.anko.backgroundColorResource abstract class TransparentStatusBarActivity : TitleActivity() { protected val app by lazy { - application as WeparkApplication + application as DollearnApplication } override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt index 52a9f48..e3e594a 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt @@ -5,7 +5,7 @@ import cn.sinata.xldutils.gone import cn.sinata.xldutils.visible import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.CommonData import com.dollearn.student.network.entity.Course @@ -13,7 +13,6 @@ import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.home.adapter.CourseAdapter import com.dollearn.student.ui.home.adapter.FilterAdapter -import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.activity_course.* @@ -29,7 +28,7 @@ private val adapter = CourseAdapter(datas) //筛选条件 - var shop = WeparkApplication.storeId //店铺id + var shop = DollearnApplication.storeId //店铺id var type: Int? = null //运动营类型id var distanceSort: String? = null //距离排序(asc=正序,desc=降序) var salesSort: String? = null //销量排序(asc=正序,desc=降序) @@ -177,8 +176,8 @@ private fun getData() { HttpManager.queryCourseList( shop, - WeparkApplication.lat, - WeparkApplication.lon, + DollearnApplication.lat, + DollearnApplication.lon, type, distanceSort, salesSort, @@ -200,7 +199,7 @@ } private fun getShop() { - HttpManager.queryStoreLists(WeparkApplication.lat, WeparkApplication.lon) + HttpManager.queryStoreLists(DollearnApplication.lat, DollearnApplication.lon) .request(this) { _, data -> storeList.addAll(data ?: arrayListOf()) } diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt index 95a26db..e6de77f 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt @@ -7,7 +7,7 @@ import cn.sinata.xldutils.utils.* import cn.sinata.xldutils.visible import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.MapTypeDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner @@ -15,7 +15,6 @@ import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.utils.Const import com.dollearn.student.utils.ThirdPartyMapsGuide import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.extention.clickDelay @@ -61,10 +60,7 @@ } } - tv_action.clickDelay { - if (course != null) - startActivity<JoinCourseActivity>("course" to course) - } + } override fun initView() { @@ -85,7 +81,7 @@ @SuppressLint("SetTextI18n") private fun getDetail() { - HttpManager.queryCourseInfo(id, WeparkApplication.lat, WeparkApplication.lon) + HttpManager.queryCourseInfo(id, DollearnApplication.lat, DollearnApplication.lon) .request(this) { _, data -> course = data data?.apply { diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt deleted file mode 100644 index 728ba33..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt +++ /dev/null @@ -1,393 +0,0 @@ -package com.dollearn.student.ui.course - -import android.annotation.SuppressLint -import android.app.Activity -import android.content.Intent -import android.util.Log -import android.view.View -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.viewpager.widget.ViewPager -import cn.sinata.xldutils.fragment.BaseFragment -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.utils.toTime -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.WeparkApplication -import com.dollearn.student.WeparkApplication.Companion.storeId -import com.dollearn.student.dialog.MapTypeDialog -import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.dialog.UndistributedClassHourialog -import com.dollearn.student.network.Apis -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.* -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.course.adapter.* -import com.dollearn.student.ui.home.AddStudentActivity -import com.dollearn.student.ui.home.VideoDetailActivity -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.Const.EventCode.CHANGE_COURSDATA -import com.dollearn.student.utils.ThirdPartyMapsGuide -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.extention.loadLongImage -import com.dollearn.student.utils.formatDistance -import com.dollearn.student.utils.interfaces.StringCallback -import com.dollearn.student.utils.interfaces.StringCallback2 -import kotlinx.android.synthetic.main.fragment_course.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.jetbrains.anko.support.v4.startActivity -import org.jetbrains.anko.support.v4.startActivityForResult -import org.jetbrains.anko.support.v4.toast -import java.lang.Exception -import java.util.* - -class CourseFragment : BaseFragment() { - override fun contentViewId() = R.layout.fragment_course - - private var currentStudent: String? = null //当前运动营成员 - private val course = arrayListOf<MyCourse>() - private val myCourseAdapter = MyCourseAdapter(course) - private val medalList = arrayListOf<Medal>() - private val medalAdapter = MedalGridAdapter(medalList) - private val exerciseList = arrayListOf<Exercise>() - private val exerciseAdapter = ExerciseGridAdapter(exerciseList) - private val frags = arrayListOf<WeekFragment>() - private val scheduleList = arrayListOf<Data>() - lateinit var dialogc: UndistributedClassHourialog - override fun onFirstVisibleToUser() { - rv_course.layoutManager = - LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) - rv_course.adapter = myCourseAdapter - rv_badge.layoutManager = GridLayoutManager(requireContext(), 3) - rv_badge.adapter = medalAdapter - rv_practice.layoutManager = GridLayoutManager(requireContext(), 2) - rv_practice.adapter = exerciseAdapter - rv_course_schedule.layoutManager = LinearLayoutManager(requireContext()) - - initWeeks() - - tv_switch.setOnClickListener { - startActivityForResult<SwitchStudentActivity>(2, "currentStu" to currentStudent) - } - tv_record.setOnClickListener { - startActivity<ReserveRecordActivity>( - "id" to currentStudent, - "name" to tv_name.text.toString() - ) - } - tv_more_report.setOnClickListener { - startActivity<ReportActivity>("id" to currentStudent) - } - - //详情 - tv_detail.setOnClickListener { - startActivity<MyCourseDetailActivity>( - "courseId" to course[myCourseAdapter.checked].courseId, - "stuId" to currentStudent - ) - } - - //续课 - tv_continue.setOnClickListener { - showDialog() - HttpManager.queryCourseInfo(course[myCourseAdapter.checked].courseId, WeparkApplication.lat, WeparkApplication.lon) - .requestByF(this) { _, data -> - startActivityForResult<JoinCourseActivity>( - 1, - "course" to data, - "isContinue" to true - ) - } - } - tv_continue_1.setOnClickListener { - tv_continue.callOnClick() - } - - - tv_evaluation.setOnClickListener { - startActivity<EvaluationActivity>("stuId" to currentStudent) - } - - myCourseAdapter.setOnItemClickListener { view, position -> - myCourseAdapter.checked = position - cl_course_info.visibility = if (course[position].courseType != 1) View.GONE else View.VISIBLE - myCourseAdapter.notifyDataSetChanged() - refreshCourseInfo() - } - medalAdapter.setOnItemClickListener { view, position -> - startActivity<MedalActivity>("stuId" to currentStudent) - } - exerciseAdapter.setOnItemClickListener { view, position -> - startActivity<VideoDetailActivity>( - "id" to exerciseList[position].videoId, - "scId" to exerciseList[position].scId, - "courseId" to exerciseList[position].coursePackageId, - "type" to 3 - ) - } - - tv_reward.setOnClickListener { - startActivity<PracticeListActivity>("stuId" to currentStudent) - } - ll_add.setOnClickListener { - startActivityForResult<AddStudentActivity>(1) - } - ll_add_stu.setOnClickListener { - startActivity<AddStudentActivity>() - } - refreshLayout.setOnRefreshListener { - getData() - } - - tv_class_hour.clickDelay { - HttpManager.weeksOfGetHours().requestByF(this@CourseFragment, - success = { _, data -> - - data?.let { - if (it == 0) { - toast("没有可分配的课时") - return@let - } - val arrayListOf = arrayListOf<MyCourse>() - arrayListOf.addAll(course.filter { it.isAble == 1 }) - dialogc = UndistributedClassHourialog.show( - childFragmentManager, - it, - arrayListOf, - object : StringCallback { - override fun onResult(rst: String) { - HttpManager.weeksOfAddHours(rst.toLong()) - .requestByF(this@CourseFragment, - success = { _, data -> - getData() - }) - dialogc.dismiss() - } - }) - } - - }) - } - EventBus.getDefault().register(this) - } - - override fun onDestroy() { - super.onDestroy() - EventBus.getDefault().unregister(this) - } - - @Subscribe - fun onEvent(e: EmptyEvent) { - if (e.code == Const.EventCode.CHANGE_SHOP || e.code == CHANGE_COURSDATA) { - getData() - } - } - - private fun getData() { - HttpManager.queryStudentData(currentStudent).requestByF(this, success = { _, data -> - refreshLayout.finishRefresh() - data?.apply { - gp_none.visibility = if (isThere == 1) { //展示运动营成员信息 - currentStudent = stuId - getSchedule() - gp_user.visible() - tv_name.text = stuName - tv_sex.setCompoundDrawablesRelativeWithIntrinsicBounds( - 0, - 0, - if (stuSex == 1) R.mipmap.nan else R.mipmap.nv, - 0 - ) - tv_age.text = "/${stuAge}岁" - iv_avatar.setImageURI(stuImg) - try { - val heightS = "${height}cm" - tv_height.text = - SpanBuilder(heightS).size(heightS.length - 2, heightS.length, 14) - .build() - val weightS = "${weight}kg" - tv_wight.text = - SpanBuilder(weightS).size(weightS.length - 2, weightS.length, 14) - .build() - val bmiS = "${bmi}${bodyStatus}" - tv_bmi.text = - SpanBuilder(bmiS).size(bmiS.indexOf(bodyStatus), bmiS.length, 14) - .build() - } catch (e: Exception) { - - } - - if (courseList.isNullOrEmpty()) { - ll_course.gone() - cl_course_info.gone() - } else { - ll_course.visible() - course.clear() - course.addAll(courseList) - myCourseAdapter.notifyDataSetChanged() - cl_course_info.visibility = if (course[0].courseType != 1) View.GONE else View.VISIBLE - refreshCourseInfo() - } - getMedal(stuId) - exerciseList.clear() - exerciseList.addAll(exerciseVideoList) - exerciseAdapter.notifyDataSetChanged() - View.GONE - } else { - gp_user.gone() - getImg() - View.VISIBLE - } - } - }) { _, _ -> - refreshLayout.finishRefresh(false) - } - } - - private fun getImg(){ - val map = hashMapOf<String, Any>() - map["position"] = 1 - HttpManager.queryString(Apis.querySystemImg,map).requestByF(this){ _, data-> - data?.loadLongImage(requireContext(),iv_none) - } - } - - private fun initWeeks() { - val calendar = Calendar.getInstance() - currentDate = System.currentTimeMillis() - calendar.set(Calendar.DAY_OF_WEEK, 1) - val firstOfWeek = calendar.timeInMillis - Log.e(Const.Tag, "英文本周的第一天(星期天)是${firstOfWeek.toTime()}") - val startTimes = arrayListOf<Long>() - startTimes.addAll((0..9).map { firstOfWeek + (1000L * 24 * 60 * 60 * 7 * it) }) - frags.clear() - frags.addAll(startTimes.map { WeekFragment.newInstance(it) }) - vp_week.adapter = WeekViewPagerAdapter(childFragmentManager, frags) - vp_week.offscreenPageLimit = 10 - tv_duration.text = - "${firstOfWeek.toTime("yyyy.MM.dd")}-${(firstOfWeek + 1000L * 60 * 60 * 24 * 6).toTime("yyyy.MM.dd")}" - vp_week.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int - ) { - - } - - override fun onPageSelected(position: Int) { - tv_duration.text = "${startTimes[vp_week.currentItem].toTime("yyyy.MM.dd")} - ${ - (startTimes[vp_week.currentItem] + 1000L * 24 * 60 * 60 * 6).toTime("yyyy.MM.dd") - }" - } - - override fun onPageScrollStateChanged(state: Int) { - } - }) - tv_last_week.setOnClickListener { - vp_week.setCurrentItem( - Math.max( - vp_week.currentItem - 1, - 0 - ), true - ) - } - tv_next_week.setOnClickListener { - vp_week.setCurrentItem( - Math.min( - vp_week.currentItem + 1, - 9 - ), true - ) - } - iv_last.setOnClickListener { tv_last_week.callOnClick() } - iv_next.setOnClickListener { tv_next_week.callOnClick() } - } - - private fun getMedal(stuId: String) { - HttpManager.stuGoog(stuId).requestByF(this) { _, data -> - medalList.clear() - medalList.addAll(data ?: arrayListOf()) - tv_1.visibility = if (medalList.isEmpty()) View.GONE else{ - medalList.add(Medal("更多","",0,0,"",1)) - View.VISIBLE - } - medalAdapter.notifyDataSetChanged() - } - } - - /** - * 显示课时信息 - */ - private fun refreshCourseInfo() { - val current = course[myCourseAdapter.checked] - val total = "总课时数 ${current.totalNums}" - tv_total.text = SpanBuilder(total).size(0, 4, 12).build() - val used = "已扣课时数 ${current.deductedNums}" - tv_used.text = SpanBuilder(used).size(0, 5, 12).build() - val last = "剩余课时数 ${current.remainingNums}" - tv_last.text = SpanBuilder(last).size(0, 5, 12).build() - } - - fun notifyWeekCheckChanged(time: Long) { - currentDate = time - frags.forEach { - if (it.isAdded) - it.refreshAdapter() - } - getSchedule() - } - - @SuppressLint("SetTextI18n") - private fun getSchedule() { - if (storeId.isEmpty()) - myToast("请先选择门店") - else - HttpManager.weeksOfCourseDetails(currentStudent ?: "", storeId, currentDate.toTime("yyyy-MM-dd")) - .requestByF(this) { _, data -> - data?.let { - tv_address.text = it.name + " " + formatDistance(it.distance.toString()) + "km" - scheduleList.clear() - scheduleList.addAll(it.data?: arrayListOf()) - tv_address.setOnClickListener {_-> - if (it.lat.isNotEmpty()){ - val mapTypeDialog = MapTypeDialog() - mapTypeDialog.callback = object :StringCallback{ - override fun onResult(rst: String) { - if(rst == "b"){ - ThirdPartyMapsGuide.goToBaiduActivity(requireContext(),it.name,it.lon.toDouble(),it.lat.toDouble()) - }else if (rst == "a"){ - ThirdPartyMapsGuide.goToGaoDeMap(requireContext(),it.name,it.lon,it.lat) - }else{ - ThirdPartyMapsGuide.goToTencentMap(requireContext(),it.name,it.lon.toDouble(),it.lat.toDouble()) - } - } - } - mapTypeDialog.showAllowingStateLoss(childFragmentManager,"map") - } - } - } - - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == Activity.RESULT_OK) { - if (requestCode == 2&&data!=null){ - currentStudent = data.getStringExtra("stuId") - } - getData() - } - } - - companion object { - var currentDate = 0L //当前选择日期 - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt deleted file mode 100644 index 3b4b049..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt +++ /dev/null @@ -1,380 +0,0 @@ -package com.dollearn.student.ui.course - -import android.annotation.SuppressLint -import android.content.Intent -import android.graphics.Paint -import android.view.View -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.invisible -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.WeparkApplication -import com.dollearn.student.dialog.ChooseCouponDialog -import com.dollearn.student.dialog.ChooseStudentDialog -import com.dollearn.student.dialog.ConfirmShopDialog -import com.dollearn.student.dialog.PayDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.* -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.PayResultActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.ui.home.adapter.LessonCountAdapter -import com.dollearn.student.ui.home.adapter.StudentAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import com.dollearn.student.utils.pay.PayListener -import com.dollearn.student.utils.pay.PayUtil -import kotlinx.android.synthetic.main.activity_join_course.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.jetbrains.anko.startActivityForResult -import org.jetbrains.anko.textColorResource -import java.math.BigDecimal - -class JoinCourseActivity : TransparentStatusBarActivity(), PayListener { - override fun setContentView() = R.layout.activity_join_course - private val isContinue by lazy { - try { - intent.getBooleanExtra("isContinue", false) - } catch (_: Exception) { - false - } - } - - private val orderId by lazy { intent.getStringExtra("orderId") } //续课有此字段 - - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - HomeBannerAdapter(bannerImg, this) - } - - private val paymentId by lazy { intent.getStringExtra("paymentId") } //如果不是空 表示来支付的 - - private val course by lazy { intent.getParcelableExtra<Course>("course")!! } - private val courseCount by lazy { intent.getIntExtra("courseCount",0) } //从福利折扣进来的时候有此字段,需要默认选择此课时 - - private val arrayListOf = arrayListOf<String>() - private val lessonCountAdapter = LessonCountAdapter(arrayListOf) - - private val students = arrayListOf<Student>() - private val studentAdapter = StudentAdapter(students, StudentAdapter.TYPE_COURSE_DETAIL) - - private val couponList = arrayListOf<Coupon>() - private var chooseCouponId = 0L//已选优惠券id - private var chooseCouponMoney = 0.0//已选优惠券价格 - - private var payPrice = 0.0 - private var payCoin = 0 - - - override fun initClick() { - tv_add_student.clickDelay { - ChooseStudentDialog.show( - supportFragmentManager, - ChooseStudentDialog.TYPE_COURSE, - students, - object : ChooseStudentDialog.ResultCallback { - override fun checked(list: List<Student>) { - students.clear() - students.addAll(list) - studentAdapter.notifyDataSetChanged() - refreshPrice(course!!.list[lessonCountAdapter.checked]) - } - }) - } - tv_coupon.clickDelay { - val chooseCouponDialog = ChooseCouponDialog() - chooseCouponDialog.arguments = - bundleOf("list" to couponList, "checked" to chooseCouponId) - chooseCouponDialog.callback = object : StringCallback { - override fun onResult(rst: String) { - chooseCouponId = rst.toLong() - val coupon = couponList.filter { it.id == chooseCouponId }.firstOrNull() - chooseCouponMoney = (coupon?.favorable?:"0.0").toDouble() - tv_coupon.text = "-${coupon?.favorable}元" - refreshPrice(course!!.list[lessonCountAdapter.checked],true) - } - } - chooseCouponDialog.showAllowingStateLoss(supportFragmentManager, "coupon") - } - tv_action.clickDelay { - if (students.isNullOrEmpty()) - myToast("请选择运动营成员") - else - ConfirmShopDialog.show(supportFragmentManager, - course.storeCoverDrawing ?: "", - course.storeName, - course.storeAddress, - if (course.distance == null) "" else "${course.distance}km", - object : StringCallback { - override fun onResult(rst: String) { - PayDialog.show(supportFragmentManager, false, object : StringCallback { - override fun onResult(rst: String) { - pay(rst.toInt()) - } - - }, payPrice, payCoin) - } - }) - } - } - - @SuppressLint("SetTextI18n") - override fun initView() { - banner.adapter = bannerAdapter - if (isContinue){ - tv_action.text = "续课" - tv_add_student.invisible() //安雪晖:续课不能修改成员 - studentAdapter.delable = false - } - if (!paymentId.isNullOrEmpty()) - tv_action.text = "立即支付" - - rv_lesson_count.layoutManager = GridLayoutManager(this, 3) - rv_student.layoutManager = LinearLayoutManager(this) - rv_student.adapter = studentAdapter - studentAdapter.delCallback = object : StringCallback { - override fun onResult(rst: String) { - students.removeAt(rst.toInt()) - studentAdapter.notifyDataSetChanged() - refreshPrice(course!!.list[lessonCountAdapter.checked]) - } - } - course?.apply { - bannerImg.addAll(detailDrawing.split(",").map { Banner(url = it) }) - bannerAdapter.notifyDataSetChanged() - banner.currentItem = 1 - tv_name.text = name - tv_week.text = "毎${weeks.joinToString("、") { it }}" - tv_time.text = times?.joinToString(" | ") - tv_shop.text = storeName - tv_address.text = storeAddress - arrayListOf.addAll(list.map { "${it.classHours}课时" }) - if (courseCount!=0) //有默认选中的课时 - lessonCountAdapter.checked = list.map { it.classHours }.indexOf(courseCount) - rv_lesson_count.adapter = lessonCountAdapter - lessonCountAdapter.setOnItemClickListener { view, position -> - lessonCountAdapter.checked = position - refreshPrice(list[position]) - lessonCountAdapter.notifyDataSetChanged() - } - if (!student.id.isNullOrEmpty()) { - student.stuId = student.id - students.add(student) - studentAdapter.notifyDataSetChanged() - } - refreshPrice(list[lessonCountAdapter.checked]) - when(type){ - 2->{ //假期班 - gp_count.gone() - mll_class_yxq.visible() - mtv_class_yxq.text = time - mtvtag.text = "假期班" - } - 3->{ //体验课 - gp_count.gone() - mll_class_yxq.visible() - mtvtag.text = "体验课" - cl_time.gone() - } - else->{ - mtvtag.text = "常规班" - } - } - } - PayUtil.addPayListener(this) - EventBus.getDefault().register(this) - } - - @Subscribe - fun onSwitch(e: EmptyEvent) { - - } - - private fun refreshPrice(data: Lesson?,changeByCoupon:Boolean = false) { - val size = if (students.size == 0) 1 else students.size - data?.apply { - //1.是否有玩湃币价格 —— 独立判断 - payCoin = playPaiCoin * size - if (payCoin == 0) - tv_coin_price.gone() - else { - tv_coin_price.visible() - tv_coin_price.text = SpanBuilder("玩湃币:%d币".format(payCoin)).color( - this@JoinCourseActivity, - 0, - 4, - R.color.textColor - ).build() - } - - //2.支付价 —— 独立判断 - if (paymentPrice == 0.0 || paymentPrice == null) { //没有支付价tv_price.gone() - tv_vip_price.gone() - } else { //有支付价,显示支付价,并判断是否有会员价或划线价 - payPrice = paymentPrice * size - if (!changeByCoupon){ //如果是选择优惠券后导致的价格变化 不用重新获取可用优惠券 - chooseCouponMoney = 0.0 - chooseCouponId = 0L - getCoupon(payPrice) - } - payPrice = sub(payPrice ,chooseCouponMoney) - tv_price.text = "¥%s".format(payPrice.toString()) - - //3.会员价或划线价 - if (paymentPrice <= vipPrice ?: 0.0) { //a.支付价==会员价,说明我是会员,展示划线价; b.支付价小于会员价,说明是折扣价,展示划线价 - if (originalPrice ?: 0.0 != 0.0 && originalPrice != paymentPrice) { //有划线价且划线价不等于支付价,才显示划线价 - tv_vip_price.text = "¥%.2f".format((originalPrice?:0.0)*size) - tv_vip_price.textColorResource = R.color.textColor66 - tv_vip_price.paintFlags = - tv_vip_price.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - } else //否则啥也不展示 - tv_vip_price.gone() - } else if (vipPrice ?: 0.0 != 0.0) { - tv_vip_price.text = - SpanBuilder("会员价:¥%s".format(((vipPrice?:0.0)*size).toString())).color( - this@JoinCourseActivity, - 0, - 4, - R.color.textColor - ).build() - } else - tv_vip_price.gone() - } - } - } - - private fun sub(d1:Double,d2:Double):Double{ - val b1 = BigDecimal(d1.toString()) - val b2 = BigDecimal(d2.toString()) - return b1.subtract(b2).toDouble() - } - - private fun getCoupon(price: Double) { - HttpManager.queryAvailableCouponList( - course!!.id, - price, - WeparkApplication.lat, - WeparkApplication.lon - ).request(this) { _, data -> - couponList.clear() - couponList.addAll(data ?: arrayListOf()) - if (chooseCouponId !in couponList.map { it.id }) { //之前选中的优惠券不在可用列表 - chooseCouponId = 0 - chooseCouponMoney = 0.0 - tv_coupon.text = "去选择" - } - cl_coupon.visibility = if (data.isNullOrEmpty()) View.GONE else{ - tv_coupon_count.text = "(${data.size}张可用)" - View.VISIBLE - } - } - } - - private fun pay(payType: Int) { - if (!paymentId.isNullOrEmpty()) - HttpManager.payment( - payType, - course.id, - paymentId!!, - course.list[lessonCountAdapter.checked].classHours, - students.joinToString(";") { it.id ?: "" }, - if (chooseCouponId == 0L) 2 else 1, - chooseCouponId - ).request(this, false, success = { _, data -> -// if (chooseCouponId!=0L){ -// getCoupon(payPrice) -// } - if (payType == 2) { - PayUtil.aliPay(this, data?.orderInfo ?: "") - } else if (payType == 3) { - EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页 - onPaySuccess() - } else { - PayUtil.initWeChatPay(this, Const.WX_APP_ID) - PayUtil.weChatPay(data!!) - } - }) { _, msg -> - startActivityForResult<PayResultActivity>(1, "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED, "msg" to msg) - } - else { - HttpManager.paymentCourse( - payType, - course.id, - course.list[lessonCountAdapter.checked].id, - if (payType == 3) payCoin.toDouble() else payPrice+chooseCouponMoney, - students.joinToString(";") { it.id ?: "" }, - chooseCouponId,orderId - ).request(this, false, success = { _, data -> - if (chooseCouponId!=0L){ - getCoupon(payPrice) - } - if (payType == 2) { - PayUtil.aliPay(this, data?.orderInfo ?: "") - } else if (payType == 3) { - EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页 - onPaySuccess() - } else { - PayUtil.initWeChatPay(this, Const.WX_APP_ID) - PayUtil.weChatPay(data!!) - } - }) { _, msg -> - startActivityForResult<PayResultActivity>( - 1, - "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED, - "msg" to msg - ) - } - } - - } - - override fun onPaySuccess() { - startActivityForResult<PayResultActivity>( - 1, - "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_SUC else PayResultActivity.TYPE_COURSE_SUC, - "lessonId" to course.list[lessonCountAdapter.checked].id - ) - finish() - } - - override fun onPayCancel() { - } - - override fun onPayError(msg: String) { - startActivityForResult<PayResultActivity>( - 1, - "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED - ) - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_OK&&requestCode == 1) { - tv_action.postDelayed({ - PayDialog.show(supportFragmentManager, false, object : StringCallback { - override fun onResult(rst: String) { - pay(rst.toInt()) - } - - }, payPrice, payCoin) - }, 500) - } - } - - override fun onDestroy() { - super.onDestroy() - PayUtil.removePayListener(this) - PayUtil.unregisterApp() - EventBus.getDefault().unregister(this) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt index a44aa48..3adcfa6 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt @@ -5,7 +5,7 @@ import cn.sinata.xldutils.utils.* import cn.sinata.xldutils.visible import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner import com.dollearn.student.network.entity.JoinedCourse @@ -33,10 +33,7 @@ override fun initClick() { tv_action.clickDelay { - showDialog() - HttpManager.queryCourseInfo(course?.coursePackageId?:"", WeparkApplication.lat, WeparkApplication.lon).request(this){ _, data-> - startActivity<JoinCourseActivity>("paymentId" to id,"course" to data,"isContinue" to (tv_action.text == "续课")) - } + } } diff --git a/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt index f2241a9..08504fd 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt @@ -56,12 +56,7 @@ bg_filter.setOnClickListener { cb_type.isChecked = false } - adapter.setOnItemClickListener { view, position -> - if (datas[position].payStatus == 1) //待支付,跳转支付详情页 - startActivityForResult<UnPayCourseDetailActivity>(1,"orderId" to datas[position].orderId,"id" to datas[position].coursePayId) - else - startActivityForResult<JoinedCourseDetailActivity>(1,"orderId" to datas[position].orderId,"id" to datas[position].coursePayId) - } + } override fun initView() { diff --git a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt index 0028892..746c361 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt @@ -3,11 +3,10 @@ import android.content.Intent import android.view.View import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.utils.SpanBuilder import cn.sinata.xldutils.utils.showAllowingStateLoss import cn.sinata.xldutils.utils.toTime import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.ChooseMonthDialog import com.dollearn.student.dialog.FilterPop import com.dollearn.student.network.HttpManager @@ -73,15 +72,7 @@ } tv_buy.setOnClickListener { - showDialog() - HttpManager.queryCourseInfo(courseId!!, WeparkApplication.lat, WeparkApplication.lon,stuId) - .request(this) { _, data -> - startActivityForResult<JoinCourseActivity>( - 1, - "course" to data, - "isContinue" to true - ) - } + } } diff --git a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt deleted file mode 100644 index f516e46..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.dollearn.student.ui.course - -import androidx.fragment.app.Fragment -import com.dollearn.student.R -import com.dollearn.student.dialog.TimeFilterPop -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.activity_reserve_record.* - -class ReserveRecordActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_reserve_record - - val id by lazy { intent.getStringExtra("id")} //运动营成员id - var search:String? = null - var time:Int? = null - private val frags = arrayListOf<Fragment>() - - override fun initClick() { - tv_search.clickDelay { - val s = et_search.text.toString() - search = if (s.isNullOrEmpty()) null else s - (frags[view_pager.currentItem] as ReserveRecordFragment).refresh() - } - - cb_type.setOnCheckedChangeListener { buttonView, isChecked -> - if (isChecked){ - val timeFilterPop = TimeFilterPop(this) - timeFilterPop.setCallback(object :StringCallback{ - override fun onResult(rst: String) { - cb_type.text = rst - time = when(rst){ - "最近一周"->1 - "最近一月"->2 - "最近一年"->3 - else->0 - } - (frags[view_pager.currentItem] as ReserveRecordFragment).refresh() - } - }) - timeFilterPop.showAsDropDown(cb_type) - timeFilterPop.setOnDismissListener { - cb_type.isChecked = false - } - } - } - } - - override fun initView() { - frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_ALL)) - frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_UN_STUDY)) - frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_FINISH)) - frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_CANCELED)) - tab_top.setViewPager(view_pager, arrayOf("全部","待上课","已完成","已取消"),this,frags) - tv_1.text = "当前运动营成员:"+intent.getStringExtra("name") - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt deleted file mode 100644 index e2eb08d..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.dollearn.student.ui.course - -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.ReserveRecord -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.course.adapter.ReserveRecordAdapter -import kotlinx.android.synthetic.main.layout_common_list.* - -class ReserveRecordFragment : BaseFragment() { - override fun contentViewId() = R.layout.layout_common_list - - private val type by lazy { arguments?.getInt("type", TYPE_ALL)?: TYPE_ALL } - private var page = 1 - private val list = arrayListOf<ReserveRecord>() - private val adapter = ReserveRecordAdapter(list) - private val stuId by lazy { (requireActivity() as ReserveRecordActivity).id?:"" } - - override fun onFirstVisibleToUser() { - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - adapter.stuId = stuId - refreshLayout.setOnRefreshListener { - page = 1 - getData() - } - refreshLayout.setOnLoadMoreListener { - page++ - getData() - } - getData() - } - - fun refresh(){ - refreshLayout.autoRefresh() - } - - private fun getData(){ - val act = requireActivity() as ReserveRecordActivity - HttpManager.stuAppointList(page,stuId,type,act.time,act.search).requestByF(this,success = { _, data-> - if (page == 1) - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data.isNullOrEmpty()) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - }){_,_-> - if (page == 1) - refreshLayout.finishRefresh(false) - else - refreshLayout.finishLoadMore(false) - page-- - } - } - - companion object{//0=全部 1=待上课 2=已完成 3=已取消 - const val TYPE_ALL = 0 - const val TYPE_UN_STUDY = 1 - const val TYPE_FINISH = 2 - const val TYPE_CANCELED = 3 - fun newInstance(type:Int):ReserveRecordFragment{ - val reserveRecordFragment = ReserveRecordFragment() - reserveRecordFragment.arguments = bundleOf("type" to type) - return reserveRecordFragment - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt deleted file mode 100644 index ef02a49..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt +++ /dev/null @@ -1,206 +0,0 @@ -package com.dollearn.student.ui.course - -import android.content.Intent -import android.graphics.Paint -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.invisible -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.PayDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.JoinedCourse -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.PayResultActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.ui.home.adapter.LessonCountAdapter -import com.dollearn.student.ui.home.adapter.StudentAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import com.dollearn.student.utils.pay.PayListener -import com.dollearn.student.utils.pay.PayUtil -import kotlinx.android.synthetic.main.activity_join_course.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.jetbrains.anko.startActivityForResult -import org.jetbrains.anko.textColorResource - -class UnPayCourseDetailActivity : TransparentStatusBarActivity(), PayListener { - override fun setContentView() = R.layout.activity_join_course - - private val id by lazy { intent.getStringExtra("id")?:"" } - private val orderId by lazy { intent.getStringExtra("orderId")?:"" } - - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - HomeBannerAdapter(bannerImg, this) - } - private val arrayListOf = arrayListOf<String>() - private val lessonCountAdapter = LessonCountAdapter(arrayListOf) - - private val students = arrayListOf<Student>() - private val studentAdapter = StudentAdapter(students, StudentAdapter.TYPE_COURSE_CHOOSE) - - private var course:JoinedCourse? = null - - override fun initClick() { - } - - override fun initView() { - banner.adapter = bannerAdapter - tv_action.text = "立即支付" - tv_add_student.invisible() //安雪晖:待支付不能修改成员 - studentAdapter.delable = false - rv_lesson_count.layoutManager = GridLayoutManager(this, 3) - rv_student.layoutManager = LinearLayoutManager(this) - rv_student.adapter = studentAdapter - PayUtil.addPayListener(this) - EventBus.getDefault().register(this) - getDetail() - } - - private fun getDetail(){ - HttpManager.registeredData(id,orderId).request(this){ _, data-> - course = data - data?.apply { - bannerImg.addAll((detailDrawing?:"").split(",").map { Banner(url = it) }) - bannerAdapter.notifyDataSetChanged() - banner.currentItem = 1 - tv_name.text = coursePackageName - tv_week.text = weeks?.replace(";","、") - tv_time.text = courseTimeFrame - tv_shop.text = storeName - tv_address.text = storeAddress - - arrayListOf.addAll(list.filter { it.classHours == chooseHours }.map { "${it.classHours}课时" }) - lessonCountAdapter.checked = 0 - rv_lesson_count.adapter = lessonCountAdapter - - when(type){ - 2->{ //假期班 - gp_count.gone() - mll_class_yxq.visible() - mtv_class_yxq.text = time - mtvtag.text = "假期班" - } - 3->{ //体验课 - gp_count.gone() - mll_class_yxq.visible() - mtvtag.text = "体验课" - cl_time.gone() - } - else->{ - mtvtag.text = "常规班" - } - } - - HttpManager.listOfStu().request(this@UnPayCourseDetailActivity){ _, data-> - students.addAll((data?: arrayListOf()).filter { it.stuId in stuIds }) - studentAdapter.checked.addAll(stuIds) - studentAdapter.notifyDataSetChanged() - } - - if (payPrice?:0.0 == 0.0) - tv_price.gone() - else{ - tv_price.text = "¥%s".format(payPrice.toString()) - if (orinPrice?:0.0!=0.0&&orinPrice!=payPrice){//享受了优惠,展示原价 - tv_vip_price.text = "¥%s".format(orinPrice.toString()) - tv_vip_price.textColorResource = R.color.textColor66 - tv_vip_price.paintFlags = - tv_vip_price.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - } - } - - if (coinPrice?:0 == 0) - tv_coin_price.gone() - else - tv_coin_price.text = SpanBuilder("玩湃币:%d币".format(coinPrice)).color(this@UnPayCourseDetailActivity,0,4,R.color.textColor).build() - - tv_action.clickDelay { - PayDialog.show(supportFragmentManager, false, object : StringCallback { - override fun onResult(rst: String) { - pay(rst.toInt()) - } - - }, payPrice, coinPrice) - } - } - } - } - - - private fun pay(payType: Int) { - HttpManager.paymentCourse( - payType, - course?.coursePackageId?:"", - course!!.list[lessonCountAdapter.checked].id, - if (payType == 3) course!!.coinPrice!!.toDouble() else course!!.payPrice!!, - students.joinToString(";") { it.id ?: "" }, - 0,orderId - ).request(this, false, success = { _, data -> - if (payType == 2) { - PayUtil.aliPay(this, data?.orderInfo ?: "") - } else if (payType == 3) { - EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页 - onPaySuccess() - } else { - PayUtil.initWeChatPay(this, Const.WX_APP_ID) - PayUtil.weChatPay(data!!) - } - }) { _, msg -> - startActivityForResult<PayResultActivity>( - 1, - "type" to PayResultActivity.TYPE_COURSE_FAILED, - "msg" to msg - ) - } - } - - @Subscribe - fun onSwitch(e: EmptyEvent) { - - } - - override fun onPaySuccess() { - startActivityForResult<PayResultActivity>( - 1, - "type" to PayResultActivity.TYPE_COURSE_SUC, - "lessonId" to course!!.list[lessonCountAdapter.checked].id - ) - finish() - } - - override fun onPayCancel() { - } - - override fun onPayError(msg: String) { - startActivityForResult<PayResultActivity>( - 1, - "type" to PayResultActivity.TYPE_COURSE_FAILED - ) - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_OK&&requestCode == 1) { - tv_action.postDelayed({ - tv_action.callOnClick() - }, 500) - } - } - - override fun onDestroy() { - super.onDestroy() - PayUtil.removePayListener(this) - PayUtil.unregisterApp() - EventBus.getDefault().unregister(this) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt deleted file mode 100644 index 219cf9a..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.dollearn.student.ui.course - -import android.util.Log -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.GridLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import cn.sinata.xldutils.utils.parserTime -import cn.sinata.xldutils.utils.toTime -import com.dollearn.student.R -import com.dollearn.student.ui.course.adapter.WeekAdapter -import com.dollearn.student.utils.Const -import kotlinx.android.synthetic.main.fragment_week.* - -class WeekFragment:BaseFragment() { - override fun contentViewId() = R.layout.fragment_week - - val startTime by lazy { arguments?.getLong("startTime",0L)?:0L } //第一天的时间戳 - val list = arrayListOf<Long>() - private val adapter = WeekAdapter(list) - - override fun onFirstVisibleToUser() { - Log.e(Const.Tag,"本周第一天${startTime.toTime("yyyy-MM-dd")}") - rv_week.layoutManager = GridLayoutManager(requireContext(),7) - rv_week.adapter = adapter - list.addAll((0 until 7).map { - startTime+(1000L*it*24*60*60) - }) - adapter.notifyDataSetChanged() - adapter.setOnItemClickListener { view, position -> - if (list[position].toTime("yyyy-MM-dd 00:00:00").parserTime() >= System.currentTimeMillis().toTime("yyyy-MM-dd 00:00:00").parserTime()) - (parentFragment as CourseFragment).notifyWeekCheckChanged(list[position]) - } - } - - fun refreshAdapter(){ - adapter.notifyDataSetChanged() - } - - companion object{ - fun newInstance(startTime:Long):WeekFragment{ - val weekFragment = WeekFragment() - weekFragment.arguments = bundleOf("startTime" to startTime) - return weekFragment - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt index b2c1730..02565b5 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt @@ -5,7 +5,7 @@ import cn.sinata.xldutils.utils.SpanBuilder import cn.sinata.xldutils.visible import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner import com.dollearn.student.network.request @@ -31,10 +31,7 @@ override fun initClick() { tv_action.clickDelay { if (courseId!=null){ - showDialog() - HttpManager.queryCourseInfo(courseId!!,WeparkApplication.lat,WeparkApplication.lon).request(this){_,data-> - startActivity<JoinCourseActivity>("course" to data,"courseCount" to courseCount) - } + } } } @@ -46,7 +43,7 @@ } private fun getDetail(){ - HttpManager.discountCourseDatas(id, WeparkApplication.lat, WeparkApplication.lon).request(this){ _, data-> + HttpManager.discountCourseDatas(id, DollearnApplication.lat, DollearnApplication.lon).request(this){ _, data-> data?.apply { courseId = coursePackageDiscountId bannerImg.addAll((detailDrawing?:"").split(",").map { Banner(url = it) }) diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt deleted file mode 100644 index 746bb91..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Data -import com.dollearn.student.utils.interfaces.StringCallback -import java.util.ArrayList - -class CourseScheduleAdapter(scheduleList: ArrayList<Data>):HFRecyclerAdapter<Data>(scheduleList, R.layout.item_course_schedule) { - var callback:StringCallback? = null - override fun onBind(holder: ViewHolder, position: Int, data: Data) { - // holder.setText(R.id.tv_address,"${data.areaName} ${data.siteDistance}km") - val rvSchedule = holder.bind<RecyclerView>(R.id.rv_schedule) - rvSchedule.layoutManager = LinearLayoutManager(context) - // rvSchedule.adapter = ScheduleAdapter(data.courses,callback) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt index 45f6170..3009656 100644 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt +++ b/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt @@ -9,7 +9,6 @@ import com.dollearn.student.network.entity.Medal import com.dollearn.student.ui.course.PracticeListActivity import com.dollearn.student.ui.home.FieldActivity -import com.dollearn.student.ui.worldcup.MyWorldActivity import org.jetbrains.anko.imageResource import org.jetbrains.anko.startActivity import java.util.ArrayList @@ -29,8 +28,6 @@ 1->(context as BaseActivity).finish() 3->context.startActivity<FieldActivity>() 4->context.startActivity<PracticeListActivity>("stuId" to stuId) - 5->context.startActivity<MyWorldActivity>() - 6->context.startActivity<MyWorldActivity>() } } } diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt deleted file mode 100644 index d662fc3..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.util.TypedValue -import android.widget.TextView -import androidx.core.content.ContextCompat.startActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.visible -import com.google.gson.Gson -import com.dollearn.student.R -import com.dollearn.student.network.entity.* -import com.dollearn.student.ui.welfare.CouponActivity -import com.dollearn.student.utils.extention.clickDelay -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.support.v4.startActivity -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class PaySuccessCouponAdapter(names: ArrayList<Coupon>) : - HFRecyclerAdapter<Coupon>(names, R.layout.item_coupon) { - var isVip = false - override fun onBind(holder: ViewHolder, position: Int, data: Coupon) { - val tvPrice = holder.bind<TextView>(R.id.tv_price) - holder.bind<TextView>(R.id.iv_check).gone() - holder.bind<TextView>(R.id.mtcCheck).apply { - clickDelay { - context.startActivity<CouponActivity>() - } - }.visible() - if (!isVip){ - val rule = Gson().fromJson<RuleModel>(data.content, RuleModel::class.java) - if (data.type == 3){ - tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,15f) - tvPrice.text = rule.experienceName - }else{ - tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f) - tvPrice.text = SpanBuilder("¥${if (data.type == 2) rule.conditionalAmount else rule.deductionAmount}").size(0, 1, 17).build() - } - holder.setText(R.id.tv_condition, if (data.type == 1) "满${rule.conditionalAmount}元可用" else "") - holder.setText(R.id.tv_deadline, "有效期:${data.timePeriod}") - }else{ - tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f) - tvPrice.text = "${data.favorable}元" - holder.setText(R.id.tv_condition, data.useCondition) - holder.setText(R.id.tv_deadline, "有效期:${data.effectiveTime}") - } - holder.setText(R.id.tv_name, data.name) - - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt deleted file mode 100644 index 7eb75da..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt +++ /dev/null @@ -1,91 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import androidx.core.os.bundleOf -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.utils.parserTime -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.visible -import com.google.gson.Gson -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckQrCodeDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Duration -import com.dollearn.student.network.entity.QrBean -import com.dollearn.student.network.entity.ReserveRecord -import com.dollearn.student.network.request -import com.dollearn.student.ui.course.PracticeListActivity -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class ReserveRecordAdapter(list: ArrayList<ReserveRecord>) : - HFRecyclerAdapter<ReserveRecord>(list, R.layout.item_reserve_record) { - var stuId = "" - override fun onBind(holder: ViewHolder, position: Int, data: ReserveRecord) { - val state = holder.bind<TextView>(R.id.tv_state) - val action = holder.bind<TextView>(R.id.tv_action) - holder.setText(R.id.tv_name, data.coursePackageName) - holder.setText(R.id.tv_course, "${data.courseHours}课时") - holder.setText(R.id.tv_address, data.storeNameAddr) - holder.setText(R.id.tv_time, data.timeFrame) - when (data.status) {//1待上课 2已开始 3已完成 4已取消,5已请假 - 1 -> { - action.visible() - action.text = "二维码" - action.backgroundResource = R.drawable.bg_orange_2dp - state.text = "待上课" - state.textColorResource = R.color.colorPrimary - } - 2 -> { - action.gone() - state.text = "已开始" - state.textColorResource = R.color.textColor99 - } - 3 -> { - action.text = "课后练习" - action.visible() - action.backgroundResource = R.drawable.bg_blue_4dp - state.text = "已完成" - state.textColorResource = R.color.textColor99 - } - 4 -> { - action.gone() - state.text = "已取消" - state.textColorResource = R.color.textColor99 - } - 5 -> { - action.gone() - state.text = "已请假" - state.textColorResource = R.color.textColor99 - } - } - action.setOnClickListener { - if (data.status == 1) { -// HttpManager.cancelCourse(data.courseStuRecordId).request(context as BaseActivity){_,_-> -// context.myToast("取消成功") -// data.status = 4 -// notifyItemChanged(position) -// } - val duration = listOf( - Duration( - data.timeFrame.substring(0, 19).parserTime()/1000, - "${data.timeFrame.substring(0, 11)}${data.timeFrame.substring(20, 28)}".parserTime()/1000 - ) - ) - val qrBean = QrBean(data.sid, data.rid, data.userId, duration) - val dialog = CheckQrCodeDialog() - dialog.arguments = bundleOf("qrinfo" to Gson().toJson(qrBean)) - dialog.showAllowingStateLoss((action.context as BaseActivity).supportFragmentManager, "checkqr") - } else if (data.status == 3) { - context.startActivity<PracticeListActivity>("stuId" to stuId) - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt deleted file mode 100644 index f2dd755..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.toTime -import com.dollearn.student.R -import com.dollearn.student.ui.course.CourseFragment -import java.util.ArrayList - -class WeekAdapter(list: ArrayList<Long>):HFRecyclerAdapter<Long>(list, R.layout.item_week_course) { - override fun onBind(holder: ViewHolder, position: Int, data: Long) { - val date = data.toTime("MM.dd") - holder.bind<TextView>(R.id.tv_english).apply { - text = when(position){ - 0->"S" - 1->"M" - 2->"T" - 3->"W" - 4->"T" - 5->"F" - 6->"S" - else->"" - } - isSelected = date == CourseFragment.currentDate.toTime("MM.dd") - } - holder.setText(R.id.tv_date,date) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt deleted file mode 100644 index c845851..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentPagerAdapter -import com.dollearn.student.ui.course.WeekFragment - -class WeekViewPagerAdapter(fragmentManager: FragmentManager,val frags:ArrayList<WeekFragment>):FragmentPagerAdapter(fragmentManager, BEHAVIOR_SET_USER_VISIBLE_HINT) { - override fun getCount() = frags.size - - override fun getItem(position: Int) = frags[position] -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt deleted file mode 100644 index 9a72fb8..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.dollearn.student.ui.discovery - -import androidx.recyclerview.widget.LinearLayoutManager -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.discovery.adapter.QrAdapter -import kotlinx.android.synthetic.main.activity_my_qr.* - -class MyQrCodeActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_my_qr - - private val list = arrayListOf<Student>() - private val adapter = QrAdapter(list) - - override fun initClick() { - } - - override fun initView() { - rv_student.layoutManager = LinearLayoutManager(this) - rv_student.adapter = adapter - getTip() - getData() - } - - private fun getData() { - HttpManager.listOfStu(3,1).request(this){ _, data-> - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - } - } - - private fun getTip(){ - HttpManager.getH5(6).request(this){_,data-> - tv_tip.text = data - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt deleted file mode 100644 index e1531b4..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt +++ /dev/null @@ -1,206 +0,0 @@ -package com.dollearn.student.ui.discovery - -import android.Manifest -import android.view.animation.AnimationUtils -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.visible -import com.amap.api.location.AMapLocationListener -import com.dollearn.student.R -import com.dollearn.student.WeparkApplication -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.CommonData -import com.dollearn.student.network.entity.ShopListBean -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.discovery.adapter.ShopAdapter -import com.dollearn.student.ui.home.adapter.OpenCityAdapter -import com.dollearn.student.utils.AMapKit -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.extention.getInitial -import com.tbruyelle.rxpermissions2.RxPermissions -import kotlinx.android.synthetic.main.activity_shop_list.* -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.textColorResource - -/** - * 万俊杰:现在直接从首页banner进门店详情,门店列表暂时可以先不做,没得入口了 - */ -class ShopListActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_shop_list - - private val list = arrayListOf<ShopListBean>() - private val adapter = ShopAdapter(list) - private var cityCode:String? = null - private var distanceSort: Int? = null //1=升序/2=降序 - private var search:String? = null - - private val index = arrayListOf( - "A", "B", "C", "D", "E", "F", "G", "H", "I", - "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" - ) - //筛选条件 - private val cityList = arrayListOf<CommonData>() //展示数据源(搜索后过滤) - private val cityAdapter = OpenCityAdapter(cityList) - - override fun initClick() { - tv_search.clickDelay { - val s = et_search.text.toString() - search = if (s.isNullOrEmpty()) null else s - refreshLayout.autoRefresh() - } - cityAdapter.setOnItemClickListener { view, position -> - cb_city.isChecked = false - cityCode = cityList[position].code - cb_city.text = cityList[position].name - refreshLayout.autoRefresh() - } - tv_current.setOnClickListener { - if (WeparkApplication.cityCode.isNotEmpty()){ - cb_city.isChecked = false - cityCode = WeparkApplication.cityCode - cb_city.text = WeparkApplication.cityName - refreshLayout.autoRefresh() - } - } - tv_refresh.setOnClickListener { - val subscribe = - RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION) - .subscribe { - if (it){ - AMapKit.initLocation(this, AMapLocationListener { - WeparkApplication.lat = it.latitude - WeparkApplication.lon = it.longitude - WeparkApplication.province = it.province - WeparkApplication.provinceCode = "${it.adCode.substring(0,3)}000" - WeparkApplication.cityName = it.city - WeparkApplication.cityCode = "${it.adCode.substring(0,4)}00" - tv_current.text = it.city - }) - }else - myToast("没有定位权限") - } - } - adapter.setOnItemClickListener { _, position -> - startActivity<ShopDetailActivity>("id" to list[position].storeId) - } - cb_city.setOnCheckedChangeListener { _, isChecked -> - if (!isChecked) - closeFilter() - else{ - bg_filter.visible() - cl_city.visible() - val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top) - cl_city.startAnimation(loadAnimation) - } - } - - tv_distance.clickDelay { - tv_distance.textColorResource = R.color.colorPrimary - if (distanceSort == null || distanceSort == 2) - distanceSort = 1 - else - distanceSort = 2 - tv_distance.setCompoundDrawablesRelativeWithIntrinsicBounds( - 0, - 0, - if (distanceSort ==1) R.mipmap.sort_asc else R.mipmap.sort_desc, - 0 - ) - refreshLayout.autoRefresh() - } - - bg_filter.setOnClickListener { - if (cb_city.isChecked) - cb_city.isChecked = false - } - - tv_location.setOnClickListener { - RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe { - if (it){ - AMapKit.initLocation(this, AMapLocationListener { - WeparkApplication.lat = it.latitude - WeparkApplication.lon = it.longitude - EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //定位更新后 刷新福利页数据 因为商品推荐是根据经纬度来的 - WeparkApplication.province = it.province - WeparkApplication.provinceCode = "${it.adCode.substring(0, 3)}000" - WeparkApplication.cityName = it.city - WeparkApplication.cityCode = "${it.adCode.substring(0, 4)}00" - tv_distance.visible() - cb_city.visible() - ll_location.gone() - }) - } - } - } - } - - override fun initView() { - if (RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){ - tv_distance.visible() - cb_city.visible() - ll_location.gone() - }else{ - tv_distance.gone() - cb_city.gone() - ll_location.visible() - } - rv_shop.layoutManager = LinearLayoutManager(this) - rv_shop.adapter = adapter - refreshLayout.setOnRefreshListener { - getData() - } - getData() - //筛选 - rv_city.layoutManager = LinearLayoutManager(this) - rv_city.adapter = cityAdapter - side_bar.setOnSelectIndexItemListener { index -> - (0 until cityList.size).forEach { - if (index == cityList[it].name?.getInitial()) { - val manager = rv_city.layoutManager as LinearLayoutManager - manager.scrollToPositionWithOffset(it, 0) - return@setOnSelectIndexItemListener - } - } - } - //获取城市筛选项数据 - getCity() - } - - private fun getData(){ - HttpManager.storeList(cityCode,distanceSort,search).request(this,success = {_,data-> - refreshLayout.finishRefresh() - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - }){_,_-> - refreshLayout.finishRefresh(false) - } - } - - private fun getCity(){ - HttpManager.queryAllCity().request(this){_,data-> - data?.let { - cityList.clear() - index.forEach { index-> - it.filter { it.name.isNotEmpty() }.forEach { - if (index == it.name.getInitial()){ - cityList.add(it) - } - } - } - adapter.notifyDataSetChanged() - } - } - } - - private fun closeFilter(){ - bg_filter.gone() - cl_city.gone() - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt deleted file mode 100644 index 4218fe8..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.dollearn.student.ui.discovery - -import android.app.Activity -import android.content.Intent -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.dialog.ChooseStudentDialog -import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.discovery.adapter.StuManageAdapter -import com.dollearn.student.ui.home.AddStudentActivity -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_choose_student.* -import org.jetbrains.anko.startActivityForResult -import org.jetbrains.anko.support.v4.startActivityForResult - -class StudentManageActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_stu_manage - - private val list = arrayListOf<Student>() - private val adapter = StuManageAdapter(list) - override fun initClick() { - tv_add_student.setOnClickListener { - startActivityForResult<AddStudentActivity>(2,"type" to AddStudentActivity.TYPE_ADD_MATCH) - } - adapter.delCallback = object :StringCallback{ - override fun onResult(rst: String) { - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("msg" to "是否确认删除该人员?") - tipDialog.setCallback(object : TipDialog.OnClickCallback{ - override fun onOk() { - HttpManager.delParticipant(list[rst.toInt()].id?:"",list[rst.toInt()].isStudent).request(this@StudentManageActivity){_,_-> - setResult(Activity.RESULT_OK) - list.removeAt(rst.toInt()) - adapter.notifyDataSetChanged() - } - } - - override fun onCancel() { - } - }) - tipDialog.showAllowingStateLoss(supportFragmentManager,"del") - } - } - } - - override fun initView() { - rv_student.layoutManager = LinearLayoutManager(this) - rv_student.adapter = adapter - getStudent() - - } - - fun getStudent(){ - HttpManager.listOfStu(3,null).request(this){ _, data-> - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_OK){ - getStudent() - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt deleted file mode 100644 index ebe0196..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import android.view.View -import android.widget.ImageView -import androidx.core.os.bundleOf -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckQrCodeDialog -import com.dollearn.student.network.entity.Student -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.getQRcodeImg -import java.util.ArrayList - -class QrAdapter(list: ArrayList<Student>):HFRecyclerAdapter<Student>(list, R.layout.item_stu_qr) { - override fun onBind(holder: ViewHolder, position: Int, data: Student) { - val name = "姓名:${data.name}" - holder.setText(R.id.tv_name,SpanBuilder(name).color(context,3,name.length,R.color.textColor).bold(3,name.length).build()) - val age = "年龄:${data.age}岁" - holder.setText(R.id.tv_age,SpanBuilder(age).color(context,3,age.length,R.color.textColor).bold(3,age.length).build()) - val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}" - holder.bind<ImageView>(R.id.iv_qr).setImageBitmap(getQRcodeImg(context, content)) - holder.bind<View>(R.id.clicker_code).clickDelay { - val dialog = CheckQrCodeDialog() - dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name) - dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr") - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt deleted file mode 100644 index a6f17dc..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import android.view.View -import android.widget.ImageView -import androidx.core.os.bundleOf -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckQrCodeDialog -import com.dollearn.student.dialog.EditUserDialog -import com.dollearn.student.network.entity.Student -import com.dollearn.student.ui.discovery.StudentManageActivity -import com.dollearn.student.ui.home.AddStudentActivity -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.getQRcodeImg -import com.dollearn.student.utils.interfaces.StringCallback -import org.jetbrains.anko.startActivityForResult -import java.util.ArrayList - -class StuManageAdapter(list: ArrayList<Student>) :HFRecyclerAdapter<Student>(list, R.layout.item_stu_manage){ - var delCallback:StringCallback? = null - - override fun onBind(holder: ViewHolder, position: Int, data: Student) { - val name = "姓名:${data.name}" - val age = "年龄:${data.age}岁" - val phone = "联系电话:${if (data.phone.isNullOrEmpty()) "" else data.phone}" - val idcard = "身份证号:${if (data.idcard.isNullOrEmpty()) "" else data.idcard}" - holder.setText(R.id.tv_name,SpanBuilder(name).color(context,0,3,R.color.textColor66).bold(3,name.length).build()) - holder.setText(R.id.tv_age,SpanBuilder(age).color(context,0,3,R.color.textColor66).bold(3,age.length).build()) - holder.setText(R.id.tv_phone,SpanBuilder(phone).color(context,0,5,R.color.textColor66).bold(5,phone.length).build()) - holder.setText(R.id.tv_idCard,SpanBuilder(idcard).color(context,0,5,R.color.textColor66).bold(5,idcard.length).build()) - val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}" - holder.bind<ImageView>(R.id.iv_code).apply { - setImageBitmap(getQRcodeImg(context, content)) - clickDelay { - val dialog = CheckQrCodeDialog() - dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name) - dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr") - } - } - holder.bind<View>(R.id.tv_real_name).apply { - visibility = if (data.idcard.isNullOrEmpty()) View.VISIBLE else View.GONE - setOnClickListener { - //去实名 - (context as StudentManageActivity).startActivityForResult<AddStudentActivity>(1,"type" to AddStudentActivity.TYPE_EDIT_WORLD, "user" to data) - } - } - holder.bind<View>(R.id.iv_del).setOnClickListener { - delCallback?.onResult(position.toString()) - } - - holder.bind<View>(R.id.iv_edit).setOnClickListener { - EditUserDialog.show((context as BaseActivity).supportFragmentManager,data.id?:"",data.headImg?:"",data.height?:"",data.weight?:"",data.phone?:"",object : - StringCallback { - override fun onResult(rst: String) { - (context as StudentManageActivity).apply { - getStudent() - } - } - },true) - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt index 4faa023..81d464e 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt @@ -18,7 +18,6 @@ import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import kotlinx.android.synthetic.main.activity_listen.* -import org.jetbrains.anko.startActivity class ChooseVoiceActivity:TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_listen @@ -56,7 +55,7 @@ fun next(){ if (view_pager.currentItem == fragments.lastIndex){ handler?.removeMessages(0) - ResultActivity.startResult(this,day,week,season,1,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) + ResultActivity.startResult(this,day,week,season,2,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) finish() }else{ (fragments[view_pager.currentItem+1] as ChooseVoiceFragment).recover() @@ -117,7 +116,9 @@ private fun recover(){ HttpManager.teamSchedule(day,week,2).request(this){_,data-> -// view_pager.setCurrentItem(data?.topicIds?.size?:1,false) + view_pager.setCurrentItem((data?.schedule?:1)-1,false) + if (view_pager.currentItem != 0) + tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 } @@ -132,7 +133,7 @@ finish() else{ val list = (data?.subjectList?: arrayListOf()).subList(0,view_pager.currentItem).flatMap { it } - HttpManager.exitLearning(totalCount,rightCount,day,week,2,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ChooseVoiceActivity){ _, _-> + HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,2,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ChooseVoiceActivity){ _, _-> finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt index 7c1086e..d72618f 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt @@ -9,10 +9,12 @@ import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_choose_voice.* import org.jetbrains.anko.backgroundResource @@ -27,6 +29,15 @@ private val PLAY_VOICE = 1 private val TO_NEXT = 10 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private var voiceList = arrayListOf<String>() //本题音频,每题有3个音频 private val player by lazy { AudioUtils() } @@ -45,6 +56,8 @@ private val act by lazy { (requireActivity() as ChooseVoiceActivity) } + private var nowVoiceView:View? = null + override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) player.stopPlayMusic() @@ -58,6 +71,14 @@ TO_NEXT->{ if (isAdded&&!playing) (requireActivity() as ChooseVoiceActivity).next() + } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -98,57 +119,81 @@ rl_check_1.clickDelay { if (playing) return@clickDelay - dot_1.visible() - act.totalCount++ - if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){ - act.rightCount++ - data!!.subjectList[group][currentIndex].completed = true - motion.transitionToEnd() - cl_voice1.callOnClick() - }else{ - iv_error_1.visible() - dot_1.postDelayed({ - iv_error_1.gone() - dot_1.gone() - },2000) - } + if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){ + dot_1.visible() + act.totalCount++ + if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice1 + handler?.sendEmptyMessage(PLAY_RIGHT) + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_1.visible() + dot_1.postDelayed({ + iv_error_1.gone() + dot_1.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") } rl_check_2.clickDelay { if (playing) return@clickDelay - dot_2.visible() - act.totalCount++ - if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){ - act.rightCount++ - data!!.subjectList[group][currentIndex].completed = true - motion.transitionToEnd() - cl_voice2.callOnClick() - }else{ - iv_error_2.visible() - dot_1.postDelayed({ - dot_2.gone() - iv_error_2.gone() - },2000) - } + if (rl_check_1.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_2.visible() + act.totalCount++ + if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice2 + handler?.sendEmptyMessage(PLAY_RIGHT) + }else{ + + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_2.visible() + dot_1.postDelayed({ + dot_2.gone() + iv_error_2.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") + } rl_check_3.clickDelay { if (playing) return@clickDelay - dot_3.visible() - act.totalCount++ - if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){ - data!!.subjectList[group][currentIndex].completed = true - act.rightCount++ - motion.transitionToEnd() - cl_voice3.callOnClick() - }else{ - iv_error_3.visible() - dot_1.postDelayed({ - iv_error_3.gone() - dot_3.gone() - },2000) - } + if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_3.visible() + act.totalCount++ + if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + nowVoiceView = cl_voice3 + handler?.sendEmptyMessage(PLAY_RIGHT) + motion.transitionToEnd() + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_3.visible() + dot_1.postDelayed({ + iv_error_3.gone() + dot_3.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") + } cl_voice_end_1.clickDelay { @@ -292,40 +337,42 @@ override fun onStartPlay() { playing = true - if (voiceIndex == 0){ - iv1_1.gone() - iv2_1.gone() - iv_playing_1.visible() - } - if (voiceIndex == 1){ - iv1_2.gone() - iv2_2.gone() - iv_playing_2.visible() - } - if (voiceIndex == 2){ - iv1_3.gone() - iv2_3.gone() - iv_playing_3.visible() - } - if (voiceIndex == 3){ - iv1_1_end.gone() - iv2_1_end.gone() - iv_playing_1_end.visible() - } - if (voiceIndex == 4){ - iv1_2_end.gone() - iv2_2_end.gone() - iv_playing_2_end.visible() - } - if (voiceIndex == 5){ - iv1_3_end.gone() - iv2_3_end.gone() - iv_playing_3_end.visible() - } - if (voiceIndex == 6){ - iv1_4_end.gone() - iv2_4_end.gone() - iv_playing_4_end.visible() + if (!errorPlaying&&!rightPlaying){ + if (voiceIndex == 0){ + iv1_1.gone() + iv2_1.gone() + iv_playing_1.visible() + } + if (voiceIndex == 1){ + iv1_2.gone() + iv2_2.gone() + iv_playing_2.visible() + } + if (voiceIndex == 2){ + iv1_3.gone() + iv2_3.gone() + iv_playing_3.visible() + } + if (voiceIndex == 3){ + iv1_1_end.gone() + iv2_1_end.gone() + iv_playing_1_end.visible() + } + if (voiceIndex == 4){ + iv1_2_end.gone() + iv2_2_end.gone() + iv_playing_2_end.visible() + } + if (voiceIndex == 5){ + iv1_3_end.gone() + iv2_3_end.gone() + iv_playing_3_end.visible() + } + if (voiceIndex == 6){ + iv1_4_end.gone() + iv2_4_end.gone() + iv_playing_4_end.visible() + } } } @@ -379,5 +426,19 @@ showSubImage() } } + + if (rightPlaying){ + rightPlaying = false + data!!.subjectList[group][currentIndex].completed = true + nowVoiceView?.callOnClick() + } + if (errorPlaying) + errorPlaying = false } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt index 2a47c06..b305906 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt @@ -5,12 +5,17 @@ import android.widget.TextView import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment +import cn.sinata.xldutils.utils.myToast +import cn.sinata.xldutils.utils.showAllowingStateLoss import com.dollearn.student.R +import com.dollearn.student.dialog.TipDialog +import com.dollearn.student.network.Apis import com.dollearn.student.network.HttpManager import com.dollearn.student.network.requestByF import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_daily.* import org.jetbrains.anko.backgroundResource +import org.jetbrains.anko.support.v4.browse import org.jetbrains.anko.support.v4.startActivityForResult import org.jetbrains.anko.support.v4.toast @@ -34,33 +39,61 @@ getProgress() cl_1.clickDelay { showDialog("加载题目...") - HttpManager.listenSelectPicture(season, week, day).requestByF(this){_,data-> + HttpManager.listenSelectPicture(season, week, day).requestByF(this,false, {_,data-> startActivityForResult<ListenActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season) + }){_,msg-> + handleError(msg) } } cl_2.clickDelay { showDialog("加载题目...") - HttpManager.pictureSelectVoice(season, week, day).requestByF(this){_,data-> + HttpManager.pictureSelectVoice(season, week, day).requestByF(this,false, {_,data-> startActivityForResult<ChooseVoiceActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season) + }){_,msg-> + handleError(msg) } } cl_3.clickDelay { showDialog("加载题目...") - HttpManager.induceExclude(season, week, day).requestByF(this){_,data-> + HttpManager.induceExclude(season, week, day).requestByF(this,false, {_,data-> startActivityForResult<IncludeActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season) + }){_,msg-> + handleError(msg) } } cl_4.clickDelay { showDialog("加载题目...") - HttpManager.questionsAndAnswers(season, week, day).requestByF(this){_,data-> + HttpManager.questionsAndAnswers(season, week, day).requestByF(this,false, {_,data-> startActivityForResult<QAActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season) + }){_,msg-> + handleError(msg) } } cl_5.clickDelay { showDialog("加载题目...") - HttpManager.pictureMateVoice(season, week, day).requestByF(this){_,data-> + HttpManager.pictureMateVoice(season, week, day).requestByF(this,false,{_,data-> startActivityForResult<MatchActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season) + }){_,msg-> + handleError(msg) } + } + } + + private fun handleError(msg:String){ + if (msg.contains("会员")){ + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("msg" to msg,"ok" to "成为会员") + tipDialog.setCallback(object :TipDialog.OnClickCallback{ + override fun onOk() { + browse(Apis.SHARE_URL,true) + } + + override fun onCancel() { + } + }) + tipDialog.showAllowingStateLoss(childFragmentManager,"vip") + }else{ + myToast(msg) } } @@ -92,11 +125,7 @@ private fun formatProgress(progress:Int,tv:TextView){ tv.text = when(progress){ - -1->{ - tv.backgroundResource = R.drawable.bg_grey_9dp - "未开始" - } - 0->{ + -1, 0->{ tv.backgroundResource = R.drawable.bg_red_9dp "未完成" } @@ -105,7 +134,8 @@ "已完成" } else->{ - "剩余:${100-progress}%" + tv.backgroundResource = R.drawable.bg_pink_9dp + "剩余:${progress}%" } } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt index 436be11..9eab576 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt @@ -11,7 +11,7 @@ import cn.sinata.xldutils.visible import com.amap.api.location.AMapLocationListener import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.ChooseTimeDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.CommonData @@ -85,10 +85,10 @@ getShop() } tv_current.setOnClickListener { - if (WeparkApplication.cityCode.isNotEmpty()){ + if (DollearnApplication.cityCode.isNotEmpty()){ cb_city.isChecked = false - cityCode = WeparkApplication.cityCode - cb_city.text = WeparkApplication.cityName + cityCode = DollearnApplication.cityCode + cb_city.text = DollearnApplication.cityName shop = null refreshLayout.autoRefresh() getShop() @@ -100,12 +100,12 @@ .subscribe { if (it){ AMapKit.initLocation(this, AMapLocationListener { - WeparkApplication.lat = it.latitude - WeparkApplication.lon = it.longitude - WeparkApplication.province = it.province - WeparkApplication.provinceCode = "${it.adCode.substring(0,3)}000" - WeparkApplication.cityName = it.city - WeparkApplication.cityCode = "${it.adCode.substring(0,4)}00" + DollearnApplication.lat = it.latitude + DollearnApplication.lon = it.longitude + DollearnApplication.province = it.province + DollearnApplication.provinceCode = "${it.adCode.substring(0,3)}000" + DollearnApplication.cityName = it.city + DollearnApplication.cityCode = "${it.adCode.substring(0,4)}00" tv_current.text = it.city }) }else @@ -236,7 +236,7 @@ } override fun initView() { - shop = WeparkApplication.storeId + shop = DollearnApplication.storeId rv_course.layoutManager = LinearLayoutManager(this) rv_course.adapter = adapter refreshLayout.setOnRefreshListener { @@ -262,7 +262,7 @@ } rv_filter.layoutManager = LinearLayoutManager(this) rv_filter.adapter = filterAdapter - tv_current.text = SpanBuilder("当前城市:${WeparkApplication.cityName}").color(this,0,5,R.color.textColor).build() + tv_current.text = SpanBuilder("当前城市:${DollearnApplication.cityName}").color(this,0,5,R.color.textColor).build() //筛选项数据 getCity() getTypes() @@ -316,7 +316,7 @@ } private fun getShop(){ - HttpManager.queryStoreLists(WeparkApplication.lat,WeparkApplication.lon,cityCode).request(this){_,data-> + HttpManager.queryStoreLists(DollearnApplication.lat,DollearnApplication.lon,cityCode).request(this){ _, data-> storeList.clear() storeList.add(CommonData(name = "全部")) storeList.addAll(data?: arrayListOf()) diff --git a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt index 48e1bef..63c7a13 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt @@ -14,6 +14,7 @@ import com.dollearn.student.R import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.HttpManager +import com.dollearn.student.network.entity.Subject import com.dollearn.student.network.entity.SubjectBean import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity @@ -116,7 +117,9 @@ private fun recover(){ HttpManager.teamSchedule(day,week,3).request(this){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) + view_pager.setCurrentItem((data?.schedule?:1)-1,false) + if (view_pager.currentItem != 0) + tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 } @@ -130,8 +133,16 @@ if (view_pager.currentItem == 0) finish() else{ - val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem) - HttpManager.exitLearning(totalCount,rightCount,day,week,3,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@IncludeActivity){ _, _-> + val list = (data?.subjectList?.subList(0,view_pager.currentItem)) + val arrayListOf = arrayListOf<Subject>() + list?.forEach { it -> + it.forEachIndexed { index, subject -> + if (index == 2||index == 4||index == 5){ + arrayListOf.add(subject) + } + } + } + HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,3,data?.data?.id?:"", arrayListOf.joinToString(",") { it.id }).request(this@IncludeActivity){ _, _-> finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt index 8d5fb25..54cee71 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt @@ -4,16 +4,21 @@ import android.os.Looper import android.os.Message import android.util.Log +import android.view.View import androidx.constraintlayout.motion.widget.MotionLayout import androidx.core.os.bundleOf +import cn.sinata.xldutils.activity.ImagePagerActivity import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_include.* +import org.jetbrains.anko.support.v4.startActivity class IncludeFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener { override fun contentViewId() = R.layout.fragment_include @@ -23,6 +28,15 @@ private var handler:Handler? = null private val PLAY_VOICE = 1 private val TO_NEXT = 2 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private val player by lazy { AudioUtils() } private val group by lazy { arguments?.getInt("group")?:0 } @@ -39,6 +53,8 @@ private val answerImg = arrayListOf<String>() //随机答案图片 private var currentImage = 0 //当前作答的题号:2,4,5 + private var nowVoiceView: View? = null + override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) player.stopPlayMusic() @@ -53,6 +69,14 @@ if (isAdded&&!playing){ (requireActivity() as IncludeActivity).next() } + } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -104,11 +128,13 @@ } act.totalCount++ if (answerImg[0] == subject.img){ + nowVoiceView = voiceViews[currentImage] act.rightCount++ - data!!.subjectList[group][currentImage].completed = true - voiceViews[currentImage].callOnClick() + handler?.sendEmptyMessage(PLAY_RIGHT) motion.transitionToEnd() + showResultAnim() }else{ + handler?.sendEmptyMessage(PLAY_ERROR) iv_error_1.visible() iv_error_1.postDelayed({ clearAnswerImg() @@ -123,11 +149,16 @@ if (!subject.listend||subject.completed){ return@clickDelay } + act.totalCount++ + if (answerImg[1] == subject.img){ - data!!.subjectList[group][currentImage].completed = true - voiceViews[currentImage].callOnClick() + nowVoiceView = voiceViews[currentImage] + act.rightCount++ + handler?.sendEmptyMessage(PLAY_RIGHT) motion.transitionToEnd() + showResultAnim() }else{ + handler?.sendEmptyMessage(PLAY_ERROR) iv_error_2.visible() iv_error_2.postDelayed({ clearAnswerImg() @@ -142,17 +173,40 @@ if (!subject.listend||subject.completed){ return@clickDelay } + act.totalCount++ + if (answerImg[2] == subject.img){ - data!!.subjectList[group][currentImage].completed = true - voiceViews[currentImage].callOnClick() + nowVoiceView = voiceViews[currentImage] + act.rightCount++ + handler?.sendEmptyMessage(PLAY_RIGHT) motion.transitionToEnd() + showResultAnim() }else{ + handler?.sendEmptyMessage(PLAY_ERROR) iv_error_3.visible() iv_error_3.postDelayed({ clearAnswerImg() },3000) } } + + iv_full_1.clickDelay { + startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[0])) + } + iv_full_2.clickDelay { + startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[1])) + + } + iv_full_3.clickDelay { + startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[2])) + + } + } + + private fun showResultAnim(){ + val v = if (currentImage == 2) result_3 else if (currentImage == 4) result_5 else result_6 + v.visible() + v.postDelayed({v.gone()},3000) } private fun showVoiceEnable(){ @@ -168,13 +222,19 @@ } } + /** + * 答错后重置 + */ private fun clearAnswerImg(){ iv_answer_1.setImageURI("") iv_answer_2.setImageURI("") iv_answer_3.setImageURI("") - iv_3.setImageURI("") - iv_5.setImageURI("") - iv_6.setImageURI("") + if (currentImage == 2) + iv_3.setImageURI("") + if (currentImage == 4) + iv_5.setImageURI("") + if (currentImage == 5) + iv_6.setImageURI("") iv_full_1.gone() iv_full_2.gone() iv_full_3.gone() @@ -184,7 +244,24 @@ data!!.subjectList[group][currentImage].listend = false } + /** + * 答对后的重置 + */ + private fun hideAnswerImg(){ + iv_answer_1.setImageURI("") + iv_answer_2.setImageURI("") + iv_answer_3.setImageURI("") + iv_full_1.gone() + iv_full_2.gone() + iv_full_3.gone() + iv_error_1.gone() + iv_error_2.gone() + iv_error_3.gone() + } + private fun showAnswerImg(){ + if (errorPlaying||rightPlaying) + return answerImg.shuffle() iv_answer_1.setImageURI(answerImg[0]) iv_answer_2.setImageURI(answerImg[1]) @@ -299,6 +376,8 @@ override fun onStartPlay() { playing = true + if (errorPlaying||rightPlaying) + return when(voiceIndex){ 0->{ iv1_1.gone() @@ -357,6 +436,8 @@ if (!subject.completed){ currentImage = 2 showAnswerImg() + }else{ + hideAnswerImg() } } 3->{ @@ -371,6 +452,8 @@ if (!subject.completed){ currentImage = 4 showAnswerImg() + }else{ + hideAnswerImg() } } 5->{ @@ -381,11 +464,25 @@ currentImage = 5 showAnswerImg() }else{ + hideAnswerImg() Log.e(TAG,"本题全部答对,3秒后进入下一图") handler?.sendEmptyMessageDelayed(TO_NEXT,3000) } } } showVoiceEnable() + + if (errorPlaying) + errorPlaying = false + if (rightPlaying) { + rightPlaying = false + data!!.subjectList[group][currentImage].completed = true + nowVoiceView?.callOnClick() + } + } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt index 76470e9..c1e04a3 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt @@ -4,7 +4,7 @@ import cn.sinata.xldutils.callPhone import cn.sinata.xldutils.utils.optString import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.PayDialog import com.dollearn.student.network.Apis import com.dollearn.student.network.HttpManager @@ -53,7 +53,7 @@ } private fun getFree(){ - HttpManager.queryStoreFreeBenefit(WeparkApplication.storeId).request(this){_,data-> + HttpManager.queryStoreFreeBenefit(DollearnApplication.storeId).request(this){ _, data-> phone = data?.optString("phone") data?.optString("img")?.loadLongImage(this,iv_img) } diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt index 4535479..479bfd2 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt @@ -18,7 +18,6 @@ import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import kotlinx.android.synthetic.main.activity_listen.* -import org.jetbrains.anko.startActivity class ListenActivity:TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_listen @@ -119,7 +118,9 @@ private fun recover(){ HttpManager.teamSchedule(day,week,1).request(this){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) + view_pager.setCurrentItem((data?.schedule?:1)-1,false) + if (view_pager.currentItem != 0) + tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 } @@ -134,7 +135,7 @@ finish() else{ val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem) - HttpManager.exitLearning(totalCount,rightCount,day,week,1,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ListenActivity){_,_-> + HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,1,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ListenActivity){_,_-> finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt index 0ae0268..9662ece 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt @@ -10,10 +10,12 @@ import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_listen.* import org.jetbrains.anko.imageResource @@ -26,6 +28,16 @@ private var handler:Handler? = null private val PLAY_VOICE = 1 private val TO_NEXT = 2 + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false + private var playing = false //播放中,不能有任何操作 + private var correctVoice = "" //本题音频 private val player by lazy { AudioUtils() } @@ -34,7 +46,7 @@ private val data by lazy { (requireActivity() as ListenActivity).data } - private var hasListen = true //要听一次才能作答 true:已经听完题目 + private var hasListen = false //要听一次才能作答 true:已经听完题目 private var hasRight = false //正确以后不再做出选择 true:已经选出正确答案 private val randomList by lazy { data?.subjectList!![group].shuffled() }//随机排序后的题目 @@ -49,6 +61,10 @@ super.handleMessage(msg) when(msg.what){ PLAY_VOICE->{ + playing = true + if (activity == null){ + return + } val listenActivity = activity as ListenActivity val indexOf = listenActivity.fragments.indexOf(this@ListenFragment) //当前题目序号 if (iv_playing.visibility != View.VISIBLE&&indexOf == listenActivity.viewPager.currentItem){ //没有播放并且是当前题号 @@ -57,8 +73,20 @@ } } TO_NEXT->{ - if (isAdded) + if (isAdded&&!playing){ (requireActivity() as ListenActivity).next() + removeMessages(TO_NEXT) + } + } + PLAY_RIGHT->{ + playing = true + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + playing = true + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -85,7 +113,8 @@ private fun initClick() { cl_voice.clickDelay { - handler?.sendEmptyMessage(PLAY_VOICE) + if (!playing) + handler?.sendEmptyMessage(PLAY_VOICE) } setResultAnimation(cl_1,0) setResultAnimation(cl_2,1) @@ -132,11 +161,15 @@ myToast("请先听题") return@clickDelay } + if (playing) + return@clickDelay (activity as ListenActivity).totalCount ++ if (!hasRight){ v.progress = 0f v.transitionToEnd() if (randomList[index].correct != correctVoice){ //答案不对,结束后消失 + hasListen = false + handler?.sendEmptyMessage(PLAY_ERROR) v.setTransitionListener(object :MotionLayout.TransitionListener{ override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { } @@ -152,10 +185,9 @@ } }) }else{ - hasRight = true (activity as ListenActivity).rightCount ++ motion.transitionToEnd() - handler?.sendEmptyMessage(PLAY_VOICE) + handler?.sendEmptyMessage(PLAY_RIGHT) } } } @@ -163,19 +195,34 @@ } override fun onStartPlay() { - iv1.gone() - iv2.gone() - iv_playing.visible() + if (!errorPlaying&&!rightPlaying){ + iv1.gone() + iv2.gone() + iv_playing.visible() + } } override fun onFinishPlay() { + playing = false iv1.visible() iv2.visible() iv_playing.gone() - hasListen = true - if (hasRight){ //选对答案后的播放结束3秒后进入下一图 + if (hasRight&&!playing){ //选对答案后的播放结束3秒后进入下一图 Log.e(TAG,"选对答案后的播放结束3秒后进入下一图") handler?.sendEmptyMessageDelayed(TO_NEXT,3000) } + if (rightPlaying){ + rightPlaying = false + hasRight = true + handler?.sendEmptyMessage(PLAY_VOICE) + }else if (errorPlaying) + errorPlaying = false + else if (!hasRight) + hasListen = true + } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt index 7c09c84..1d1f328 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentPagerAdapter import androidx.viewpager.widget.ViewPager import cn.sinata.xldutils.gone +import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.HttpManager @@ -41,30 +42,35 @@ override fun initClick() { tv_last.setOnClickListener { - (fragments[view_pager.currentItem] as RememberFragment).stopVoice() + if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened) + return@setOnClickListener (fragments[view_pager.currentItem-1] as RememberFragment).recover() view_pager.setCurrentItem(view_pager.currentItem-1,true) if (view_pager.currentItem == 0) tv_last.gone() tv_exit.text = "退出" + tv_next.visible() } tv_next.setOnClickListener { - (fragments[view_pager.currentItem] as RememberFragment).stopVoice() + if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened) + return@setOnClickListener (fragments[view_pager.currentItem+1] as RememberFragment).recover() view_pager.setCurrentItem(view_pager.currentItem+1,true) if (view_pager.currentItem == fragments.lastIndex){ tv_next.gone() tv_exit.text = "完成" } + tv_last.visible() } tv_exit.setOnClickListener { if (tv_exit.text == "退出") onBackPressed() else{ - (fragments[view_pager.currentItem] as RememberFragment).stopVoice() + if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened) + return@setOnClickListener handler?.removeMessages(0) - startActivity<RememberFinishActivity>("score" to data!!.data.integral) + startActivity<RememberFinishActivity>("score" to data!!.data.integral,"time" to time,"id" to data!!.data.id) finish() } } @@ -73,6 +79,10 @@ override fun initView() { data?.apply { tv_progress.text = "已完成:1/${storyList.size}" + if (storyList.size == 1){ + tv_next.gone() + tv_exit.text = "完成" + } storyList.forEachIndexed { index, subject -> fragments.add(RememberFragment.getInstance(index)) } @@ -120,20 +130,14 @@ handler?.sendEmptyMessageDelayed(0,1000L) } - private fun recover(){ - HttpManager.teamSchedule(day,week,3).request(this){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) - totalCount = data?.answerNumber?:0 - rightCount = data?.correctNumber?:0 - } - } - override fun onBackPressed() { val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?") tipDialog.setCallback(object :TipDialog.OnClickCallback{ override fun onOk() { - finish() + HttpManager.exitGameOrStory(time).request(this@ListenStoryActivity){_,_-> + finish() + } } override fun onCancel() { diff --git a/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt index 4ee91a9..33aa546 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt @@ -115,20 +115,14 @@ handler?.sendEmptyMessageDelayed(0,1000L) } - private fun recover(){ - HttpManager.teamSchedule(day,week,3).request(this){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) - totalCount = data?.answerNumber?:0 - rightCount = data?.correctNumber?:0 - } - } - override fun onBackPressed() { val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?") tipDialog.setCallback(object :TipDialog.OnClickCallback{ override fun onOk() { - finish() + HttpManager.exitGameOrStory(time).request(this@LookImgActivity){_,_-> + finish() + } } override fun onCancel() { diff --git a/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt index 465177f..c90489b 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt @@ -4,12 +4,16 @@ import android.os.Looper import android.os.Message import android.util.Log +import android.view.View import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils +import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragmetn_look_img.* @@ -29,10 +33,22 @@ private val PLAY_VOICE = 1 private val TO_NEXT = 10 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false + private val player by lazy { AudioUtils() } private var voiceIndex = -1 //点击播放的声音序号 0-2取值 private var playing = false //播放中,不能有任何操作 + + private var nowVoiceView: View? = null override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) @@ -42,12 +58,24 @@ super.handleMessage(msg) when(msg.what){ PLAY_VOICE->{ + playing = true if (voiceIndex<voiceList.size) player.startPlayMusic(requireContext(),voiceList[voiceIndex]) } TO_NEXT->{ if (isAdded&&!playing) (requireActivity() as LookImgActivity).next() + } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -87,57 +115,74 @@ rl_check_1.clickDelay { if (playing) return@clickDelay - dot_1.visible() - act.totalCount++ - if (voiceList[0] == data!!.storyList[index].correct){ - act.rightCount++ - data!!.storyList[index].completed = true - motion.transitionToEnd() - cl_voice1.callOnClick() + if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){ + dot_1.visible() + act.totalCount++ + if (voiceList[0] == data!!.storyList[index].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice1 + handler?.sendEmptyMessage(PLAY_RIGHT) + + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_1.visible() + dot_1.postDelayed({ + iv_error_1.gone() + dot_1.gone() + },2000) + } }else{ - iv_error_1.visible() - dot_1.postDelayed({ - iv_error_1.gone() - dot_1.gone() - },2000) + myToast("请听完") } + } rl_check_2.clickDelay { if (playing) return@clickDelay - dot_2.visible() - act.totalCount++ - if (voiceList[1] == data!!.storyList[index].correct){ - act.rightCount++ - data!!.storyList[index].completed = true - motion.transitionToEnd() - cl_voice2.callOnClick() - }else{ - iv_error_2.visible() - dot_1.postDelayed({ - dot_2.gone() - iv_error_2.gone() - },2000) - } + if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_2.visible() + act.totalCount++ + if (voiceList[1] == data!!.storyList[index].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice2 + handler?.sendEmptyMessage(PLAY_RIGHT) + + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_2.visible() + dot_1.postDelayed({ + dot_2.gone() + iv_error_2.gone() + },2000) + } + }else + myToast("请听完") } rl_check_3.clickDelay { if (playing) return@clickDelay - dot_3.visible() - act.totalCount++ - if (voiceList[2] == data!!.storyList[index].correct){ - data!!.storyList[index].completed = true - act.rightCount++ - motion.transitionToEnd() - cl_voice3.callOnClick() - }else{ - iv_error_3.visible() - dot_1.postDelayed({ - iv_error_3.gone() - dot_3.gone() - },2000) - } + if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_3.visible() + act.totalCount++ + if (voiceList[2] == data!!.storyList[index].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice3 + handler?.sendEmptyMessage(PLAY_RIGHT) + + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_3.visible() + dot_1.postDelayed({ + iv_error_3.gone() + dot_3.gone() + },2000) + } + }else + myToast("请听完") } } @@ -194,6 +239,8 @@ override fun onStartPlay() { playing = true + if (rightPlaying||errorPlaying) + return if (voiceIndex == 0){ iv1_1.gone() iv2_1.gone() @@ -213,23 +260,31 @@ override fun onFinishPlay() { playing = false - if (voiceIndex == 0){ + if (voiceIndex == 0&&!errorPlaying){ rl_check_1.visible() iv1_1.visible() iv2_1.visible() iv_playing_1.gone() } - if (voiceIndex == 1){ + if (voiceIndex == 1&&!errorPlaying){ rl_check_2.visible() iv1_2.visible() iv2_2.visible() iv_playing_2.gone() } - if (voiceIndex == 2){ + if (voiceIndex == 2&&!errorPlaying){ rl_check_3.visible() iv1_3.visible() iv2_3.visible() iv_playing_3.gone() + } + if (errorPlaying){ + errorPlaying = false + } + if (rightPlaying){ + rightPlaying = false + nowVoiceView?.callOnClick() + data!!.storyList[index].completed = true } if (data!!.storyList[index].completed){ //本题已答对 Log.e(TAG,"选对答案后的播放结束3秒后进入下一图") @@ -237,4 +292,8 @@ } } + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt index 001f1c8..cb85d61 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt @@ -55,7 +55,7 @@ fun next(){ if (view_pager.currentItem == fragments.lastIndex){ handler?.removeMessages(0) - ResultActivity.startResult(this,day,week,season,3,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) + ResultActivity.startResult(this,day,week,season,5,totalCount,rightCount,data!!.data.integral,time,data!!.data.id) finish() }else{ (fragments[view_pager.currentItem+1] as MatchFragment).recover() @@ -115,8 +115,10 @@ } private fun recover(){ - HttpManager.teamSchedule(day,week,3).request(this){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) + HttpManager.teamSchedule(day,week,5).request(this){_,data-> + view_pager.setCurrentItem((data?.schedule?:1)-1,false) + if (view_pager.currentItem != 0) + tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 } @@ -131,7 +133,7 @@ finish() else{ val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem) - HttpManager.exitLearning(totalCount,rightCount,day,week,3,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@MatchActivity){ _, _-> + HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,5,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@MatchActivity){ _, _-> finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt index 41ab03b..d7a4718 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt @@ -1,20 +1,13 @@ package com.dollearn.student.ui.home import android.content.Intent -import android.graphics.Bitmap -import android.graphics.Paint -import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.os.bundleOf import cn.sinata.xldutils.gone import cn.sinata.xldutils.utils.* import cn.sinata.xldutils.visible -import com.bumptech.glide.Glide -import com.bumptech.glide.request.target.SimpleTarget -import com.bumptech.glide.request.transition.Transition import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.CheckShopsDialog -import com.dollearn.student.dialog.ChooseCouponDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner import com.dollearn.student.network.entity.Match @@ -25,8 +18,6 @@ import com.dollearn.student.utils.extention.loadLongImage import kotlinx.android.synthetic.main.activity_match_deatil.* import org.jetbrains.anko.backgroundColorResource -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.toast class MatchDetailActivity : TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_match_deatil @@ -62,7 +53,7 @@ * 获取运动营详情,暂时列表数据够用,不需实现 */ private fun getDetail() { - HttpManager.queryCompetitionInfo(id, WeparkApplication.lat, WeparkApplication.lon) + HttpManager.queryCompetitionInfo(id, DollearnApplication.lat, DollearnApplication.lon) .request(this) { _, data -> match = data data?.apply { diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt index d33c5e6..b670568 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt @@ -4,19 +4,22 @@ import android.os.Looper import android.os.Message import android.util.Log +import android.view.View import androidx.constraintlayout.motion.widget.MotionLayout import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils +import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_match.* import org.jetbrains.anko.imageResource -//todo 2.选择正确后不能再选择 3.选择正确后处理语音条位置 class MatchFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener { override fun contentViewId() = R.layout.fragment_match @@ -25,6 +28,15 @@ private var handler:Handler? = null private val PLAY_VOICE = 1 private val TO_NEXT = 2 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private val player by lazy { AudioUtils() } private val group by lazy { arguments?.getInt("group")?:0 } @@ -38,6 +50,11 @@ private var playing = false private val voiceList = arrayListOf<String>() //语音列表,随机排序 private var voiceIndex = -1 //点击播放的声音序号 0-3取值 + + private var nowVoiceView: View? = null + private var imgPosition = -1 + + private val completedVoice = arrayListOf<String>() //已经选了的音频 飞到图片上了 override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) @@ -53,6 +70,15 @@ if (isAdded&&!playing){ (requireActivity() as MatchActivity).next() } + } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + voiceIndex = -1 + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -86,14 +112,17 @@ cl_1.clickDelay { val voiceIndex = voiceIndex - if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击 + if (playing) //未播放或者正在播放,不可点击 return@clickDelay - if (data!!.subjectList[group][0].completed) //已作答不可点击 + if (voiceIndex == -1){//未播放不可点击 + myToast("请先听题") return@clickDelay + } +// if (data!!.subjectList[group][0].completed) //已作答不可点击 +// return@clickDelay act.totalCount ++ if (data!!.subjectList[group][0].correct == voiceList[voiceIndex]){ result_1.imageResource = R.mipmap.successs - data!!.subjectList[group][0].completed = true act.rightCount ++ //执行飞行动画 var start = 0 @@ -116,7 +145,8 @@ end = R.id.end_4_1 } } - voiceViews[voiceIndex].callOnClick() + nowVoiceView = voiceViews[voiceIndex] + imgPosition = 0 motion.setTransitionListener(object :MotionLayout.TransitionListener{ override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { @@ -150,8 +180,10 @@ }) motion.setTransition(start,end) motion.transitionToEnd() + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ result_1.imageResource = R.mipmap.zhifushibai + handler?.sendEmptyMessage(PLAY_ERROR) } showResultAnim(cl_1) } @@ -159,15 +191,19 @@ cl_2.clickDelay { val voiceIndex = voiceIndex - if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击 + if (playing) //未播放或者正在播放,不可点击 return@clickDelay - if (data!!.subjectList[group][1].completed) //已作答不可点击 + if (voiceIndex == -1){//未播放不可点击 + myToast("请先听题") return@clickDelay + } +// if (data!!.subjectList[group][1].completed) //已作答不可点击 +// return@clickDelay act.totalCount ++ if (data!!.subjectList[group][1].correct == voiceList[voiceIndex]){ result_2.imageResource = R.mipmap.successs - data!!.subjectList[group][1].completed = true act.rightCount ++ + imgPosition = 1 //执行飞行动画 var start = 0 var end = 0 @@ -189,7 +225,7 @@ end = R.id.end_4_2 } } - voiceViews[voiceIndex].callOnClick() + nowVoiceView = voiceViews[voiceIndex] motion.setTransitionListener(object :MotionLayout.TransitionListener{ override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { @@ -224,8 +260,10 @@ }) motion.setTransition(start,end) motion.transitionToEnd() + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ result_2.imageResource = R.mipmap.zhifushibai + handler?.sendEmptyMessage(PLAY_ERROR) } showResultAnim(cl_2) } @@ -233,14 +271,18 @@ cl_3.clickDelay { val voiceIndex = voiceIndex - if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击 + if (playing) //未播放或者正在播放,不可点击 return@clickDelay - if (data!!.subjectList[group][2].completed) //已作答不可点击 + if (voiceIndex == -1){//未播放不可点击 + myToast("请先听题") return@clickDelay + } +// if (data!!.subjectList[group][2].completed) //已作答不可点击 +// return@clickDelay act.totalCount ++ if (data!!.subjectList[group][2].correct == voiceList[voiceIndex]){ result_3.imageResource = R.mipmap.successs - data!!.subjectList[group][2].completed = true + imgPosition = 2 act.rightCount ++ //执行飞行动画 var start = 0 @@ -263,7 +305,7 @@ end = R.id.end_4_3 } } - voiceViews[voiceIndex].callOnClick() + nowVoiceView = voiceViews[voiceIndex] motion.setTransitionListener(object :MotionLayout.TransitionListener{ override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { @@ -298,22 +340,28 @@ }) motion.setTransition(start,end) motion.transitionToEnd() + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ result_3.imageResource = R.mipmap.zhifushibai + handler?.sendEmptyMessage(PLAY_ERROR) } showResultAnim(cl_3) } cl_4.clickDelay { val voiceIndex = voiceIndex - if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击 + if (playing) //未播放或者正在播放,不可点击 return@clickDelay - if (data!!.subjectList[group][3].completed) //已作答不可点击 + if (voiceIndex == -1){//未播放不可点击 + myToast("请先听题") return@clickDelay + } +// if (data!!.subjectList[group][3].completed) //已作答不可点击 +// return@clickDelay act.totalCount ++ if (data!!.subjectList[group][3].correct == voiceList[voiceIndex]){ result_4.imageResource = R.mipmap.successs - data!!.subjectList[group][3].completed = true + imgPosition = 3 act.rightCount ++ //执行飞行动画 var start = 0 @@ -336,7 +384,7 @@ end = R.id.end_4_4 } } - voiceViews[voiceIndex].callOnClick() + nowVoiceView = voiceViews[voiceIndex] motion.setTransitionListener(object :MotionLayout.TransitionListener{ override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { @@ -371,8 +419,10 @@ }) motion.setTransition(start,end) motion.transitionToEnd() + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ result_4.imageResource = R.mipmap.zhifushibai + handler?.sendEmptyMessage(PLAY_ERROR) } showResultAnim(cl_4) } @@ -409,6 +459,7 @@ override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) { m.progress = 0f + tv_name.text ="" } override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) { @@ -457,6 +508,8 @@ override fun onStartPlay() { playing = true + if (errorPlaying||rightPlaying) + return val list = data!!.subjectList[group] if (voiceIndex in 0..3) tv_name.text = list[list.map { it.correct }.indexOf(voiceList[voiceIndex])].name @@ -515,45 +568,80 @@ iv1_1.visible() iv2_1.visible() iv_playing_1.gone() + if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){ + voiceIndex = -1 + nowVoiceView = null + } } 1->{ iv1_2.visible() iv2_2.visible() iv_playing_2.gone() + if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){ + voiceIndex = -1 + nowVoiceView = null + } } 2->{ iv1_3.visible() iv2_3.visible() iv_playing_3.gone() + if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){ + voiceIndex = -1 + nowVoiceView = null + } } 3->{ iv1_4.visible() iv2_4.visible() iv_playing_4.gone() + if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){ + voiceIndex = -1 + nowVoiceView = null + } } + 4->{ iv1_1_end.visible() iv2_1_end.visible() iv_playing_1_end.gone() + voiceIndex = -1 } 5->{ iv1_2_end.visible() iv2_2_end.visible() iv_playing_2_end.gone() + voiceIndex = -1 } 6->{ iv1_3_end.visible() iv2_3_end.visible() iv_playing_3_end.gone() + voiceIndex = -1 } 7->{ iv1_4_end.visible() iv2_4_end.visible() iv_playing_4_end.gone() + voiceIndex = -1 } } if (data!!.subjectList[group].filter { it.completed }.size == 4){ //全部答对 handler?.sendEmptyMessage(TO_NEXT) } + + if (errorPlaying) + errorPlaying = false + if (rightPlaying){ + rightPlaying = false + nowVoiceView?.callOnClick() + data!!.subjectList[group][imgPosition].completed = true + } + } + + + override fun onPause() { + super.onPause() + player.stopPlayMusic() } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt index 7fd64c2..525f175 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt @@ -3,16 +3,21 @@ import android.os.Handler import androidx.core.os.bundleOf import androidx.recyclerview.widget.GridLayoutManager +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.showAllowingStateLoss import com.dollearn.student.R import com.dollearn.student.dialog.TipDialog +import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Card import com.dollearn.student.network.entity.MemoryBean +import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.home.adapter.CardAdapter +import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import kotlinx.android.synthetic.main.activity_memory.* -class MemoryActivity : TransparentStatusBarActivity() { +class MemoryActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener { override fun setContentView() = R.layout.activity_memory private val data by lazy { @@ -33,23 +38,37 @@ private val PLAY_VOICE = 1 private val STUDY_TIME = 2 - private val player by lazy { com.dollearn.student.utils.AudioUtils() } + val PLAY_RIGHT = 4 + val PLAY_ERROR = 5 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false + + private val player by lazy { AudioUtils() } private var index = 0 + var playing = false override fun initClick() { tv_exit.setOnClickListener { if (tv_exit.text == "提交"){ - //todo 分数问题 - ResultActivity.startResult(this,0,0,0,7,totalCount,rightCount,100,time,data!!.data.id) + val right = list.filter { !it.isBack }.size / 2 + val total = data.photoList.size + val score = right*data.data.answerIntegral/total + ResultActivity.startResult(this,0,0,0,7, total, right,score,time,data!!.data.id) finish() }else - finish() + onBackPressed() } } override fun initView() { + player.setOnAudioStatusUpdateListener(this) + player.stopPlayMusic() handler = object : Handler(android.os.Looper.getMainLooper()){ override fun handleMessage(msg: android.os.Message) { super.handleMessage(msg) @@ -63,8 +82,12 @@ tipDialog.arguments = bundleOf("msg" to "答题时间已结束,停止作答!","isAlert" to true,"ok" to "查看成绩") tipDialog.setDismissCallback(object :TipDialog.OnDismiss{ override fun onDismiss() { - ResultActivity.startResult(this@MemoryActivity,0,0,0,7,totalCount,rightCount - ,100,time,data!!.data.id) + val right = list.filter { !it.isBack }.size / 2 + val total = data.photoList.size + val score = right*data.data.answerIntegral/total + ResultActivity.startResult(this@MemoryActivity,0,0,0,7,total,right + ,score,time,data.data.id) + finish() } }) tipDialog.showAllowingStateLoss(supportFragmentManager,"finish") @@ -74,12 +97,21 @@ PLAY_VOICE->{ player.startPlayMusic(this@MemoryActivity,list[index].url) } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(this@MemoryActivity,rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(this@MemoryActivity,errorVoice) + } } } } + lastTime = data.data.answerTime //倒计时时间 + tv_timer.text = "${lastTime}S" handler?.sendEmptyMessageDelayed(STUDY_TIME,1000) - rv_list.layoutManager = GridLayoutManager(this,5) rv_list.adapter = adapter list.addAll(data.photoList.map { Card(it.id,1,it.photo) }) @@ -93,17 +125,21 @@ */ fun flyover(position:Int){ val card = list[position] - if (card.type == 2){ + if (card.type == 2){ //如果是语音 先播放语音 index = position handler?.sendEmptyMessage(PLAY_VOICE) + }else{ //不是语音直接比较结果 + checkResult() } + } + private fun checkResult(){ if (adapter.position1!=-1&&adapter.position2!=-1){ //已经翻开2张卡片,比较结果是否匹配 totalCount++ val card1 = list[adapter.position1] val card2 = list[adapter.position2] if (card1.type!=card2.type&&card1.id == card2.id){//匹配成功 - adapter.releaseHolder() + handler?.sendEmptyMessage(PLAY_RIGHT) rightCount++ tv_timer.postDelayed({ if (list.filter { !it.isBack }.size == list.size){ //全部答对 @@ -112,13 +148,16 @@ } },500) }else{ - tv_timer.postDelayed({ - adapter.bothToBack() - },500) + handler?.sendEmptyMessage(PLAY_ERROR) } } } + override fun onBackPressed() { + HttpManager.exitGameOrStory(time).request(this){ _, _-> + super.onBackPressed() + } + } override fun onDestroy() { super.onDestroy() @@ -126,4 +165,41 @@ handler?.removeMessages(STUDY_TIME) handler = null } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } + + override fun onUpdate(db: Double, time: Long) { + + } + + override fun onStop(filePath: String?) { + } + + override fun onStartPlay() { + playing = true + } + + override fun onFinishPlay() { + playing = false + if (errorPlaying){ + errorPlaying = false + tv_timer.postDelayed({ + adapter.bothToBack() + },500) + }else if (rightPlaying){ + rightPlaying = false + val card1 = list[adapter.position1] + if (card1.type == 2) + index = adapter.position1 + else + index = adapter.position2 + adapter.releaseHolder() + handler?.sendEmptyMessage(PLAY_VOICE) + }else{ + checkResult() + } + } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt index 2d63ada..5d94a16 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt @@ -4,6 +4,7 @@ import com.dollearn.student.MainActivity import com.dollearn.student.R import com.dollearn.student.ui.TransparentStatusBarActivity +import com.dollearn.student.ui.welfare.ExchangeRecordActivity import kotlinx.android.synthetic.main.activity_pay_rlt.* import org.jetbrains.anko.startActivity @@ -21,7 +22,7 @@ startActivity<MainActivity>() } tv_action.setOnClickListener { - + startActivity<ExchangeRecordActivity>() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt index 5603765..49b641d 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt @@ -1,47 +1,8 @@ package com.dollearn.student.ui.home import android.annotation.SuppressLint -import android.content.Intent -import android.util.Log -import android.view.View -import android.webkit.WebChromeClient -import android.webkit.WebSettings -import android.webkit.WebViewClient -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.GridLayoutManager -import cn.sinata.xldutils.callPhone -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.* -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.CalendarDialog -import com.dollearn.student.dialog.ChooseCouponDialog -import com.dollearn.student.dialog.ConfirmShopDialog -import com.dollearn.student.dialog.PayDialog -import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.Coupon -import com.dollearn.student.network.entity.Place -import com.dollearn.student.network.entity.PlaceTime -import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.course.MyReservationActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.ui.home.adapter.LessonCountAdapter -import com.dollearn.student.ui.home.adapter.TimeAdapter -import com.dollearn.student.ui.home.adapter.WeekAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import com.dollearn.student.utils.pay.PayListener -import com.dollearn.student.utils.pay.PayUtil -import com.youth.banner.indicator.CircleIndicator -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.startActivityForResult -import org.jetbrains.anko.toast -import java.util.* @SuppressLint("SetTextI18n") class PlaceDetailActivity : TransparentStatusBarActivity() { diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt index e3ae842..fbce931 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt @@ -116,7 +116,9 @@ private fun recover(){ HttpManager.teamSchedule(day,week,4).request(this,false){_,data-> - view_pager.setCurrentItem(data?.topicIds?.size?:0,false) + view_pager.setCurrentItem((data?.schedule?:1)-1,false) + if (view_pager.currentItem != 0) + tv_last.visible() totalCount = data?.answerNumber?:0 rightCount = data?.correctNumber?:0 } @@ -131,7 +133,7 @@ finish() else{ val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem) - HttpManager.exitLearning(totalCount,rightCount,day,week,4,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@QAActivity){ _, _-> + HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,4,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@QAActivity){ _, _-> finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt index 187f0a4..7035674 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt @@ -15,9 +15,12 @@ import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone import cn.sinata.xldutils.invisible +import cn.sinata.xldutils.utils.SPUtils +import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_q_a.* import org.jetbrains.anko.support.v4.dip @@ -30,6 +33,15 @@ private var handler: Handler? = null private val PLAY_VOICE = 1 private val TO_NEXT = 2 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private val player by lazy { AudioUtils() } private val group by lazy { arguments?.getInt("group")?:0 } @@ -46,6 +58,7 @@ private val v1Views by lazy { arrayListOf(iv1_1,iv1_2,iv1_3,iv1_4,iv1_answer_1,iv1_answer_2,iv1_answer_3) } private val v2Views by lazy { arrayListOf(iv2_1,iv2_2,iv2_3,iv2_4,iv2_answer_1,iv2_answer_2,iv2_answer_3) } private val v3Views by lazy { arrayListOf(iv3_1,iv3_2,iv3_3,iv3_4) } + private val resultViews by lazy { arrayListOf(iv_right_1,iv_right_2,iv_right_3,iv_right_4) } private val playingViews by lazy { arrayListOf(iv_playing_1,iv_playing_2,iv_playing_3,iv_playing_4,iv_playing_answer_1,iv_playing_answer_2,iv_playing_answer_3) } private var voiceIndex = -1 //点击播放的声音序号 0-3取值 @@ -57,6 +70,7 @@ private var answerList = arrayListOf<String>() //右侧答案语音 + private var nowVoiceView: View? = null override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) @@ -66,6 +80,7 @@ super.handleMessage(msg) when(msg.what){ PLAY_VOICE->{ + playing = true if (voiceIndex in 0..3) player.startPlayMusic(requireContext(),list[voiceIndex].correct) else @@ -76,6 +91,14 @@ (requireActivity() as QAActivity).next() } } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) + } } } } @@ -83,27 +106,36 @@ iv_2.setImageURI(list[1].img) iv_3.setImageURI(list[2].img) iv_4.setImageURI(list[3].img) - showVoiceUi() - + recover() rl_check_1.clickDelay { if (playing) return@clickDelay if (list[questionIndex].completed) //已作答 return@clickDelay + if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){ + myToast("请先听完") + return@clickDelay + } act.totalCount++ if (list[questionIndex].correct == answerList[0]){ act.rightCount++ Log.e(TAG,"选择正确") transAnimation(cl_answer_1,voiceViews[questionIndex]) - list[questionIndex].completed = true - cl_answer_1.callOnClick() + resultViews[questionIndex].visible() + resultViews[questionIndex].postDelayed({ + resultViews[questionIndex].gone() + },3000) + nowVoiceView = voiceViews[questionIndex] + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ + recoverAnswer() + handler?.sendEmptyMessage(PLAY_ERROR) dot_1.visible() iv_error_1.visible() dot_1.postDelayed({ dot_1.gone() iv_error_1.gone() - },500) + },3000) } } rl_check_2.clickDelay { @@ -111,20 +143,26 @@ return@clickDelay if (list[questionIndex].completed) //已作答 return@clickDelay + if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){ + myToast("请先听完") + return@clickDelay + } act.totalCount++ if (list[questionIndex].correct == answerList[1]){ act.rightCount++ Log.e(TAG,"选择正确") transAnimation(cl_answer_2,voiceViews[questionIndex]) - list[questionIndex].completed = true - cl_answer_2.callOnClick() + nowVoiceView = voiceViews[questionIndex] + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ + recoverAnswer() + handler?.sendEmptyMessage(PLAY_ERROR) dot_2.visible() iv_error_2.visible() dot_2.postDelayed({ dot_2.gone() iv_error_2.gone() - },500) + },3000) } } rl_check_3.clickDelay { @@ -132,42 +170,68 @@ return@clickDelay if (list[questionIndex].completed) //已作答 return@clickDelay + if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){ + myToast("请先听完") + return@clickDelay + } act.totalCount++ if (list[questionIndex].correct == answerList[2]){ act.rightCount++ Log.e(TAG,"选择正确") transAnimation(cl_answer_3,voiceViews[questionIndex]) - list[questionIndex].completed = true - cl_answer_3.callOnClick() + nowVoiceView = voiceViews[questionIndex] + handler?.sendEmptyMessage(PLAY_RIGHT) }else{ + recoverAnswer() + handler?.sendEmptyMessage(PLAY_ERROR) dot_3.visible() iv_error_3.visible() dot_3.postDelayed({ dot_3.gone() iv_error_3.gone() - },500) + },3000) } } } - + /** + * 恢复答案和题目ui + */ fun recover(){ + showVoiceUi() + list.forEach { it.completed = false } + recoverAnswer() + } + /** + * 只恢复答案ui + */ + private fun recoverAnswer(){ + rl_check_1.isSelected = false + rl_check_2.isSelected = false + rl_check_3.isSelected = false + if (list.filter { it.completed }.isEmpty()){ + voiceViews[2].isEnabled = false + voiceViews[3].isEnabled = false + }else{ + voiceViews[2].isEnabled = true + voiceViews[3].isEnabled = true + } } private fun showVoiceUi(){ list.forEachIndexed { index, subject -> if (subject.isQuestion == 1){ - v3Views[index].setImageResource(R.mipmap.voice_question) voiceViews[index].visible() }else{ - v3Views[index].setImageResource(R.mipmap.voice_answer) voiceViews[index].invisible() } voiceViews[index].clickDelay { - voiceIndex = index - handler?.sendEmptyMessage(PLAY_VOICE) + if (!playing){ + voiceIndex = index + handler?.sendEmptyMessage(PLAY_VOICE) + } } } } @@ -186,6 +250,15 @@ layoutChanged = true } questionIndex = position + if (questionIndex == 0||questionIndex == 2){ + iv2_answer_1.setImageResource(R.mipmap.voice_question) + iv2_answer_2.setImageResource(R.mipmap.voice_question) + iv2_answer_3.setImageResource(R.mipmap.voice_question) + }else{ + iv2_answer_1.setImageResource(R.mipmap.voice_answer) + iv2_answer_2.setImageResource(R.mipmap.voice_answer) + iv2_answer_3.setImageResource(R.mipmap.voice_answer) + } rl_check_1.visible() rl_check_2.visible() rl_check_3.visible() @@ -273,6 +346,8 @@ override fun onStartPlay() { playing = true + if (rightPlaying||errorPlaying) + return v1Views[voiceIndex].gone() v2Views[voiceIndex].gone() playingViews[voiceIndex].visible() @@ -296,8 +371,33 @@ v1Views[voiceIndex].visible() v2Views[voiceIndex].visible() playingViews[voiceIndex].gone() + if (!errorPlaying&&!rightPlaying&&!list[questionIndex].completed){ + if (voiceIndex == 4){ + rl_check_1.isSelected = true + } + if (voiceIndex == 5){ + rl_check_2.isSelected = true + } + if (voiceIndex == 6){ + rl_check_3.isSelected = true + } + } + if (list.filter { it.completed }.size == 2){ //全部作答,3秒后下一题 handler?.sendEmptyMessageDelayed(TO_NEXT,3000) } + if (errorPlaying) + errorPlaying = false + if (rightPlaying){ + rightPlaying = false + nowVoiceView?.callOnClick() + list[questionIndex].completed = true + recoverAnswer() + } + } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt index 2746115..360d582 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt @@ -2,14 +2,20 @@ import com.dollearn.student.MainActivity import com.dollearn.student.R +import com.dollearn.student.network.HttpManager +import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import kotlinx.android.synthetic.main.activity_finish_remember.* +import kotlinx.android.synthetic.main.activity_finish_remember.tv_back +import kotlinx.android.synthetic.main.activity_result.* import org.jetbrains.anko.startActivity class RememberFinishActivity:TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_finish_remember private val score by lazy { intent.getIntExtra("score",0) } + private val id by lazy { intent.getStringExtra("id") } + private val time by lazy { intent.getIntExtra("time",0) } override fun initClick() { tv_back.setOnClickListener { @@ -19,5 +25,8 @@ override fun initView() { tv_tip.text = "恭喜你,已听完全部故事!获得${score}积分!" + HttpManager.completeStory(0,2,id?:"",time).request(this){ _, data-> + tv_tip.text = "恭喜你,已听完全部故事!获得${data?:0}积分!" + } } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt index 5c0f930..b604ec4 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt @@ -27,6 +27,7 @@ val player by lazy { AudioUtils() } var playing = false //播放中,不能有任何操作 + var listened = false //是否已播放 override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) @@ -101,6 +102,11 @@ iv1.visible() iv2.visible() iv_playing.gone() + listened = true } + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt index 283da05..02ea593 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import cn.sinata.xldutils.gone +import cn.sinata.xldutils.invisible import cn.sinata.xldutils.visible import com.dollearn.student.MainActivity import com.dollearn.student.R @@ -19,6 +20,7 @@ override fun setContentView() = R.layout.activity_result private val id by lazy { intent.getStringExtra("id") } + private val time by lazy { intent.getIntExtra("time",0) } private val type by lazy { intent.getIntExtra("type",0) } private val day by lazy { intent.getIntExtra("day",0) } private val week by lazy { intent.getIntExtra("week",0) } @@ -27,7 +29,6 @@ private val total by lazy { intent.getIntExtra("total",0) } private val right by lazy { intent.getIntExtra("right",0) } private val score by lazy { intent.getIntExtra("score",0) } - private val time by lazy { intent.getIntExtra("time",0) } private val difficulty by lazy { intent.getIntExtra("difficulty",0) } //游戏难度 @@ -47,38 +48,50 @@ } override fun initView() { - tv_score.text = "恭喜你,已完成全部答题!获得${score}积分!" tv_count.text = "${total}次" tv_right.text = "${right}次" tv_fault.text = "${total-right}次" - val rate = (right * 100) / total + val rate = if(total == 0) 0 else (right * 100) / total tv_rate.text = "正确率:$rate%" when(type){ 6->{ title = "超级听力" tv_back.visible() - tv_last.gone() - tv_exit.gone() + tv_last.invisible() + tv_exit.invisible() HttpManager.gameAchievement(rate,difficulty,id?:"","超级听力",time).request(this){_,data-> + tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!" + } } 7->{ title = "超级记忆" + tv_score.text = "恭喜你,已完成游戏!获得${score}积分!" tv_back.visible() - tv_last.gone() - tv_exit.gone() + tv_last.invisible() + tv_exit.invisible() HttpManager.gameAchievement(rate,difficulty,id?:"","超级记忆",time).request(this){_,data-> + tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!" } } 8->{ tv_back.visible() - tv_last.gone() - tv_exit.gone() - HttpManager.completeStory(rate,type,id?:"").request(this){_,data-> + tv_last.invisible() + tv_exit.invisible() + HttpManager.completeStory(rate,1,id?:"",time).request(this){_,data-> + tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!" + } } else->{ + if (type == 5){ + title = "音图相配" + tv_back.visible() + tv_last.invisible() + tv_exit.invisible() + } HttpManager.completeLearning(rate,time,day,week,season,type,id?:"").request(this){_,data-> + tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!" } } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt index 9959e0c..ad1b986 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt @@ -3,12 +3,10 @@ import android.Manifest import android.annotation.SuppressLint import android.app.Activity -import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.util.Log import androidx.core.content.ContextCompat -import androidx.core.content.ContextCompat.startActivity import androidx.core.os.bundleOf import cn.sinata.xldutils.activity.BaseActivity import cn.sinata.xldutils.utils.SPUtils @@ -16,11 +14,8 @@ import com.google.gson.Gson import com.google.zxing.Result import com.dollearn.student.R -import com.dollearn.student.WeparkApplication import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.ScanResultBean -import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.course.CourseDetailActivity import com.dollearn.student.ui.game.GameActivity @@ -30,7 +25,6 @@ import com.zxing.scanner.common.Scanner import kotlinx.android.synthetic.main.scanner_activity.* import org.jetbrains.anko.startActivity -import org.jetbrains.anko.toast class ScannerActivity : TransparentStatusBarActivity(), OnScannerCompletionListener { companion object { diff --git a/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt index 5bb5a4b..512e2ea 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt @@ -12,6 +12,7 @@ import kotlinx.android.synthetic.main.activity_schedul.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe +import org.jetbrains.anko.browse class ScheduleActivity :TransparentStatusBarActivity(){ override fun setContentView() = R.layout.activity_schedul diff --git a/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt index e3332e5..474d680 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt @@ -7,6 +7,7 @@ import android.view.View import androidx.recyclerview.widget.GridLayoutManager import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R @@ -19,6 +20,7 @@ import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.home.adapter.GameAdapter import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.interfaces.StringCallback import kotlinx.android.synthetic.main.activity_super_listen.* import kotlinx.android.synthetic.main.fragmetn_look_img.* @@ -26,71 +28,58 @@ class SuperListenActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener { override fun setContentView() = R.layout.activity_super_listen - private val week by lazy { intent.getIntExtra("week",0) } private val season by lazy { intent.getIntExtra("season",0) } - private var data:GameBean? = null - private var index = 0 - private var handler:Handler? = null + var data:GameBean? = null + var index = 0 + var handler:Handler? = null private var difficulty = 0 //难度 - private val TAG = "Listen====>" + val TAG = "Listen====>" - private val list = arrayListOf<Subject>() + val list = arrayListOf<Subject>() private val adapter = GameAdapter(list) - private val PLAY_VOICE = 1 - private val COUNT_DOWN = 2 + val PLAY_VOICE = 1 + val COUNT_DOWN = 2 private val STUDY_TIME = 3 + + val PLAY_RIGHT = 4 + val PLAY_ERROR = 5 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private val player by lazy { AudioUtils() } - private val voiceList = arrayListOf<String>() //声音按顺序播放 + val voiceList = arrayListOf<String>() //声音按顺序播放 private var TIME = 10 //每题答题时间 - private var countTime = 10 //倒计时计数 + private var countTime = 0 //倒计时计数 var totalCount = 0 //总答题次数 var rightCount = 0 //正确答题次数 var time = 0 //学习秒数 + var playing = false + + var state = 0 //0:准备听题 1:听题中 2:请作答 3:结束答题 + override fun initClick() { - adapter.setOnItemClickListener { view, position -> - Log.e(TAG,"点击图片:${list[position].name}") - Log.e(TAG,"音频position:${index}") - Log.e(TAG,"音频路径:${voiceList[index]}") - - val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目 - Log.e(TAG,"正确答案:${subject.name}") - - totalCount++ - - handler?.removeMessages(COUNT_DOWN) //选择答案后,停止倒计时 - if (list[position].id == subject.id){ - rightCount++ - subject.completed = true - subject.right = true - handler?.sendEmptyMessage(PLAY_VOICE) - adapter.notifyItemChanged(position) - }else{ - subject.completed = true - subject.right = false - index++ - startGame() - } - } - tv_exit.setOnClickListener { if (tv_exit.text == "提交"){ - ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id) + ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id,difficulty) finish() }else - finish() + onBackPressed() } } @@ -129,7 +118,10 @@ player.startPlayMusic(this@SuperListenActivity,voiceList[index]) } COUNT_DOWN->{ - countTime -- + if (!playing){ + countTime -- + state = 2 + } tv_tip.text = "请在${countTime}s内选择答案!" if ( countTime == 0){ index++ @@ -138,9 +130,18 @@ sendEmptyMessageDelayed(COUNT_DOWN,1000) } } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(this@SuperListenActivity,rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(this@SuperListenActivity,errorVoice) + } } } } + handler?.sendEmptyMessageDelayed(STUDY_TIME,1000) } private fun refreshUi() { @@ -153,7 +154,7 @@ list.shuffle() //图片随机顺序 rv_list.adapter = adapter Log.e(TAG,"图片打乱后顺序:${list.joinToString(",,,") { it.name }}") - + TIME = data!!.data.time.toInt() val countdownDialog = CountdownDialog() countdownDialog.callback = object :StringCallback{ override fun onResult(rst: String) { @@ -164,17 +165,19 @@ countdownDialog.show(supportFragmentManager,"timer") } - private fun startGame() { + fun startGame() { if (index < voiceList.size){ Log.e(TAG,"开始答题:index=${index}") tv_sort.text = (index+1).toString() handler?.removeMessages(COUNT_DOWN) countTime = TIME //重置答题时间 tv_tip.text = "准备听题" + state = 0 handler?.sendEmptyMessageDelayed(PLAY_VOICE,3000) }else{ tv_sort.visibility = View.INVISIBLE tv_tip.text = "" + state = 3 tv_end.text = "已完成全部问题" tv_exit.text = "提交" handler?.removeMessages(STUDY_TIME) @@ -188,7 +191,11 @@ } override fun onStartPlay() { + playing = true + if (errorPlaying||rightPlaying) + return if (!data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){//首次播放 + state = 1 tv_tip.text = "请在${countTime}s内选择答案!" handler?.sendEmptyMessageDelayed(COUNT_DOWN,1000) } @@ -198,6 +205,7 @@ } override fun onFinishPlay() { + playing = false iv1.visible() iv2.visible() iv_playing.gone() @@ -205,6 +213,29 @@ index++ startGame() } + if (errorPlaying) + errorPlaying = false + if (rightPlaying){ + rightPlaying = false + val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目 + subject.completed = true + handler?.sendEmptyMessage(PLAY_VOICE) + } } + override fun onBackPressed() { + HttpManager.exitGameOrStory(time).request(this){_,_-> + super.onBackPressed() + } + } + + override fun onDestroy() { + super.onDestroy() + handler?.removeCallbacksAndMessages(null) + } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt index 29d38bd..f2ac65e 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt @@ -29,7 +29,6 @@ weekAdapter.setOnItemClickListener { view, position -> startActivity<ScheduleActivity>("week" to weeks[position].week,"season" to seasonAdapter.checked+1) - finish() } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt deleted file mode 100644 index f03811f..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.widget.ImageView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Coupon -import org.jetbrains.anko.imageResource -import java.util.ArrayList - -class CouponAdapter(list: ArrayList<Coupon>):HFRecyclerAdapter<Coupon>(list, R.layout.item_coupon) { - var checked = 0L - override fun onBind(holder: ViewHolder, position: Int, data: Coupon) { - holder.setText(R.id.tv_price,SpanBuilder("¥${data.favorable}").size(0,1,17).build()) - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_condition,data.useCondition) - holder.setText(R.id.tv_deadline,"有效期至${data.effectiveTime}") - holder.bind<ImageView>(R.id.iv_check).imageResource = if (data.id == checked) R.mipmap.coupon_checked else R.mipmap.coupon_uncheck - } - - companion object{ - const val TYPE_CHOOSE = 1 - const val TYPE_COURSE_DETAIL = 2 - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt index 21a4003..28c77fe 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt @@ -1,22 +1,79 @@ package com.dollearn.student.ui.home.adapter +import android.util.Log import android.view.View +import android.widget.ImageView +import androidx.constraintlayout.motion.widget.MotionLayout import cn.sinata.xldutils.adapter.HFRecyclerAdapter import cn.sinata.xldutils.adapter.util.ViewHolder import com.dollearn.student.R import com.dollearn.student.network.entity.Subject import com.dollearn.student.ui.home.SuperListenActivity +import com.dollearn.student.utils.Const +import com.dollearn.student.utils.event.EmptyEvent +import com.dollearn.student.utils.event.IntEvent import com.dollearn.student.utils.extention.clickDelay import com.facebook.drawee.view.SimpleDraweeView +import kotlinx.android.synthetic.main.fragment_listen.* +import org.greenrobot.eventbus.EventBus import java.util.ArrayList class GameAdapter(list: ArrayList<Subject>):HFRecyclerAdapter<Subject>(list, R.layout.item_game_1) { override fun onBind(holder: ViewHolder, position: Int, data: Subject) { holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.img) val view = holder.bind<View>(R.id.cl_voice_end_1) + val motion = holder.bind<MotionLayout>(R.id.motion) + motion.progress = 0f + val ivResult = holder.bind<ImageView>(R.id.result_1) view.visibility = if (data.right) View.VISIBLE else View.GONE view.clickDelay { // (context as SuperListenActivity) } + val act = context as SuperListenActivity + holder.itemView.setOnClickListener { + if (act.playing||act.index>act.voiceList.size-1) + return@setOnClickListener + if (act.state!=2) + return@setOnClickListener + Log.e(act.TAG,"点击图片:${act.list[position].name}") + Log.e(act.TAG,"音频position:${act.index}") + Log.e(act.TAG,"音频路径:${act.voiceList[act.index]}") + + val subject = act.data!!.subjectList[act.data!!.subjectList.map { it.correct }.indexOf(act.voiceList[act.index])] //当前音频对应题目 + Log.e(act.TAG,"正确答案:${subject.name}") + + act.totalCount++ + + act.handler?.removeMessages(act.COUNT_DOWN) //选择答案后,停止倒计时 + if (data.id == subject.id){ + ivResult.setImageResource(R.mipmap.successs) + act.handler?.sendEmptyMessage(act.PLAY_RIGHT) + act.rightCount++ + subject.right = true + notifyItemChanged(position) + }else{ + act.handler?.sendEmptyMessage(act.PLAY_ERROR) //选择答案后,停止倒计时 + ivResult.setImageResource(R.mipmap.zhifushibai) + subject.completed = true + subject.right = false + act.index++ + act.startGame() + } + motion.transitionToEnd() + motion.setTransitionListener(object :MotionLayout.TransitionListener{ + override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) { + } + + override fun onTransitionChange(p0: MotionLayout?, p1: Int, p2: Int, p3: Float) { + } + + override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) { + motion.progress = 0f + } + + override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) { + } + }) + } } } diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt index acc1765..759d838 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt @@ -5,13 +5,14 @@ import cn.sinata.xldutils.adapter.util.ViewHolder import com.dollearn.student.R import com.dollearn.student.network.entity.Week +import com.dollearn.student.utils.extention.formatToChinese import org.jetbrains.anko.backgroundResource import java.util.ArrayList class WeekAdapter(weekList: ArrayList<Week>) :HFRecyclerAdapter<Week>(weekList, R.layout.item_week){ var checked = -1 override fun onBind(holder: ViewHolder, position: Int, data: Week) { - holder.setText(R.id.tv_week,"第${data.week}周") + holder.setText(R.id.tv_week,"第${data.week.formatToChinese()}周") holder.setText(R.id.tv_name,data.title) holder.setText(R.id.tv_score,"完成后可获积分数:${data.totalIntegral}") holder.bind<View>(R.id.ll_week).backgroundResource = getWeekBg(position) diff --git a/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt b/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt index efd98e6..3de1e3d 100644 --- a/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt @@ -54,6 +54,7 @@ } tv_privacy_rule.clickDelay { + showDialog() HttpManager.getH5(LoginRuleDialog.TYPE_PRIVACY).request(this@LoginActivity){ _, data-> data?.let { startActivityForResult<H5Activity>(1,"title" to "隐私协议","url" to it) @@ -61,6 +62,7 @@ } } tv_user_rule.clickDelay { + showDialog() HttpManager.getH5(LoginRuleDialog.TYPE_USER).request(this@LoginActivity){ _, data-> data?.let { startActivityForResult<H5Activity>(2,"title" to "用户协议","url" to it) diff --git a/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt b/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt index 1d381f0..47cda36 100644 --- a/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Intent import android.os.CountDownTimer -import android.text.Editable import android.text.method.HideReturnsTransformationMethod import android.text.method.PasswordTransformationMethod import androidx.core.os.bundleOf @@ -13,18 +12,15 @@ import cn.sinata.xldutils.visible import com.amap.api.location.AMapLocationListener import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.dialog.TipDialog import com.dollearn.student.network.HttpManager import com.dollearn.student.network.request -import com.dollearn.student.ui.H5Activity import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.utils.AMapKit -import com.dollearn.student.utils.SimpleTextWatcher import com.tbruyelle.rxpermissions2.RxPermissions import kotlinx.android.synthetic.main.activity_register.* import org.jetbrains.anko.sdk27.coroutines.onClick -import org.jetbrains.anko.startActivity class RegisterActivity : TransparentStatusBarActivity() { override fun setContentView() = R.layout.activity_register @@ -116,17 +112,17 @@ * 有权限的情况获取定位 */ private fun getLocation(phone:String,pwd:String,code:String,invitePhone:String){ - if (WeparkApplication.lat!=null) + if (DollearnApplication.lat!=null) next(phone, pwd, code, invitePhone) else{ showDialog("正在获取定位...") AMapKit.initLocation(this, AMapLocationListener { - WeparkApplication.lat = it.latitude - WeparkApplication.lon = it.longitude - WeparkApplication.province = it.province - WeparkApplication.provinceCode = "${it.adCode.substring(0, 3)}000" - WeparkApplication.cityName = it.city - WeparkApplication.cityCode = "${it.adCode.substring(0, 4)}00" + DollearnApplication.lat = it.latitude + DollearnApplication.lon = it.longitude + DollearnApplication.province = it.province + DollearnApplication.provinceCode = "${it.adCode.substring(0, 3)}000" + DollearnApplication.cityName = it.city + DollearnApplication.cityCode = "${it.adCode.substring(0, 4)}00" dismissDialog() next(phone, pwd, code, invitePhone) }) @@ -136,7 +132,7 @@ private fun next(phone:String,pwd:String,code:String,invitePhone:String){ tv_action.isEnabled = false if (type == TYPE_BIND){ - HttpManager.bindPhone(phone, code,if (invitePhone.isNullOrEmpty()) null else invitePhone,openid , WeparkApplication.lat,WeparkApplication.lon) + HttpManager.bindPhone(phone, code,if (invitePhone.isNullOrEmpty()) null else invitePhone,openid , DollearnApplication.lat,DollearnApplication.lon) .request(this@RegisterActivity,success = {_,data-> val intent = Intent() intent.putExtra("token",data?.optString("token")) @@ -148,7 +144,7 @@ } }else{ HttpManager.register(type,phone, pwd.md5(), code,if (invitePhone.isNullOrEmpty()) null else invitePhone,if (type == TYPE_BIND) openid else null, - WeparkApplication.lat,WeparkApplication.lon) + DollearnApplication.lat,DollearnApplication.lon) .request(this@RegisterActivity,success = {_,_-> myToast(if (type == TYPE_REGISTER)"注册成功" else "密码修改成功") finish() diff --git a/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt b/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt index 7260b10..3172c7a 100644 --- a/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt @@ -18,11 +18,21 @@ private val list = arrayListOf<Recipient>() private val adapter = AddressManageAdapter(list) + private val canChoose by lazy { intent.getBooleanExtra("canChoose",false) } override fun initClick() { tv_add.setOnClickListener { startActivityForResult<AddAddressActivity>(1) } + adapter.setOnItemClickListener { view, position -> + if (canChoose){ + val intent = Intent() + intent.putExtra("address",list[position]) + setResult(RESULT_OK,intent) + finish() + } + } + } override fun initView() { diff --git a/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt index bade8d6..ae17e30 100644 --- a/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt @@ -7,6 +7,7 @@ import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.mine.adapter.GameRecordAdapter +import com.dollearn.student.utils.extention.formatToChinese import kotlinx.android.synthetic.main.activity_learn_record.* class LearnRecordActivity : TransparentStatusBarActivity() { @@ -31,8 +32,8 @@ list.clear() list.addAll(data?.gameRecordList?: arrayListOf()) adapter.notifyDataSetChanged() - tv_current.text = "当前进度:周目${data?.record?.week}" - tv_last.text = "剩余进度:${data?.record?.week}周目" + tv_current.text = "当前进度:周目${(data?.record?.week?:0).formatToChinese()}" + tv_last.text = "剩余进度:${(data?.record?.surplus?:0).formatToChinese()}周目" tv_total.text = "${data?.record?.totalStudy}小时" tv_today.text = "${data?.record?.todayStudy}小时" tv_week.text = "${data?.record?.weekStudy}小时" diff --git a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt index 2d55c28..5e23325 100644 --- a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt @@ -1,28 +1,33 @@ package com.dollearn.student.ui.mine import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.utils.SPUtils +import cn.sinata.xldutils.utils.showAllowingStateLoss import com.dollearn.student.MainActivity import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.dialog.ShareDialog import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.entity.Commodity +import com.dollearn.student.network.Apis +import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.UserBean -import com.dollearn.student.network.entity.WelfareHomeData -import com.dollearn.student.ui.course.WelfareActivity -import com.dollearn.student.ui.home.JoinVipActivity +import com.dollearn.student.network.requestByF import com.dollearn.student.ui.login.LoginActivity import com.dollearn.student.ui.welfare.* -import com.dollearn.student.ui.welfare.adapter.WelfareGoodsAdapter import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.extention.clickDelay +import com.dollearn.student.utils.interfaces.StringCallback +import com.share.utils.ShareUtils +import com.umeng.socialize.UMShareListener +import com.umeng.socialize.bean.SHARE_MEDIA +import com.umeng.socialize.media.UMImage +import kotlinx.android.synthetic.main.form_view_layout.* import kotlinx.android.synthetic.main.fragment_mine.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.jetbrains.anko.support.v4.startActivity +import org.jetbrains.anko.support.v4.toast class MineFragment : BaseFragment() { override fun contentViewId() = R.layout.fragment_mine @@ -67,6 +72,32 @@ tv_address.setOnClickListener { startActivity<AddressManageActivity>() } + tv_share.setOnClickListener { + val shareDialog = ShareDialog() + shareDialog.callback = object :StringCallback{ + override fun onResult(rst: String) { + HttpManager.shareInfo().requestByF(this@MineFragment){_,data-> + ShareUtils.share(requireActivity(),if (rst == "wx") SHARE_MEDIA.WEIXIN else SHARE_MEDIA.WEIXIN_CIRCLE,data?.title?:"孩子自己就学会的英语",if (rst == "wx") "海豚英语智能教育平台" else data?.title?:"孩子自己就学会的英语", Apis.SHARE_URL, + UMImage(requireContext(),data?.img?:""),object :UMShareListener{ + override fun onStart(p0: SHARE_MEDIA?) { + } + + override fun onResult(p0: SHARE_MEDIA?) { + toast("已分享") + } + + override fun onError(p0: SHARE_MEDIA?, p1: Throwable?) { + } + + override fun onCancel(p0: SHARE_MEDIA?) { + } + },"" + ) + } + } + } + shareDialog.showAllowingStateLoss(childFragmentManager,"share") + } } @Subscribe diff --git a/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt b/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt index b533963..99c69e1 100644 --- a/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt @@ -12,6 +12,7 @@ import com.dollearn.student.network.request import com.dollearn.student.ui.TransparentStatusBarActivity import com.dollearn.student.ui.home.PayResultActivity +import com.dollearn.student.ui.mine.AddressManageActivity import com.dollearn.student.ui.mine.ChangeAddressActivity import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent @@ -48,11 +49,7 @@ } cl_address.setOnClickListener { - if (recipient?.id.isNullOrEmpty()){ - startActivityForResult<AddAddressActivity>(1) - }else{ - startActivityForResult<ChangeAddressActivity>(2) - } + startActivityForResult<AddressManageActivity>(2,"canChoose" to true) } tv_action.setOnClickListener { diff --git a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt index 8572fda..be18eb6 100644 --- a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt @@ -1,5 +1,8 @@ package com.dollearn.student.ui.shop +import android.content.Context +import android.view.inputmethod.InputMethodManager +import androidx.core.content.ContextCompat.getSystemService import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.xldutils.fragment.BaseFragment @@ -56,6 +59,8 @@ } tv_search.setOnClickListener { + (requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager) + .hideSoftInputFromWindow(requireActivity().currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS) if (refreshLayout.isRefreshing) return@setOnClickListener search = et_search.text.toString() @@ -78,7 +83,7 @@ } private fun getGoods(){ - HttpManager.goodListStudy(page,search,goodsTypes.filter { it.checked }.map { it.name }).requestByF(this,success = {_,data-> + HttpManager.goodListStudy(page,search,goodsTypes.filter { it.checked }.map { it.id.toString() }).requestByF(this,success = {_,data-> if (page == 1) goods.clear() goods.addAll(data ?.records?: arrayListOf()) diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt deleted file mode 100644 index 0c15948..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.dollearn.student.ui.welfare - -import android.view.View -import androidx.fragment.app.Fragment -import androidx.viewpager.widget.ViewPager -import com.dollearn.student.R -import com.dollearn.student.dialog.CouponFilterPop -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.activity_coupon.* - -class CouponActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_coupon - - private val frags = arrayListOf<Fragment>() - var state:Int? = null - - override fun initClick() { - tv_filter.setOnClickListener { - val menuPop = CouponFilterPop(this) - menuPop.setCallback(object : StringCallback { - override fun onResult(rst: String) { - tv_filter.text = rst - state = when(rst){ - "未使用"-> 1 - "已使用"-> 2 - "已过期"-> 3 - else -> null - } - (frags[view_pager.currentItem] as CouponFragment).refresh() - } - }) - menuPop.contentView - .measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) - menuPop.showAsDropDown(tv_filter,0,0,0) - } - } - - override fun initView() { - frags.add(CouponFragment.newInstance(CouponFragment.TYPE_ALL)) - frags.add(CouponFragment.newInstance(CouponFragment.TYPE_FULL)) - frags.add(CouponFragment.newInstance(CouponFragment.TYPE_MONEY)) - frags.add(CouponFragment.newInstance(CouponFragment.TYPE_FREE)) - tab_top.setViewPager(view_pager, arrayOf("全部","满减券","代金券","体验券"),this,frags) - view_pager.addOnPageChangeListener(object :ViewPager.SimpleOnPageChangeListener(){ - override fun onPageSelected(position: Int) { - super.onPageSelected(position) - (frags[position] as CouponFragment).refresh() - } - }) - view_pager.offscreenPageLimit = 4 - } - - -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt b/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt deleted file mode 100644 index 95b4cc5..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.dollearn.student.ui.welfare - -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckShopsDialog -import com.dollearn.student.dialog.LoginRuleDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Coupon -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.welfare.adapter.CouponDetailAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.layout_common_list.* - -class CouponFragment:BaseFragment() { - override fun contentViewId() = R.layout.layout_common_list - - private val type by lazy { arguments?.getInt("type", TYPE_ALL)?: TYPE_ALL } - private val list = arrayListOf<Coupon>() - private val adapter = CouponDetailAdapter(list) - - override fun onFirstVisibleToUser() { - refreshLayout.setEnableLoadMore(false) - refreshLayout.setOnRefreshListener { - getData() - } - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - adapter.callback = object :StringCallback{ - override fun onResult(rst: String) { - val coupon = list[rst.toInt()] - if (coupon.useCondition == "3") - CheckShopsDialog.show(childFragmentManager, coupon.cityOrStore?:"",CheckShopsDialog.TYPE_COUPON_USAGE) - else if (coupon.useCondition == "2") - CheckShopsDialog.show(childFragmentManager, coupon.cityOrStore?:"",CheckShopsDialog.TYPE_COUPON_CITY) - } - } - getData() - } - - fun refresh(){ - refreshLayout.autoRefresh() - } - - private fun getData(){ - HttpManager.queryCouponPackage((requireActivity() as CouponActivity).state,if (type == TYPE_ALL) null else type).requestByF(this,success = {_,data-> - refreshLayout.finishRefresh() - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - }){_,_-> - refreshLayout.finishRefresh(false) - } - } - - companion object{ - const val TYPE_ALL = 0 //全部 - const val TYPE_FULL = 1 //满减 - const val TYPE_MONEY = 2 //代金券 - const val TYPE_FREE = 3 //体验 - - fun newInstance(type:Int):CouponFragment{ - val couponFragment = CouponFragment() - couponFragment.arguments = bundleOf("type" to type) - return couponFragment - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt index 9b87869..07212db 100644 --- a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt @@ -15,7 +15,7 @@ private val list = arrayListOf<ExchangeRecord>() private val adapter = ExchangeRecordAdapter(list) - + private var page = 1 override fun initClick() { @@ -24,14 +24,37 @@ override fun initView() { rv_record.layoutManager = LinearLayoutManager(this) rv_record.adapter = adapter + refreshLayout.setOnRefreshListener { + page = 1 + getData() + } + refreshLayout.setOnLoadMoreListener { + page++ + getData() + } getData() } private fun getData() { - HttpManager.exchangeRecord().request(this){_,data-> - list.clear() - list.addAll(data?: arrayListOf()) + HttpManager.exchangeRecord(page).request(this,success = {_,data-> + if (page == 1) + list.clear() + list.addAll(data?.records?: arrayListOf()) adapter.notifyDataSetChanged() + if (list.isEmpty()) + refreshLayout.finishRefreshWithNoMoreData() + else if (data?.records.isNullOrEmpty()) + refreshLayout.finishLoadMoreWithNoMoreData() + else if (page == 1) + refreshLayout.finishRefresh() + else + refreshLayout.finishLoadMore() + }){_,_-> + if (page == 1) + refreshLayout.finishRefresh(false) + else + refreshLayout.finishLoadMore(false) + page-- } } diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt index 6164ef5..77a5825 100644 --- a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt @@ -39,6 +39,12 @@ override fun initClick() { tv_action.setOnClickListener { + if (score<goods?.good?.integral?:0){ + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("isAlert" to true,"msg" to "兑换失败,当前剩余积分不足!","ok" to "关闭") + tipDialog.show(supportFragmentManager,"tip") + return@setOnClickListener + } tv_action.isEnabled = false showDialog() HttpManager.redeemNow(id).request(this,false, {_,data-> @@ -88,7 +94,7 @@ tv_value.paintFlags = tv_value.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG tv_name.text = good.name tv_category.text = goodTypes?.joinToString ("|"){ it.name } - tv_sold.text = "剩余数量:%d|可换数量:%d|%d人已换".format(good.surplus,good.userCount,good.inventory?:0) + tv_sold.text = "%s%s%d人已换".format(if (residueNumber == null) "" else "剩余数量:${residueNumber}|",if (good.userCount == null) "" else "可换数量:${good.userCount}|", exchangeNumber) val sHead = "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" webView!!.loadDataWithBaseURL(null, sHead + good.detail, "text/html", "utf-8", null) diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt deleted file mode 100644 index 3050143..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt +++ /dev/null @@ -1,226 +0,0 @@ -package com.dollearn.student.ui.welfare - -import android.app.Activity -import android.content.Intent -import android.view.animation.AnimationUtils -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.WeparkApplication -import com.dollearn.student.dialog.ChooseShopDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Goods -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.adapter.FilterAdapter -import com.dollearn.student.ui.welfare.adapter.GoodsGridAdapter -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.activity_score_shop.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.startActivityForResult - -class ScoreShopActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_score_shop - - private val isTicket by lazy { intent.getBooleanExtra("isTicket",false) } //true:直接展示门票商品 - - private var page = 1 - private var score = 0 //当前积分 - - //筛选条件 - var typeId: Int? = null //商品类型: 1实物 2运动营 3门票 4优惠券 - var sort: Int? = null //排序规则 1积分高到低 2积分从低到高 3兑换从高到低 - var search: String? = null //搜索 - var shopId: String? = null - - private val typeList = arrayListOf("全部", "实体商品", "运动营商品", "门票商品", "优惠券") - private val sortList = arrayListOf("默认排序", "积分从高到低", "积分从低到高", "兑换从高到低") - private val filters = arrayListOf<String>() //筛选选项 - private val filterAdapter = FilterAdapter(filters) - - private val list = arrayListOf<Goods>() - private val adapter = GoodsGridAdapter(list) - - override fun initClick() { - tv_search.clickDelay { - val s = et_search.text.toString() - search = if (s.isNullOrEmpty()) null else s - refreshLayout.autoRefresh() - } - cb_sort.setOnCheckedChangeListener { buttonView, isChecked -> - if (!isChecked) - closeFilter() - else { - if (cb_type.isChecked) - cb_type.isChecked = false - bg_filter.visible() - rv_filter.visible() - val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top) - rv_filter.startAnimation(loadAnimation) - filters.clear() - filters.addAll(sortList) - filterAdapter.checkedIndex = sort ?: 0 - filterAdapter.notifyDataSetChanged() - } - } - cb_type.setOnCheckedChangeListener { buttonView, isChecked -> - if (!isChecked) - closeFilter() - else { - if (cb_sort.isChecked) - cb_sort.isChecked = false - bg_filter.visible() - rv_filter.visible() - val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top) - rv_filter.startAnimation(loadAnimation) - filters.clear() - filters.addAll(typeList) - filterAdapter.checkedIndex = typeId ?: 0 - filterAdapter.notifyDataSetChanged() - } - } - cb_syshop.setOnCheckedChangeListener { buttonView, isChecked -> - if (!isChecked) - closeFilter() - else { - if (cb_syshop.isChecked) - cb_syshop.isChecked = false - if (cb_sort.isChecked) - cb_sort.isChecked = false - if (cb_type.isChecked) - cb_type.isChecked = false - val chooseShopDialog = ChooseShopDialog() - chooseShopDialog.arguments = - bundleOf("scoreshopUse" to true) - chooseShopDialog.showAllowingStateLoss(supportFragmentManager, "shop") - chooseShopDialog.stringCallback = object : StringCallback { - override fun onResult(rst: String) { - if (rst.isNotEmpty()) { - rst.split("-*-*").apply { - shopId = this[0] - cb_syshop.text = this[1] - } - - - } else { - shopId = null - cb_syshop.text = "适用门店" - } - - - refreshLayout.autoRefresh() - - } - } - - } - } - filterAdapter.setOnItemClickListener { view, position -> - if (cb_type.isChecked) { - cb_type.isChecked = false - typeId = if (position == 0) null else position - cb_type.text = if (position == 0) "商品类型" else typeList[position] - } else { - cb_sort.isChecked = false - sort = if (position == 0) null else position - cb_sort.text = if (position == 0) "默认排序" else sortList[position] - } - refreshLayout.autoRefresh() - } - adapter.setOnItemClickListener { view, position -> - - } - tv_score_record.setOnClickListener { - startActivity<RechargeRecordActivity>("type" to RechargeRecordActivity.TYPE_SCORE) - } - tv_exchange_record.setOnClickListener { - startActivity<ExchangeRecordActivity>() - } - bg_filter.setOnClickListener { - if (cb_sort.isChecked) - cb_sort.isChecked = false - if (cb_type.isChecked) - cb_type.isChecked = false - } - - - } - - override fun initView() { - if (isTicket){ - getUserInfo() - typeId = 3 - cb_type.text = "门票商品" - shopId = WeparkApplication.storeId - cb_syshop.text = WeparkApplication.store - }else{ - iv_avatar.setImageURI(intent.getStringExtra("avatar")) - tv_name.text = intent.getStringExtra("name") - score = intent.getIntExtra("score", 0) - tv_score.text = "${score}积分" - } - rv_list.layoutManager = GridLayoutManager(this, 2) - rv_list.adapter = adapter - refreshLayout.setOnRefreshListener { - page = 1 - getData() - } - refreshLayout.setOnLoadMoreListener { - page++ - getData() - } - getData() - rv_filter.layoutManager = LinearLayoutManager(this) - rv_filter.adapter = filterAdapter - } - - private fun getUserInfo() { - - } - - private fun getData() { - HttpManager.integralMallList(typeId, page, sort, search, shopId) - .request(this, success = { _, data -> - if (page == 1) - list.clear() - list.addAll(data ?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data.isNullOrEmpty()) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - - }) { _, _ -> - if (page == 1) - refreshLayout.finishRefresh(false) - else - refreshLayout.finishLoadMore(false) - page-- - } - } - - private fun closeFilter() { - bg_filter.gone() - rv_filter.gone() - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == Activity.RESULT_OK){ - getUserInfo() - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt deleted file mode 100644 index d5bd39b..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt +++ /dev/null @@ -1,90 +0,0 @@ -package com.dollearn.student.ui.welfare.adapter - -import android.util.TypedValue -import android.view.View -import android.widget.ImageView -import android.widget.TextView -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.LoginRuleDialog -import com.dollearn.student.network.entity.Coupon -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.backgroundResource -import java.util.ArrayList - -class CouponDetailAdapter(list: ArrayList<Coupon>) :HFRecyclerAdapter<Coupon>(list, R.layout.item_coupon_detail){ - var callback:StringCallback? = null - override fun onBind(holder: ViewHolder, position: Int, data: Coupon) { - val clLeft = holder.bind<View>(R.id.tv_price) - val clRight = holder.bind<View>(R.id.cl_right) - val tvUse = holder.bind<View>(R.id.tv_use) - val ivTag = holder.bind<ImageView>(R.id.iv_tag) - val tvPrice = holder.bind<TextView>(R.id.tv_price) - - if (data.type == 3){ //体验券显示名字 - tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,12f) - tvPrice.text = data.ruleModel?.experienceName - }else{ - tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f) - val money = "%s%s".format(data.ruleModel?.deductionAmount,if (data.ruleModel?.conditionalAmount.isNullOrEmpty()) "" else "\n${data.ruleModel?.conditionalAmount}") - tvPrice.text = SpanBuilder(money).bold(0,data.ruleModel?.deductionAmount?.length?:0).size(data.ruleModel?.deductionAmount?.length?:0,money.length,12).build() - } - - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_deadline,"有效期至${data.effectiveTime}") - holder.bind<TextView>(R.id.tv_range).apply { - text = if (data.useCondition == "3"||data.useCondition == "2") { - val usage = "${data.available} 查看详情" - SpanBuilder(usage).color(context,usage.length-4,usage.length,R.color.blue).build() - } else data.available - clickDelay { - callback?.onResult(position.toString()) - } - } - holder.bind<View>(R.id.tv_describe).apply { - isSelected = data.isOpenDescription - setOnClickListener { - data.isOpenDescription = !data.isOpenDescription - notifyItemChanged(position) - } - } - holder.setText(R.id.tv_detail,data.instructionsForUse) - holder.bind<View>(R.id.ll_detail).visibility = if (data.isOpenDescription) View.VISIBLE else View.GONE - when(data.useStatus){ //1未使用 2已使用 3已过期 - 1->{ - clLeft.backgroundResource = R.mipmap.coupon_left - clRight.backgroundResource = R.mipmap.coupon_right - ivTag.gone() - tvUse.visible() - tvUse.clickDelay { - EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_HOME)) - (context as BaseActivity).finish() - } - } - 2->{ - clLeft.backgroundResource = R.mipmap.cl_left_disable - clRight.backgroundResource = R.mipmap.cl_right_disable - ivTag.visible() - tvUse.gone() - ivTag.setImageResource(R.mipmap.iv_used) - } - 3->{ - clLeft.backgroundResource = R.mipmap.cl_left_disable - clRight.backgroundResource = R.mipmap.cl_right_disable - ivTag.visible() - tvUse.gone() - ivTag.setImageResource(R.mipmap.iv_disable) - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt deleted file mode 100644 index e9d52da..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt +++ /dev/null @@ -1,185 +0,0 @@ -package com.dollearn.student.ui.worldcup - -import android.os.Bundle -import android.view.View -import android.widget.TextView -import androidx.core.os.bundleOf -import androidx.fragment.app.Fragment -import androidx.viewpager.widget.ViewPager -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.utils.toTime -import cn.sinata.xldutils.visible -import com.github.zackratos.ultimatebar.UltimateBar -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckQrCodeDialog -import com.dollearn.student.dialog.SwitchStudentDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.entity.WorldRank -import com.dollearn.student.network.request -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.getQRcodeImg -import kotlinx.android.synthetic.main.activity_my_world_cup.* -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.find -import org.jetbrains.anko.textColorResource - -class MyWorldActivity : BaseActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_my_world_cup) - initView() - initClick() - } - - val rbCity by lazy { - find<TextView>(R.id.rb_city) - } - val rbCountry by lazy { - find<TextView>(R.id.rb_country) - } - - private val index by lazy { intent.getIntExtra("index",0) } - var stu:Student? = null - var cityName = "" - - var mineRank: WorldRank? = null //我的排名 - - - fun initClick() { - iv_code.clickDelay { - if (stu == null) - return@clickDelay - val dialog = CheckQrCodeDialog() - val content = "{\"id\":${stu?.id},\"isStudent\":${stu?.isStudent}}" - dialog.arguments = bundleOf("qrinfo" to content,"title" to stu?.name) - dialog.showAllowingStateLoss(supportFragmentManager, "checkqr") - } - tv_change.clickDelay { - SwitchStudentDialog.show(supportFragmentManager,stu,object :SwitchStudentDialog.ResultCallback{ - override fun checked(list: List<Student>) { - if (!list.isNullOrEmpty()){ - stu = list.firstOrNull() - stu?.apply { - iv_avatar.setImageURI(avatar) - tv_name.text = name - val content = "{\"id\":${id},\"isStudent\":${isStudent}}" - iv_code.setImageBitmap(getQRcodeImg(this@MyWorldActivity, content)) - getRank() - } - } - } - }) - } - } - - fun initView() { - titleBar.titleView.text = title - titleBar.titleView.textColorResource = R.color.white - titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back_white,0,0,0) - UltimateBar.with(this) - .statusDark(false) - .create().transparentBar() //沉浸状态栏 - tv_year.text = "您的${System.currentTimeMillis().toTime("yyyy")}年场次排名" - rb_city.isSelected = true - getUser() - } - - private fun initTab(){ - val frags = arrayListOf<Fragment>() - frags.add(MyWorldFragment.newInstance(MyWorldFragment.TYPE_DOING)) - frags.add(MyWorldFragment.newInstance(MyWorldFragment.TYPE_UN_START)) - frags.add(WorldRecordFragment()) - frags.add(WorldRankFragment()) - tab_bar.setViewPager(view_pager, arrayOf("进行中","未开始","比赛记录","排名"),this,frags) - view_pager.currentItem = index - view_pager.addOnPageChangeListener(object :ViewPager.OnPageChangeListener{ - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int - ) { - - } - - override fun onPageSelected(position: Int) { - rg_region.visibility = if (position == 3) View.VISIBLE else View.GONE - if (position == 3) showMineRank() else bg.gone() - } - - override fun onPageScrollStateChanged(state: Int) { - - } - }) - } - - fun showMineRank(){ - bg.visibility = if (mineRank!=null){ - when(mineRank!!.rank){ - 1->{ - tv_rank.gone() - iv_rank.visible() - iv_rank.setImageResource(R.mipmap.goldmedal) - } - 2->{ - tv_rank.gone() - iv_rank.visible() - iv_rank.setImageResource(R.mipmap.silvermedal) - } - 3->{ - tv_rank.gone() - iv_rank.visible() - iv_rank.setImageResource(R.mipmap.bronzemedal) - } - else->{ - tv_rank.visible() - iv_rank.gone() - tv_rank.text = mineRank!!.rank.toString() - } - } - iv_mine_avatar.setImageURI(mineRank!!.avatar) - tv_mine_name.text = mineRank!!.name - tv_count.text = mineRank!!.totalSession.toString() - tv_rate.text = "%.2f".format(mineRank!!.winRate)+"%" - View.VISIBLE - }else View.GONE - - } - - private fun getUser() { - HttpManager.getParticipant().request(this){ _, data-> - data?.firstOrNull()?.apply { - stu = this - initTab() - iv_avatar.setImageURI(avatar) - tv_name.text = name - val content = "{\"id\":${id},\"isStudent\":${isStudent}}" - iv_code.setImageBitmap(getQRcodeImg(this@MyWorldActivity, content)) - getRank() - } - } - } - - private fun getRank(){ - HttpManager.getEntrantRank(stu?.id?:"",stu?.isStudent?:0).request(this){_,data-> - data?.apply { - this@MyWorldActivity.cityName = cityName - rb_city.text = cityName - tv_rank_country.text = nationalRank.toString() - tv_rank_city.text = cityRank.toString() - tv_city.text = cityName+"排名" - tv_win.text = win - tv_lose.text = lose - val s = "%.2f".format(winRate)+"%" - tv_win_rate.text = SpanBuilder(s).size(s.length-1,s.length,15).build() - } - } - } - -} - diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt deleted file mode 100644 index 0278419..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.dollearn.student.ui.worldcup - -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.WorldCupBean -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.worldcup.adapter.WorldCupAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import kotlinx.android.synthetic.main.layout_common_list.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.jetbrains.anko.support.v4.startActivity - -class MyWorldFragment : BaseFragment() { - override fun contentViewId() = R.layout.layout_common_list - private val type by lazy { - arguments?.getInt("type", TYPE_UN_START) ?: TYPE_UN_START - } - private var page = 1 - private val list = arrayListOf<WorldCupBean>() - private val adapter = WorldCupAdapter(list,true) - - override fun onFirstVisibleToUser() { - EventBus.getDefault().register(this) - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - adapter.setOnItemClickListener { view, position -> - startActivity<MyWorldInfoActivity>("id" to list[position].id) - } - refreshLayout.setOnRefreshListener { - page = 1 - getData() - } - refreshLayout.setOnLoadMoreListener { - page++ - getData() - } - getData() - } - - fun refresh() { - refreshLayout.autoRefresh() - } - - private fun getData() { - val myWorldActivity = requireActivity() as MyWorldActivity - HttpManager.getMyWorldCupList(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,type,page) - .requestByF(this, success = { _, data -> - if (page == 1) - list.clear() - list.addAll(data ?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data.isNullOrEmpty()) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - }) { _, _ -> - if (page == 1) - refreshLayout.finishRefresh(false) - else - refreshLayout.finishLoadMore(false) - page-- - } - } - - @Subscribe - fun refreshList(e:EmptyEvent){ - } - - override fun onDestroy() { - super.onDestroy() - EventBus.getDefault().unregister(this) - } - - companion object { - //1=未开始 2=进行中 - const val TYPE_UN_START = 1 - const val TYPE_DOING = 2 - fun newInstance(type: Int): MyWorldFragment { - val reserveRecordFragment = MyWorldFragment() - reserveRecordFragment.arguments = bundleOf("type" to type) - return reserveRecordFragment - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt deleted file mode 100644 index 7ea2e96..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt +++ /dev/null @@ -1,161 +0,0 @@ -package com.dollearn.student.ui.worldcup - -import android.webkit.WebChromeClient -import android.webkit.WebViewClient -import androidx.core.os.bundleOf -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.parserTime -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckShopsDialog -import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.ui.worldcup.adapter.StudentQrAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import kotlinx.android.synthetic.main.activity_my_world_detail.* -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.backgroundColorResource - -class MyWorldInfoActivity:TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_my_world_detail - - private val id by lazy { intent.getStringExtra("id")?:"" } - - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - HomeBannerAdapter(bannerImg, this) - } - - private val students = arrayListOf<Student>() - private val studentAdapter = StudentQrAdapter(students) - - override fun initClick() { - tv_action.clickDelay { - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("msg" to "是否确认取消?") - tipDialog.setCallback(object :TipDialog.OnClickCallback{ - override fun onOk() { - HttpManager.cancelMyWorldCup(id).request(this@MyWorldInfoActivity){_,data-> - tv_action.isEnabled = false - tv_action.backgroundColorResource = R.color.disableColor - tv_action.text = "已取消" - } - } - - override fun onCancel() { - } - - }) - tipDialog.show(supportFragmentManager,"cancel") - } - } - - override fun initView() { - banner.adapter = bannerAdapter - rv_student.layoutManager = LinearLayoutManager(this) - rv_student.adapter = studentAdapter - getData() - } - - private fun getData() { - HttpManager.getMyWorldCupInfo(id).request(this){_,data-> - data?.apply { - if (status in 2..4){ - tv_action.isEnabled = false - tv_action.backgroundColorResource = R.color.disableColor - tv_action.text = getStateStr() - }else if (startTime.parserTime("yyyy-MM-dd HH:mm") - System.currentTimeMillis() < 1000L*24*60*60){//开始前一天不能取消 - tv_action.text = "取消" - tv_action.isEnabled = false - tv_action.backgroundColorResource = R.color.disableColor - } - tv_action.visible() - storeInfos?.let { - val stores = StringBuffer() - for (s in it.indices) { - if (s == it.size - 1) stores.append(it[s].name) - else stores.append(it[s].name + ",") - } - tv_shops.text = stores - if (stores.length > 20) { - mtvcheckmore.visible() - mtvcheckmore.clickDelay { - val checkShopsDialog = CheckShopsDialog() - checkShopsDialog.arguments = - bundleOf("shopinfo" to stores.toString(),"type" to CheckShopsDialog.TYPE_WORLD_SITE) - checkShopsDialog.showAllowingStateLoss( - supportFragmentManager, - "checkshops" - ) - } - } else { - mtvcheckmore.gone() - } - } - - val list = infoImg.split(",").map { - Banner(url = it) - } - bannerImg.addAll(list) - bannerAdapter.notifyDataSetChanged() - banner.currentItem = 1 - tv_name.text = name - tv_hot.text = heat.toString() -// tv_address.text = "${storeName}(${storeAddress})" - tv_deadline.text = if (registrationClosingTime.isNullOrEmpty()) endTime else registrationClosingTime - tv_start_time.text = startTime - tv_end_time.text = endTime - tv_age.text = "${age}岁" - tv_sex.text = getJoinSex() - tv_city.text = "${province}|${city}" - tv_play_address.text = address - - students.addAll(participants?: arrayListOf()) - studentAdapter.notifyDataSetChanged() - - when(payType){//支付方式(0=免费,1=微信,2=支付宝,3=玩湃币,4=课时) - 0->{ - tv_price.text = "免费" - tv_total.text = "免费" - } - 1,2->{ - tv_price.text = "¥%.2f/人".format(unitPrice?:0.0) - tv_total.text = "合计:¥%.2f".format((unitPrice?:0.0)*(participants?.size?:0)) - } - 3->{ - tv_price.text = "%d玩湃币/人".format((unitPrice?:0.0).toInt()) - tv_total.text = "合计:%d玩湃币".format(((unitPrice?:0.0)*(participants?.size?:0)).toInt()) - } - 4->{ - tv_price.text = "%d课时/人".format((unitPrice?:0.0).toInt()) - tv_total.text = "合计:%d课时".format(((unitPrice?:0.0)*(participants?.size?:0)).toInt()) - } - } - - tv_introduce.text = intro - if (!content.isNullOrEmpty()) { - val settings = webView.settings - settings.javaScriptEnabled = true - settings.javaScriptCanOpenWindowsAutomatically = true - settings.defaultTextEncodingName = "utf-8" - settings.domStorageEnabled = true - webView.webChromeClient = object : WebChromeClient() {} - webView.webViewClient = object : WebViewClient() {} - val sHead = - "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" - webView!!.loadDataWithBaseURL(null, sHead + content, "text/html", "utf-8", null) - } - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt index e8874ed..e65bf9a 100644 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt @@ -14,7 +14,7 @@ import com.bumptech.glide.request.transition.Transition import com.github.zackratos.ultimatebar.UltimateBar import com.dollearn.student.R -import com.dollearn.student.WeparkApplication +import com.dollearn.student.DollearnApplication import com.dollearn.student.network.HttpManager import com.dollearn.student.network.entity.Banner import com.dollearn.student.network.entity.CommonData @@ -178,7 +178,7 @@ } private fun getData(){ - HttpManager.getWorldCupList(WeparkApplication.storeId,WeparkApplication.lat,WeparkApplication.lon,heatSort,condition,siteId,search).request(this,success = {_,data-> + HttpManager.getWorldCupList(DollearnApplication.storeId,DollearnApplication.lat,DollearnApplication.lon,heatSort,condition,siteId,search).request(this,success = { _, data-> refreshLayout.finishRefresh() list.clear() list.addAll(data?: arrayListOf()) diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt deleted file mode 100644 index 247efe2..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt +++ /dev/null @@ -1,119 +0,0 @@ -package com.dollearn.student.ui.worldcup - -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.dialog.ChooseYearDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.WorldRank -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.worldcup.adapter.WorldRankAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.fragment_world_rank.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe - -class WorldRankFragment:BaseFragment() { - override fun contentViewId() = R.layout.fragment_world_rank - - private val list = arrayListOf<WorldRank>() - private val adapter = WorldRankAdapter(list) - - private var sort = 2 //排序,1=场次,2=胜率 - private var year:Int? = null - - private val rb_city by lazy { - (requireActivity() as MyWorldActivity).rbCity - } - private val rb_country by lazy { - (requireActivity() as MyWorldActivity).rbCountry - } - - override fun onFirstVisibleToUser() { - EventBus.getDefault().register(this) -// rb_city.text = (requireActivity() as MyWorldActivity).cityName -// rb_city.isSelected = true - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - refreshLayout.setOnRefreshListener { - getData() - } - getData() - - tv_filter.setOnClickListener { - if (refreshLayout.isRefreshing) - myToast("等待刷新") - else{ - sort = if (sort == 1) 2 else 1 - tv_filter.text = if (sort == 1) "按场次排名" else "按胜率排名" - refreshLayout.autoRefresh() - } - } - - tv_year.clickDelay { - val chooseYearDialog = ChooseYearDialog() - chooseYearDialog.callback = object :StringCallback{ - override fun onResult(rst: String) { - tv_year.text = rst - if (rst == "全部") - year = null - else{ - year = rst.substring(0,4).toInt() - } - refreshLayout.autoRefresh() - } - } - chooseYearDialog.showAllowingStateLoss(childFragmentManager,"rankYear") - } - - rb_city.setOnClickListener { - if (refreshLayout.isRefreshing) - myToast("等待刷新") - else{ - rb_city.isSelected = true - rb_country.isSelected = false - refreshLayout.autoRefresh() - } - } - - rb_country.setOnClickListener { - if (refreshLayout.isRefreshing) - myToast("等待刷新") - else{ - rb_city.isSelected = false - rb_country.isSelected = true - refreshLayout.autoRefresh() - } - } - } - - private fun getData() { - val myWorldActivity = requireActivity() as MyWorldActivity - val radius = if (rb_city.isSelected) 2 else 1 - HttpManager.getWorldCupRank(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,radius,sort,year) - .requestByF(this, success = { _, data -> - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - refreshLayout.finishRefresh() - myWorldActivity.mineRank = data?.filter { it.oneself == 1 }?.firstOrNull() - myWorldActivity.showMineRank() - }) { _, _ -> - refreshLayout.finishRefresh(false) - } - } - - @Subscribe - fun refreshList(e: EmptyEvent){ - } - - override fun onDestroy() { - super.onDestroy() - EventBus.getDefault().unregister(this) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt deleted file mode 100644 index 13f3709..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt +++ /dev/null @@ -1,73 +0,0 @@ -package com.dollearn.student.ui.worldcup - -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.WorldCupRecordItem -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.worldcup.adapter.WorldCupRecordAdapter -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import kotlinx.android.synthetic.main.fragment_wc_record.* -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe - -class WorldRecordFragment:BaseFragment(){ - override fun contentViewId() = R.layout.fragment_wc_record - - private var page = 1 - private val list = arrayListOf<WorldCupRecordItem>() - private val adapter = WorldCupRecordAdapter(list) - - override fun onFirstVisibleToUser() { - EventBus.getDefault().register(this) - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - refreshLayout.setOnRefreshListener { - page = 1 - getData() - } - refreshLayout.setOnLoadMoreListener { - page++ - getData() - } - getData() - } - - private fun getData() { - val myWorldActivity = requireActivity() as MyWorldActivity - HttpManager.getWorldCupMatchRecord(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,page) - .requestByF(this, success = { _, data -> - tv_total.text = "总场次:${data?.totalSession?:0}场" - if (page == 1) - list.clear() - list.addAll(data?.list?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data?.list?.isNullOrEmpty() == true) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - }) { _, _ -> - if (page == 1) - refreshLayout.finishRefresh(false) - else - refreshLayout.finishLoadMore(false) - page-- - } - } - - @Subscribe - fun refreshList(e: EmptyEvent){ - } - - override fun onDestroy() { - super.onDestroy() - EventBus.getDefault().unregister(this) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt deleted file mode 100644 index 8b8f58f..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.dollearn.student.ui.worldcup.adapter - -import android.view.View -import android.widget.ImageView -import android.widget.TextView -import androidx.core.os.bundleOf -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.dialog.CheckQrCodeDialog -import com.dollearn.student.network.entity.Student -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.getQRcodeImg -import java.util.ArrayList - -class StudentQrAdapter(students: ArrayList<Student>):HFRecyclerAdapter<Student>(students, R.layout.item_stu_wc_detail) { - - override fun onBind(holder: ViewHolder, position: Int, data: Student) { - val tvIdCard = holder.bind<TextView>(R.id.tv_idCard) - val name = "姓名:${data.name}" - val age = "年龄:${data.age}岁" - val phone = "联系电话:${if (data.phone.isNullOrEmpty()) "" else data.phone}" - val idCard = "身份证号:${data.idcard}" - tvIdCard.text = SpanBuilder(idCard).color(context,0,5,R.color.textColor66).bold(5,idCard.length).build() - holder.setText(R.id.tv_name,SpanBuilder(name).color(context,0,3,R.color.textColor66).bold(3,name.length).build()) - holder.setText(R.id.tv_age,SpanBuilder(age).color(context,0,3,R.color.textColor66).bold(3,age.length).build()) - holder.setText(R.id.tv_phone,SpanBuilder(phone).color(context,0,5,R.color.textColor66).bold(5,phone.length).build()) - val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}" - holder.bind<ImageView>(R.id.iv_code).apply { - setImageBitmap(getQRcodeImg(context, content)) - clickDelay { - val dialog = CheckQrCodeDialog() - dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name) - dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr") - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt deleted file mode 100644 index fb9cc2d..0000000 --- a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.dollearn.student.ui.worldcup.adapter - -import android.widget.ImageView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.WorldCupRecordItem -import java.util.ArrayList - -class WorldCupRecordAdapter(list: ArrayList<WorldCupRecordItem>) :HFRecyclerAdapter<WorldCupRecordItem>(list, R.layout.item_wc_record){ - override fun onBind(holder: ViewHolder, position: Int, data: WorldCupRecordItem) { - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_score,"${data.ourScore}:${data.opponentScore}") - holder.setText(R.id.tv_integral,"获得积分:${data.award}") - holder.setText(R.id.tv_time,data.startTime) - holder.bind<ImageView>(R.id.iv_result).setImageResource(if (data.matchResult == 1) R.mipmap.shengli else R.mipmap.shibai) - } - -} diff --git a/app/src/main/java/com/dollearn/student/utils/Const.kt b/app/src/main/java/com/dollearn/student/utils/Const.kt index f3df552..6c102bc 100644 --- a/app/src/main/java/com/dollearn/student/utils/Const.kt +++ b/app/src/main/java/com/dollearn/student/utils/Const.kt @@ -6,30 +6,22 @@ */ object Const { const val Tag = "GWXLog" - const val TICTag = "TICLog" const val PAGE_SIZE = 20 //列表页大小 //各类第三方key const val UMENG_KEY = "5face26b45b2b751a92a70b8" - const val WX_APP_ID = "wx41d32f362ba0f911" - const val WX_SECRET = "cf0ebf950f5926a69041a0e2bbe20f3e" + const val WX_APP_ID = "wx723c6b080f204773" + const val WX_SECRET = "b7904c5721aeccc20fd11fe9afc23f4d" const val QQ_APP_ID = "101912859" const val QQ_SECRET = "692a092b65a6ec830fb62d1dc2270813" - const val JX_APP_KEY = "cw52ddjimxhzzw#gwx597#10001" const val APP_KEY = "BT7NPhA0f775uzcUuftWjCE1TYZlWmHZ" //接口秘钥 - /** - * 实时音视频sdkAppid - */ - const val TIC_APP_ID = 1400455000 //release -// const val TIC_APP_ID = 1400127140 //demo - - const val FIRST_LAUNCH = "isFirst" + const val RV = "rightVoice" + const val EV = "errorVoice" + const val SCORE_DURATION = "score_duration" object Permission{ - const val LOCATION_REFUSE = "LOCATION_REFUSE" const val CAMERA_REFUSE = "CAMERA_REFUSE" - const val FILE_REFUSE = "FILE_REFUSE" } object User { @@ -37,19 +29,9 @@ const val USER_ID = "userId" const val APP_ID = "appid" const val IS_AGREE = "isAgree" //是否同意用户协议和隐私协议 - const val IS_READ = "isRead" //是否阅读并同意过登录协议 const val GRADE = "grade" //年级 - const val USER_HEAD = "userHead" - const val USER_NAME = "userName" - const val USER_PWD = "pwd" - const val USER_PHONE = "userPhone" } - object Share{ - const val TITLE = "海豚英语" - const val NORMAL_CONTENT = "快来使用海豚英语吧" //推广中心分享 - const val COURSE_CONTENT = "这个课很不错哦" //运动营分享 - } object Method{ const val PING_RECEIVE = "OK" @@ -65,7 +47,7 @@ const val CHANGE_SHOP = 0x01 //更换门店 const val SCORE_CHANGED = 0x02 //积分改变 const val REFRESH_USER = 0x03 //刷新福利首页信息 - const val SWITCH_HOME = 0x04 //切换到首页 + const val CLICK_GAME_ITEM = 0x04 //超级听力点击item const val NEXT_SUBJECT = 0x05 //下一大题 diff --git a/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt b/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt index 256cba1..46f6669 100644 --- a/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt +++ b/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt @@ -5,20 +5,18 @@ import android.util.Log import android.view.View import android.widget.ImageView -import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import cn.sinata.xldutils.activity.BaseActivity import com.bumptech.glide.Glide import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition -import com.github.promeg.pinyinhelper.Pinyin -import com.dollearn.student.utils.interfaces.StringCallback -import com.dollearn.student.network.entity.Grade import com.dollearn.student.utils.OSSUtil import com.dollearn.student.utils.extention.ViewClickDelay.SPACE_TIME import com.dollearn.student.utils.extention.ViewClickDelay.hash import com.dollearn.student.utils.extention.ViewClickDelay.lastClickTime import com.dollearn.student.utils.glide.GlideUtil +import com.dollearn.student.utils.interfaces.StringCallback +import com.github.promeg.pinyinhelper.Pinyin import kotlinx.android.synthetic.main.activity_course_deatil.* import org.jetbrains.anko.toast import top.zibin.luban.Luban @@ -27,15 +25,15 @@ fun String.getInitial():String = if (startsWith("重庆")) "C" else Pinyin.toPinyin(this[0])[0].toString() -fun String.uploadWithCompress(act:BaseActivity,callback: StringCallback){ +fun String.uploadWithCompress(act: BaseActivity, callback: StringCallback){ Luban.with(act).load(File(this)) .ignoreBy(100).setTargetDir(act.getPath()) .filter { path -> path.isNotEmpty() || path.toLowerCase().endsWith(".gif") } - .setCompressListener(object :OnCompressListener{ + .setCompressListener(object : OnCompressListener { override fun onSuccess(file: File) { - Log.e("gwx","压缩完成") + Log.e("gwx", "压缩完成") Thread(Runnable { - OSSUtil(act).uploadSingle(file.path,object :OSSUtil.OSSUploadCallBack(){ + OSSUtil(act).uploadSingle(file.path, object : OSSUtil.OSSUploadCallBack() { override fun onFial(message: String?) { super.onFial(message) act.runOnUiThread { @@ -62,7 +60,7 @@ } override fun onStart() { - Log.e("gwx","压缩开始") + Log.e("gwx", "压缩开始") act.showDialog(canCancel = false) } }).launch() @@ -94,7 +92,7 @@ * 使用Glide计算网络图片的宽高比加载长图 * 父布局必须是ConstraintLayout:使用 dimensionRatio 属性 */ -fun String.loadLongImage(context:Context,imageView: ImageView){ +fun String.loadLongImage(context: Context, imageView: ImageView){ Glide.with(context).asBitmap().load(this) .into(object : SimpleTarget<Bitmap?>() { override fun onResourceReady( @@ -105,7 +103,35 @@ layoutParams.dimensionRatio = "${resource.width}:${resource.height}" imageView.layoutParams = layoutParams - GlideUtil.load(context,this@loadLongImage,imageView,0) + GlideUtil.load(context, this@loadLongImage, imageView, 0) } }) +} + +fun Int.formatToChinese():String{ + var number = this + val DIGITS = arrayListOf('零', '一', '二', '三', '四', '五', '六', '七', '八', '九') + val UNITS = arrayListOf('0', '十', '百', '千', '万') + if (number == 0) { + return DIGITS[0].toString() + } + val chineseNumber = StringBuilder() + var unitPlace = 0 // 位数,从百位开始 + var lastWasZero = false // 前一个数字是否为零 + while (number > 0) { + val digit: Int = number % 10 + lastWasZero = if (digit == 0) { + if (!lastWasZero) { + chineseNumber.insert(0, DIGITS[0]) + } + true + } else { + chineseNumber.insert(0, DIGITS[digit]) + chineseNumber.insert(0, UNITS[unitPlace]) + false + } + number /= 10 + unitPlace++ + } + return chineseNumber.toString().replace("0","") } \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java b/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java index e483548..3355fa3 100644 --- a/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java +++ b/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java @@ -22,7 +22,7 @@ import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import com.dollearn.student.R; -import com.dollearn.student.WeparkApplication; +import com.dollearn.student.DollearnApplication; import java.util.concurrent.ExecutionException; @@ -261,7 +261,7 @@ .error(R.color.page_bg) .placeholder(R.color.page_bg) .diskCacheStrategy(diskCacheStrategy) - .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(WeparkApplication.Companion.getInstance(), num)))); + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(DollearnApplication.Companion.getInstance(), num)))); } return chatcricleFoursUserHead; } @@ -280,7 +280,7 @@ .error(R.color.black) .placeholder(R.color.black) .diskCacheStrategy(diskCacheStrategy) - .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(WeparkApplication.Companion.getInstance(), num)))); + .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(DollearnApplication.Companion.getInstance(), num)))); } return chatcricleFoursUserHead; } diff --git a/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml b/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml new file mode 100644 index 0000000..e1245fd --- /dev/null +++ b/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="8dp"/> + <solid android:color="@color/page_bg"/> + <stroke android:color="@color/colorPrimary" android:width="1dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_enable_choose.xml b/app/src/main/res/drawable/selector_enable_choose.xml new file mode 100644 index 0000000..9566e78 --- /dev/null +++ b/app/src/main/res/drawable/selector_enable_choose.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_selected="true" android:drawable="@drawable/bg_blue_line_8dp"/> + <item android:state_selected="false" android:drawable="@drawable/bg_blue_line_grey_8dp"/> +</selector> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_coupon.xml b/app/src/main/res/layout/activity_coupon.xml deleted file mode 100644 index dce1f27..0000000 --- a/app/src/main/res/layout/activity_coupon.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.flyco.tablayout.SlidingTabLayout - android:layout_width="match_parent" - android:layout_height="45dp" - app:layout_constraintTop_toTopOf="parent" - app:tl_textBold="BOTH" - app:tl_textSelectColor="@color/black" - app:tl_textUnselectColor="@color/textColor66" - app:tl_indicator_color="@color/colorPrimary" - app:tl_indicator_corner_radius="2dp" - app:tl_indicator_height="3dp" - app:tl_indicator_width="56dp" - app:tl_textsize="16sp" - app:tl_tab_space_equal="true" - android:id="@+id/tab_top"/> - <TextView - android:layout_width="100dp" - android:layout_height="wrap_content" - android:id="@+id/tv_filter" - app:layout_constraintTop_toBottomOf="@id/tab_top" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginTop="15dp" - android:layout_marginEnd="11dp" - android:text="全部" - android:textSize="16sp" - android:padding="8dp" - android:background="@drawable/bg_grey_line_4dp" - android:textColor="@color/textColor" - android:drawableEnd="@mipmap/icon_nav_open"/> - <androidx.viewpager.widget.ViewPager - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/view_pager" - android:layout_marginTop="1dp" - app:layout_constraintTop_toBottomOf="@id/tv_filter" - app:layout_constraintBottom_toBottomOf="parent" /> - <View - android:layout_width="match_parent" - android:layout_height="4dp" - android:background="@drawable/bg_shadow_top" - app:layout_constraintTop_toBottomOf="@id/tab_top"/> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/iv_button" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:src="@mipmap/kefu" - android:visibility="gone" - android:layout_marginBottom="150dp" - android:layout_marginEnd="10dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_exchange_record.xml b/app/src/main/res/layout/activity_exchange_record.xml index d726b10..63405ee 100644 --- a/app/src/main/res/layout/activity_exchange_record.xml +++ b/app/src/main/res/layout/activity_exchange_record.xml @@ -2,9 +2,21 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_record" + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_marginHorizontal="230dp" - android:layout_height="match_parent"/> + android:layout_height="match_parent"> + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_record" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_join_course.xml b/app/src/main/res/layout/activity_join_course.xml deleted file mode 100644 index 388d6d8..0000000 --- a/app/src/main/res/layout/activity_join_course.xml +++ /dev/null @@ -1,394 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <com.dollearn.student.views.ScrollInterceptScrollView - android:id="@+id/scrollView" - android:layout_width="match_parent" - android:layout_height="0dp" - android:scrollbars="none" - app:layout_constraintBottom_toTopOf="@id/ll_bottom" - app:layout_constraintTop_toTopOf="parent"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <com.youth.banner.Banner - android:id="@+id/banner" - android:layout_width="match_parent" - android:layout_height="220dp" - app:is_auto_loop="true" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_name" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/mtvtag" - android:layout_height="wrap_content" - android:layout_margin="14dp" - android:textColor="@color/textColor" - android:textSize="18sp" - android:textStyle="bold" - app:layout_constraintTop_toBottomOf="@id/banner" /> - - <TextView - android:id="@+id/mtvtag" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/shap_tag" - android:paddingStart="5dp" - android:paddingTop="3dp" - android:paddingEnd="5dp" - android:paddingBottom="3dp" - android:textColor="@color/white" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="@+id/tv_name" - tools:text="常规班" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_time" - android:layout_width="match_parent" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/tv1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:text="上课时间:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:layout_marginStart="14dp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"/> - - <TextView - android:id="@+id/tv_week" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/textColor" - android:textSize="14sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv1" - app:layout_constraintStart_toEndOf="@id/tv1" /> - - <TextView - android:id="@+id/tv_time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_week" - app:layout_constraintTop_toBottomOf="@id/tv_week" /> - - <View - android:id="@+id/line1" - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_time" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - - - <RelativeLayout - android:id="@+id/mll_class_yxq" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:visibility="gone" - android:layout_marginTop="14dp" - app:layout_constraintTop_toBottomOf="@+id/cl_time" - tools:visibility="visible"> - - <TextView - android:id="@+id/mtvyxq" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:text="运动营有效期:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/mtv_class_yxq" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:layout_toRightOf="@+id/mtvyxq" - android:textColor="@color/textColor" - android:textSize="14sp" - android:text="购买当天有效" /> - - <View - android:id="@+id/line2" - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:layout_below="@id/mtv_class_yxq" - android:background="@color/dividing_line_color" - android:layout_alignParentBottom="true"/> - </RelativeLayout> - - <TextView - android:id="@+id/tv_shop" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:textColor="@color/textColor" - android:textSize="14sp" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="10dp" - app:layout_constraintStart_toEndOf="@id/tv_1" - app:layout_constraintTop_toBottomOf="@id/mll_class_yxq" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="上课门店:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - android:id="@+id/tv_1" - app:layout_constraintBaseline_toBaselineOf="@id/tv_shop" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp"/> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_shop" /> - - <TextView - android:id="@+id/tv_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:textColor="@color/textColor" - android:textSize="14sp" - app:layout_constraintStart_toStartOf="@id/tv_shop" - app:layout_constraintEnd_toEndOf="@id/tv_shop" - app:layout_constraintTop_toBottomOf="@id/tv_shop" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="上课地址:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_address" - app:layout_constraintStart_toStartOf="@id/tv_1" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> - - <TextView - android:id="@+id/tv_2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:text="选择运动营套餐:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_1" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_lesson_count" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="40dp" - app:layout_constraintTop_toBottomOf="@id/tv_2" /> - - <View - android:id="@+id/line" - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_margin="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/rv_lesson_count" /> - - <androidx.constraintlayout.widget.Group - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/gp_count" - app:constraint_referenced_ids="tv_2,rv_lesson_count,line"/> - - <TextView - android:id="@+id/tv_add_student" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="18dp" - android:drawableEnd="@mipmap/ic_add" - android:drawablePadding="6dp" - android:paddingVertical="10dp" - android:text="选择运动营成员" - android:textSize="14sp" - app:layout_constraintEnd_toEndOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/rv_lesson_count" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="运动营成员" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_add_student" - app:layout_constraintStart_toStartOf="@id/tv_1" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_student" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_add_student" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="8dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/rv_student" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_coupon" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/rv_student"> - - <TextView - android:id="@+id/tv_coupon" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="14dp" - android:text="去选择" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_3" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:text="可用优惠券" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_coupon" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_coupon_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="(0张可用)" - android:textColor="@color/textColor" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_3" - app:layout_constraintStart_toEndOf="@id/tv_3" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginHorizontal="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_coupon" /> - </androidx.constraintlayout.widget.ConstraintLayout> - </androidx.constraintlayout.widget.ConstraintLayout> - </com.dollearn.student.views.ScrollInterceptScrollView> - - <LinearLayout - android:id="@+id/ll_bottom" - android:layout_width="match_parent" - android:layout_height="75dp" - android:gravity="center_vertical" - app:layout_constraintBottom_toBottomOf="parent"> - - <TextView - android:id="@+id/tv_price" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_marginStart="8dp" - android:gravity="center" - android:text="¥0" - android:textColor="@color/colorYellow" - android:textSize="21sp" - android:textStyle="bold" /> - - <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="9dp" - android:layout_weight="1" - android:orientation="vertical"> - - <TextView - android:id="@+id/tv_vip_price" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/color_text_price" - android:textSize="13sp" - android:textStyle="bold" - tools:text="会员价:¥80" /> - - <TextView - android:id="@+id/tv_coin_price" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="2dp" - android:textColor="@color/color_text_price" - android:textSize="13sp" - android:textStyle="bold" - tools:text="会员价:¥80" /> - </LinearLayout> - - <TextView - android:id="@+id/tv_action" - style="@style/style_btn_action" - android:layout_width="160dp" - android:layout_height="wrap_content" - android:layout_marginEnd="10dp" - android:text="立即报名" /> - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toTopOf="@id/ll_bottom" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 695d9c5..3a46fea 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -2,6 +2,7 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" + android:background="@color/page_bg" android:layout_height="match_parent"> <ImageView diff --git a/app/src/main/res/layout/activity_my_qr.xml b/app/src/main/res/layout/activity_my_qr.xml deleted file mode 100644 index d3a4c52..0000000 --- a/app/src/main/res/layout/activity_my_qr.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.core.widget.NestedScrollView - xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="二维码注意事项" - android:textStyle="bold" - android:textSize="16sp" - android:layout_marginTop="15dp" - android:layout_marginStart="15dp" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginHorizontal="15dp" - android:textSize="14sp" - android:id="@+id/tv_tip"/> - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_student" - android:layout_marginTop="10dp"/> - </LinearLayout> -</androidx.core.widget.NestedScrollView> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_world_detail.xml b/app/src/main/res/layout/activity_my_world_detail.xml deleted file mode 100644 index ef5225e..0000000 --- a/app/src/main/res/layout/activity_my_world_detail.xml +++ /dev/null @@ -1,439 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <com.dollearn.student.views.ScrollInterceptScrollView - android:id="@+id/scrollView" - android:layout_width="match_parent" - android:layout_height="0dp" - android:scrollbars="none" - app:layout_constraintBottom_toTopOf="@id/tv_action" - app:layout_constraintTop_toTopOf="parent"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <com.youth.banner.Banner - android:id="@+id/banner" - android:layout_width="match_parent" - android:layout_height="220dp" - app:indicator_height="0dp" - app:is_auto_loop="true" - app:is_infinite_loop="true" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_name" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="14dp" - android:textColor="@color/textColor" - android:textSize="18sp" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@id/tv_hot" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/banner" /> - - <TextView - android:id="@+id/tv_hot" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="14dp" - android:textColor="@color/colorPrimary" - android:textSize="18sp" - android:textStyle="bold" - android:drawableStart="@mipmap/ic_heat" - android:drawablePadding="4dp" - android:gravity="center" - android:text="0" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" /> - - - <TextView - android:id="@+id/tv_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="7dp" - android:layout_marginEnd="14dp" - android:visibility="gone" - android:drawableStart="@mipmap/ic_address" - android:drawablePadding="5dp" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="截止报名时间" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> - - <TextView - android:id="@+id/tv_deadline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_1" - tools:text="2023-03-15 09:00" /> - - <TextView - android:id="@+id/tv_2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="开始时间" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_deadline" /> - - <TextView - android:id="@+id/tv_start_time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_2" - tools:text="2023-03-15 09:00" /> - - <TextView - android:id="@+id/tv_3" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="结束时间" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_start_time" /> - - <TextView - android:id="@+id/tv_end_time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_3" - tools:text="2023-03-15 09:00" /> - - <TextView - android:id="@+id/tv_4" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="报名年龄" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_end_time" /> - - <TextView - android:id="@+id/tv_age" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_4" - tools:text="7-12岁" /> - - <TextView - android:id="@+id/tv_44" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="参赛者性别" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_age" /> - - <TextView - android:id="@+id/tv_sex" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_44" - tools:text="男" /> - - <TextView - android:id="@+id/tv_5" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="参赛地址" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_sex" /> - - <TextView - android:id="@+id/tv_city" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="14dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_play_address" - app:layout_constraintEnd_toEndOf="parent" - tools:text="四川|成都" /> - - <TextView - android:id="@+id/tv_play_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="10dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@id/tv_city" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_5" - tools:text="天府新谷9号楼1005A" /> - - <TextView - android:id="@+id/tv_66" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="参与赛点" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_play_address" /> - - <LinearLayout - android:id="@+id/mllshops" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@+id/tv_66"> - - <TextView - android:id="@+id/tv_shops" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginEnd="10dp" - android:layout_weight="1" - android:ellipsize="end" - android:maxLines="1" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@id/tv_city" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_5" - tools:text="玩湃-喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2" /> - - <TextView - android:id="@+id/mtvcheckmore" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="14dp" - android:text="@string/chekmmore" - android:textColor="@color/colorPrimary" /> - </LinearLayout> - - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/mllshops" /> - - <TextView - android:id="@+id/tv_61" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:text="赛事人员" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/mllshops" /> - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_student" - android:layout_marginTop="10dp" - app:layout_constraintTop_toBottomOf="@id/tv_61"/> - - <TextView - android:id="@+id/tv_6" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:text="比赛费用" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/rv_student" /> - - <TextView - android:id="@+id/tv_price" - style="@style/style_common_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="12dp" - android:text="¥" - app:layout_constraintStart_toStartOf="@id/tv_6" - app:layout_constraintTop_toBottomOf="@id/tv_6" /> - - <TextView - android:id="@+id/tv_total" - style="@style/style_common_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="12dp" - android:text="合计:" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_6" - android:layout_marginEnd="14dp"/> - - - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_price" /> - - <TextView - android:id="@+id/tv_7" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:text="比赛简介" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_price" /> - - <TextView - android:id="@+id/tv_introduce" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="7dp" - android:textColor="@color/textColor99" - android:textSize="14sp" - app:layout_constraintTop_toBottomOf="@id/tv_7" - tools:text="这是欢乐跑活动赛事简介,本次活动由海豚英语组织,提高全民素质…" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_introduce" /> - - <TextView - android:id="@+id/tv_8" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="28dp" - android:text="比赛详情" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_introduce" /> - - <WebView - android:id="@+id/webView" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - app:layout_constraintTop_toBottomOf="@id/tv_8" /> - </androidx.constraintlayout.widget.ConstraintLayout> - </com.dollearn.student.views.ScrollInterceptScrollView> - - <TextView - android:id="@+id/tv_action" - android:layout_width="match_parent" - android:layout_height="48dp" - android:background="@color/colorPrimary" - android:gravity="center" - android:text="取消" - android:visibility="gone" - android:textColor="@color/white" - android:textSize="18sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="parent" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_reserve_record.xml b/app/src/main/res/layout/activity_reserve_record.xml deleted file mode 100644 index 1c2a442..0000000 --- a/app/src/main/res/layout/activity_reserve_record.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_1" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:text="当前运动营成员:" - android:textColor="@color/colorTextDark" - android:textSize="18sp" - android:textStyle="bold" - android:layout_marginStart="14dp" - android:layout_marginTop="18dp"/> - <com.flyco.tablayout.SlidingTabLayout - android:layout_width="match_parent" - android:layout_height="45dp" - app:layout_constraintTop_toBottomOf="@id/tv_1" - app:tl_textBold="BOTH" - app:tl_textSelectColor="@color/black" - app:tl_textUnselectColor="@color/textColor66" - app:tl_indicator_color="@color/colorPrimary" - app:tl_indicator_corner_radius="2dp" - app:tl_indicator_height="3dp" - android:layout_marginTop="12dp" - app:tl_indicator_width="56dp" - app:tl_textsize="16sp" - app:tl_tab_space_equal="true" - android:id="@+id/tab_top"/> - <TextView - android:id="@+id/tv_search" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="搜索" - android:textColor="@color/colorPrimary" - android:padding="10dp" - app:layout_constraintBaseline_toBaselineOf="@id/et_search" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="4dp" - android:textSize="14sp" - android:textStyle="bold"/> - <EditText - android:id="@+id/et_search" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_search" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tab_top" - android:layout_marginTop="12dp" - android:textSize="14sp" - android:hint="输入门店名称" - android:paddingVertical="10dp" - android:drawablePadding="6dp" - android:paddingHorizontal="4dp" - android:drawableStart="@mipmap/icon_search_gray" - android:background="@drawable/bg_grey_4dp" - android:layout_marginStart="14dp"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/cb_type" - android:button="@null" - android:background="@null" - app:layout_constraintTop_toBottomOf="@id/et_search" - android:text="上课时间" - android:layout_marginTop="4dp" - android:paddingVertical="13dp" - android:textSize="16sp" - android:drawablePadding="1dp" - android:textColor="@color/selector_black_red" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:drawableEnd="@drawable/selector_filter_check"/> - - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/cb_type" - app:layout_constraintBottom_toBottomOf="parent"/> - <View - android:layout_width="match_parent" - android:layout_height="6dp" - app:layout_constraintTop_toTopOf="@id/view_pager" - android:background="@drawable/bg_shadow_top"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_score_shop.xml b/app/src/main/res/layout/activity_score_shop.xml deleted file mode 100644 index 0267f54..0000000 --- a/app/src/main/res/layout/activity_score_shop.xml +++ /dev/null @@ -1,244 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_user" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="10dp" - android:background="@drawable/bg_white_4dp" - android:elevation="4dp" - app:layout_constraintTop_toTopOf="parent"> - - <com.facebook.drawee.view.SimpleDraweeView - android:id="@+id/iv_avatar" - style="@style/DefaultHeadStyle" - android:layout_width="62dp" - android:layout_height="62dp" - android:layout_marginStart="8dp" - android:layout_marginTop="15dp" - android:layout_marginBottom="16dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="15dp" - android:layout_marginTop="9dp" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintStart_toEndOf="@id/iv_avatar" - app:layout_constraintTop_toTopOf="@id/iv_avatar" /> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="6dp" - android:text="可用积分:" - android:textColor="@color/textColor" - android:textSize="12sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_score" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:alpha="0.8" - android:text="0积分" - android:textColor="@color/color_text_price" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1" - app:layout_constraintStart_toEndOf="@id/tv_1" /> - - <TextView - android:id="@+id/tv_exchange_record" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="5dp" - android:padding="10dp" - android:text="兑换记录>>" - android:textColor="@color/blue" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_score_record" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="10dp" - android:background="@drawable/bg_gradient_2dp" - android:paddingHorizontal="15dp" - android:paddingVertical="5dp" - android:text="积分明细" - android:textColor="@color/white" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_exchange_record" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - <TextView - android:id="@+id/tv_search" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="4dp" - android:padding="10dp" - android:text="搜索" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/et_search" - app:layout_constraintEnd_toEndOf="parent" /> - - <EditText - android:id="@+id/et_search" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="15dp" - android:background="@drawable/bg_grey_4dp" - android:drawableStart="@mipmap/icon_search_gray" - android:drawablePadding="6dp" - android:hint="输入商品名称" - android:paddingHorizontal="4dp" - android:paddingVertical="10dp" - android:textSize="14sp" - app:layout_constraintEnd_toStartOf="@id/tv_search" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/cl_user" /> - - <CheckBox - android:id="@+id/cb_sort" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:layout_weight="1" - android:background="@null" - android:button="@null" - android:drawableEnd="@drawable/selector_filter_check" - android:drawablePadding="1dp" - android:gravity="center" - android:maxWidth="114dp" - android:paddingHorizontal="13dp" - android:paddingVertical="13dp" - android:singleLine="true" - android:text="默认排序" - android:textColor="@color/selector_black_red" - android:textSize="16sp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/et_search" /> - - <CheckBox - android:id="@+id/cb_type" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="120dp" - android:layout_weight="1" - android:background="@null" - android:button="@null" - android:drawableEnd="@drawable/selector_filter_check" - android:drawablePadding="1dp" - android:gravity="center" - android:paddingHorizontal="14dp" - android:paddingVertical="13dp" - android:text="商品类型" - android:textColor="@color/selector_black_red" - android:textSize="16sp" - app:layout_constraintBaseline_toBaselineOf="@id/cb_sort" - app:layout_constraintStart_toStartOf="parent" /> - - <CheckBox - android:id="@+id/cb_syshop" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:background="@null" - android:button="@null" - android:drawableEnd="@drawable/selector_filter_check" - android:gravity="center" - android:paddingHorizontal="10dp" - android:paddingVertical="13dp" - android:maxWidth="140dp" - android:singleLine="true" - android:ellipsize="end" - android:text="适用门店" - android:textColor="@color/selector_black_red" - android:textSize="16sp" - app:layout_constraintLeft_toRightOf="@id/cb_type" - app:layout_constraintTop_toTopOf="@+id/cb_type" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/cb_sort"> - - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:id="@+id/refreshLayout" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_list" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_marginHorizontal="8dp" /> - - <com.scwang.smart.refresh.footer.ClassicsFooter - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - - <TextView - android:id="@+id/tv_empty" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="100dp" - android:text="暂无数据" - android:textColor="@color/textColor99" - android:textSize="14sp" - android:visibility="gone" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <View - android:layout_width="match_parent" - android:layout_height="6dp" - android:background="@drawable/bg_shadow_top" - app:layout_constraintTop_toTopOf="@id/refreshLayout" /> - - <View - android:id="@+id/bg_filter" - android:layout_width="match_parent" - android:layout_height="0dp" - android:background="@color/halfTrans" - android:visibility="gone" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toTopOf="@id/refreshLayout" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_filter" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/white" - android:visibility="gone" - app:layout_constraintTop_toTopOf="@id/refreshLayout" /> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_shop_list.xml b/app/src/main/res/layout/activity_shop_list.xml deleted file mode 100644 index 012e62f..0000000 --- a/app/src/main/res/layout/activity_shop_list.xml +++ /dev/null @@ -1,175 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:id="@+id/tv_search" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="搜索" - android:textColor="@color/colorPrimary" - android:padding="10dp" - app:layout_constraintBaseline_toBaselineOf="@id/et_search" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="4dp" - android:textSize="14sp" - android:textStyle="bold"/> - <EditText - android:id="@+id/et_search" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_search" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="15dp" - android:textSize="14sp" - android:hint="输入门店名称" - android:paddingVertical="10dp" - android:drawablePadding="6dp" - android:paddingHorizontal="4dp" - android:drawableStart="@mipmap/icon_search_gray" - android:background="@drawable/bg_grey_4dp" - android:layout_marginStart="14dp"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/cb_city" - android:button="@null" - android:background="@null" - app:layout_constraintTop_toBottomOf="@id/et_search" - android:text="城市" - android:layout_marginTop="4dp" - android:paddingVertical="13dp" - android:textSize="16sp" - android:drawablePadding="1dp" - android:textColor="@color/selector_black_red" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:drawableEnd="@drawable/selector_filter_check"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_distance" - android:text="距离" - app:layout_constraintBaseline_toBaselineOf="@id/cb_city" - android:paddingVertical="13dp" - android:textSize="16sp" - android:layout_marginEnd="80dp" - android:drawablePadding="1dp" - android:textColor="@color/textColor" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="150dp" - android:drawableEnd="@mipmap/sort_none"/> - <LinearLayout - app:layout_constraintTop_toBottomOf="@id/et_search" - android:id="@+id/ll_location" - android:layout_width="match_parent" - android:paddingVertical="9dp" - android:gravity="center_vertical" - android:layout_height="wrap_content"> - <TextView - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="wrap_content" - android:text="开启定位查看最近门店" - android:textSize="13sp" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_location" - android:drawableStart="@mipmap/loc" - android:background="@drawable/bg_orange_4dp" - android:paddingHorizontal="8dp" - android:paddingVertical="5dp" - android:text="去开启" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" - android:drawablePadding="4dp" - android:layout_marginEnd="14dp"/> - </LinearLayout> - <androidx.constraintlayout.widget.Barrier - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/barrier" - app:barrierDirection="bottom" - app:constraint_referenced_ids="ll_location,tv_distance"/> - - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/refreshLayout" - app:layout_constraintTop_toBottomOf="@id/barrier" - app:layout_constraintBottom_toBottomOf="parent"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_shop" - android:layout_width="match_parent" - android:layout_height="match_parent"/> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - <View - android:layout_width="match_parent" - android:layout_height="6dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - android:background="@drawable/bg_shadow_top"/> - <View - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@color/halfTrans" - android:visibility="gone" - android:id="@+id/bg_filter"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_city" - android:layout_width="match_parent" - android:layout_height="0dp" - android:visibility="gone" - android:layout_marginBottom="70dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@color/white"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_refresh" - android:text="重新定位" - android:drawablePadding="6dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="14sp" - android:padding="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:drawableStart="@mipmap/reset"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_current" - app:layout_constraintBaseline_toBaselineOf="@id/tv_refresh" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:textSize="14sp" - android:textColor="@color/colorYellow" - android:text="当前城市:成都"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_city" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/tv_refresh" - app:layout_constraintBottom_toBottomOf="parent"/> - <com.dollearn.student.views.WaveSideBar - android:id="@+id/side_bar" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/rv_city" - app:layout_constraintBottom_toBottomOf="@id/rv_city" - android:paddingLeft="8dp" - android:paddingRight="8dp" - app:sidebar_text_color="@color/colorPrimary"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_stu_manage.xml b/app/src/main/res/layout/activity_stu_manage.xml deleted file mode 100644 index 6aaae75..0000000 --- a/app/src/main/res/layout/activity_stu_manage.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_add_student" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:text="添加人员" - android:textSize="14sp" - android:layout_marginTop="15dp" - android:layout_marginEnd="14dp" - android:drawablePadding="6dp" - android:paddingVertical="10dp" - android:drawableEnd="@mipmap/ic_add"/> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_student" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/tv_add_student" - app:layout_constraintBottom_toBottomOf="parent"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_check_qrcode.xml b/app/src/main/res/layout/dialog_check_qrcode.xml deleted file mode 100644 index 24f2913..0000000 --- a/app/src/main/res/layout/dialog_check_qrcode.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center_horizontal" - android:orientation="vertical"> - <LinearLayout - android:layout_width="wrap_content" - android:background="@color/white" - android:orientation="vertical" - android:layout_height="wrap_content"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="可乐" - android:textStyle="bold" - android:id="@+id/tv_title" - android:visibility="gone" - android:textColor="@color/textColor" - android:textSize="20sp" - android:layout_gravity="center" - android:layout_marginTop="17dp"/> - <ImageView - android:id="@+id/ivqr" - android:layout_marginVertical="30dp" - android:layout_marginHorizontal="40dp" - android:layout_width="230dp" - android:layout_height="230dp" - android:scaleType="fitXY" /> - </LinearLayout> - - - <ImageView - android:id="@+id/iv_close" - android:layout_width="60dp" - android:layout_height="60dp" - android:layout_marginTop="40dp" - android:padding="10dp" - android:src="@mipmap/icon_close" /> - - </LinearLayout> - -</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_coupon.xml b/app/src/main/res/layout/dialog_choose_coupon.xml deleted file mode 100644 index 46369eb..0000000 --- a/app/src/main/res/layout/dialog_choose_coupon.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@drawable/bg_white_top_20dp" - android:layout_height="420dp"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_action" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="18dp" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="@color/white" - android:textSize="14sp" - android:text="确认" - android:paddingVertical="10dp" - android:paddingHorizontal="57dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_20dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_cancel" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="18dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_action" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:text="取消" - android:paddingVertical="10dp" - android:paddingHorizontal="57dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_line_20dp"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_coupon" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_marginBottom="10dp" - android:layout_marginTop="18dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/tv_action"/> - </androidx.constraintlayout.widget.ConstraintLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_competition_tip.xml b/app/src/main/res/layout/dialog_competition_tip.xml deleted file mode 100644 index baa1245..0000000 --- a/app/src/main/res/layout/dialog_competition_tip.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginHorizontal="40dp" - app:layout_constraintDimensionRatio="307:257" - android:background="@mipmap/bg_competition_tip"> - <TextView - android:id="@+id/tv_close" - android:layout_height="35dp" - android:layout_width="100dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="34dp" - android:layout_marginBottom="18dp" - android:text="关闭" - android:textSize="20sp" - android:textStyle="bold" - android:background="@drawable/bg_grey_line_15dp" - android:gravity="center"/> - <TextView - android:id="@+id/tv_see" - android:layout_height="35dp" - android:layout_width="100dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="34dp" - android:layout_marginBottom="18dp" - android:text="查看" - android:textSize="20sp" - android:textColor="@color/white" - android:textStyle="bold" - android:background="@drawable/bg_orange_20dp" - android:gravity="center"/> - <TextView - android:layout_width="match_parent" - android:layout_marginHorizontal="42dp" - android:layout_height="wrap_content" - android:gravity="center" - android:layout_marginBottom="14dp" - android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@id/tv_close" - android:text="您完成了一场社区世界杯正式比赛,快去查看吧!"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_rule.xml b/app/src/main/res/layout/dialog_rule.xml index 19f9d33..399f8b0 100644 --- a/app/src/main/res/layout/dialog_rule.xml +++ b/app/src/main/res/layout/dialog_rule.xml @@ -26,7 +26,7 @@ android:layout_marginStart="26dp" android:layout_marginTop="20dp" android:layout_marginEnd="26dp" - android:text="尊敬的用户,为了向您提供更优质的服务,在您使用海豚英语App前,需要通过点击“同意”表示您已阅读并同意相关协议的各项规则,包括:我们会在您开启位置权限后访问、获取您的位置信息。" + android:text="尊敬的用户,为了向您提供更优质的服务,在您使用海豚英语App前,需要通过点击“同意”表示您已阅读并同意相关协议的各项规则。" android:textColor="@color/textColor" android:textSize="14sp" app:layout_constraintTop_toBottomOf="@id/tv_title" /> diff --git a/app/src/main/res/layout/dialog_share.xml b/app/src/main/res/layout/dialog_share.xml new file mode 100644 index 0000000..85354cb --- /dev/null +++ b/app/src/main/res/layout/dialog_share.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + app:layout_constraintBottom_toBottomOf="parent" + android:background="@color/white" + android:layout_height="213dp"> + <TextView + android:id="@+id/tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="分享方式" + android:textColor="@color/textColor" + android:textStyle="bold" + android:textSize="16sp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="18dp"/> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/iv_close" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:padding="10dp" + android:layout_marginTop="3dp" + android:layout_marginEnd="55dp" + android:src="@mipmap/icon_close"/> + + <TextView + android:id="@+id/wv_1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="40dp" + android:layout_marginStart="280dp" + android:text="微信好友" + android:gravity="center" + android:drawableTop="@mipmap/share_wx" + android:textSize="12sp" + android:drawablePadding="8dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/wv_2" + app:layout_constraintBottom_toBottomOf="parent" /> + + <TextView + android:id="@+id/wv_2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + app:layout_constraintStart_toEndOf="@id/wv_1" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="280dp" + android:textSize="12sp" + android:drawablePadding="8dp" + android:gravity="center" + android:text="朋友圈" + android:drawableTop="@mipmap/share_moment" + app:layout_constraintTop_toTopOf="@id/wv_1" /> + </androidx.constraintlayout.widget.ConstraintLayout> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_shop_choose.xml b/app/src/main/res/layout/dialog_shop_choose.xml deleted file mode 100644 index 192a2a1..0000000 --- a/app/src/main/res/layout/dialog_shop_choose.xml +++ /dev/null @@ -1,199 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <View - android:id="@+id/bg" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="80dp" - android:background="@drawable/bg_white_10dp" - app:layout_constraintBottom_toBottomOf="@id/spacer" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="104dp" - android:text="选择门店" - android:textColor="@color/textColor" - android:textSize="18sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="28dp" - android:text="所在城市:" - android:textColor="@color/textColor" - android:textSize="15sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_province" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="24dp" - android:text="省" - android:textColor="@color/textColor" - android:textSize="15sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_province" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:id="@+id/tv_province" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="31dp" - android:layout_marginEnd="10dp" - android:background="@drawable/bg_grey_line_6dp" - android:drawableEnd="@mipmap/icon_nav_open" - android:hint="请选择" - android:paddingHorizontal="7dp" - android:paddingVertical="14dp" - android:singleLine="true" - android:text="四川" - android:textColor="@color/textColor66" - android:textSize="15sp" - app:layout_constraintEnd_toStartOf="@id/tv_2" - app:layout_constraintStart_toEndOf="@id/tv_1" - app:layout_constraintTop_toBottomOf="@id/tv_title" /> - - <TextView - android:id="@+id/tv_city" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="18dp" - android:background="@drawable/bg_grey_line_6dp" - android:drawableEnd="@mipmap/icon_nav_open" - android:hint="请选择" - android:paddingHorizontal="7dp" - android:paddingVertical="14dp" - android:singleLine="true" - android:text="成都" - android:textColor="@color/textColor66" - android:textSize="15sp" - app:layout_constraintEnd_toEndOf="@id/tv_province" - app:layout_constraintStart_toStartOf="@id/tv_province" - app:layout_constraintTop_toBottomOf="@id/tv_province" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="24dp" - android:text="市" - android:textColor="@color/textColor" - android:textSize="15sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_city" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:id="@+id/tv_shop" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="18dp" - android:background="@drawable/bg_grey_line_6dp" - android:drawableEnd="@mipmap/icon_nav_open" - android:hint="请选择" - android:paddingHorizontal="7dp" - android:paddingVertical="14dp" - android:singleLine="true" - android:textColor="@color/textColor66" - android:textSize="15sp" - app:layout_constraintEnd_toEndOf="@id/tv_2" - app:layout_constraintStart_toStartOf="@id/tv_province" - app:layout_constraintTop_toBottomOf="@id/tv_city" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="28dp" - android:text="门店名称:" - android:textColor="@color/textColor" - android:textSize="15sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_shop" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_cancel" - style="@style/style_btn_action" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="64dp" - android:layout_marginEnd="10dp" - android:background="@drawable/bg_btn_disable" - android:paddingVertical="10dp" - android:text="取消" - app:layout_constraintBaseline_toBaselineOf="@id/tv_action" - app:layout_constraintEnd_toStartOf="@id/tv_action" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_action" - style="@style/style_btn_action" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="10dp" - android:layout_marginTop="33dp" - android:layout_marginEnd="64dp" - android:paddingVertical="10dp" - android:text="确认" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintTop_toBottomOf="@id/tv_shop" /> - - <Space - android:id="@+id/spacer" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="24dp" - android:layout_marginBottom="100dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_action" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_province" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:background="@drawable/bg_white_grey_line_6dp" - android:maxHeight="100dp" - android:visibility="gone" - app:layout_constraintEnd_toEndOf="@id/tv_province" - app:layout_constraintStart_toStartOf="@id/tv_province" - app:layout_constraintTop_toBottomOf="@id/tv_province" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_city" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:background="@drawable/bg_white_grey_line_6dp" - android:maxHeight="100dp" - android:visibility="gone" - app:layout_constraintEnd_toEndOf="@id/tv_province" - app:layout_constraintStart_toStartOf="@id/tv_province" - app:layout_constraintTop_toBottomOf="@id/tv_city" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_shop" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:background="@drawable/bg_white_grey_line_6dp" - android:maxHeight="100dp" - android:visibility="gone" - app:layout_constraintEnd_toEndOf="@id/tv_shop" - app:layout_constraintStart_toStartOf="@id/tv_shop" - app:layout_constraintTop_toBottomOf="@id/tv_shop" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_course.xml b/app/src/main/res/layout/fragment_course.xml deleted file mode 100644 index a306022..0000000 --- a/app/src/main/res/layout/fragment_course.xml +++ /dev/null @@ -1,622 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<com.scwang.smart.refresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/refreshLayout" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <com.scwang.smart.refresh.header.MaterialHeader - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <androidx.core.widget.NestedScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:scrollbars="none" - tools:layout_height="match_parent"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <!-- 无运动营成员布局--> - <LinearLayout - android:id="@+id/ll_add" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@mipmap/dingbu" - app:layout_constraintTop_toTopOf="parent"> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_marginStart="59dp" - android:src="@mipmap/ren" /> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_marginStart="13dp" - android:layout_marginTop="5dp" - android:src="@mipmap/add_stu" /> - - <TextView - android:id="@+id/tv_add_stu" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:paddingVertical="10dp" - android:text="立即创建运动营成员" - android:textColor="@color/white" - android:textSize="18sp" - android:textStyle="bold" /> - </LinearLayout> - - <Space - android:id="@+id/spacer" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="12dp" - app:layout_constraintBottom_toBottomOf="@id/ll_add" - app:layout_constraintStart_toStartOf="parent" /> - - <ImageView - android:id="@+id/iv_none" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/spacer" /> - - <androidx.constraintlayout.widget.Group - android:id="@+id/gp_none" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:visibility="gone" - app:constraint_referenced_ids="ll_add,iv_none" /> - <!-- 有运动营成员布局--> - <ImageView - android:id="@+id/iv_top" - android:layout_width="match_parent" - android:layout_height="206dp" - android:scaleType="centerCrop" - android:src="@mipmap/bg_top" - app:layout_constraintTop_toTopOf="parent" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_content" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="159dp" - android:background="@drawable/bg_white_top_40dp" - app:layout_constraintTop_toTopOf="parent"> - - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="27dp" - android:layout_marginTop="37dp" - android:textColor="@color/textColor66" - android:textSize="21sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:text="运动营成员名" /> - - <TextView - android:id="@+id/tv_sex" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="9dp" - android:drawablePadding="8dp" - android:text="性别" - android:textColor="@color/textColor66" - android:textSize="14sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_age" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:textColor="@color/textColor66" - android:textSize="14sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_sex" - app:layout_constraintStart_toEndOf="@id/tv_sex" /> - - <TextView - android:id="@+id/tv_switch" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="13dp" - android:layout_marginEnd="22dp" - android:background="@drawable/bg_blue_14dp" - android:paddingHorizontal="18dp" - android:paddingVertical="4dp" - android:text="切换" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_height" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="61dp" - android:drawableStart="@mipmap/shengao" - android:drawablePadding="8dp" - android:text="0cm" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_sex" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="11dp" - android:text="身高" - android:textColor="@color/colorTextDark" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_height" /> - - <TextView - android:id="@+id/tv_bmi" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="13dp" - android:drawableStart="@mipmap/bmi" - android:drawablePadding="8dp" - android:text="0.0" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_height" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="11dp" - android:text="BMI" - android:textColor="@color/colorTextDark" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_bmi" /> - - <TextView - android:id="@+id/tv_wight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="13dp" - android:drawableStart="@mipmap/tizhong" - android:drawablePadding="8dp" - android:text="0.0" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_height" - app:layout_constraintEnd_toStartOf="@id/tv_bmi" - app:layout_constraintStart_toEndOf="@id/tv_height" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="11dp" - android:text="体重" - android:textColor="@color/colorTextDark" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_wight" /> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:layout_marginHorizontal="19dp" - android:layout_marginTop="30dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_wight" /> - - <TextView - android:id="@+id/tv_more_report" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="30dp" - android:gravity="center" - android:paddingVertical="8dp" - android:text="查看运动营成员更多测试报告" - android:textColor="@color/textColor66" - android:textSize="12sp" - app:layout_constraintTop_toBottomOf="@id/tv_wight" /> - - <LinearLayout - android:id="@+id/ll_course" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@id/tv_more_report"> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_course" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" /> - - <TextView - android:id="@+id/tv_class_hour" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="10dp" - android:layout_marginEnd="19dp" - android:paddingVertical="10dp" - android:text="@string/class_hour" - android:textColor="@color/colorPrimary" - android:textSize="14sp" /> - </LinearLayout> - - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_course_info" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/bg_gradient" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/ll_course" - tools:visibility="visible"> - - <TextView - android:id="@+id/tv_total" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="10dp" - android:text="0" - android:textColor="@color/white" - android:textSize="15sp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_continue" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="6dp" - android:padding="3dp" - android:text="续费" - android:textColor="#FCF200" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="@id/tv_total" - app:layout_constraintStart_toStartOf="@id/tv_total" - app:layout_constraintTop_toBottomOf="@id/tv_total" /> - - <TextView - android:id="@+id/tv_last" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="24dp" - android:text="0" - android:textColor="@color/white" - android:textSize="15sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_total" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:id="@+id/tv_continue_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="3dp" - android:text="续费" - android:textColor="#FCF200" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_continue" - app:layout_constraintEnd_toEndOf="@id/tv_last" - app:layout_constraintStart_toStartOf="@id/tv_last" /> - - <TextView - android:id="@+id/tv_used" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="0" - android:textColor="@color/white" - android:textSize="15sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_total" - app:layout_constraintEnd_toStartOf="@id/tv_last" - app:layout_constraintStart_toEndOf="@id/tv_total" /> - - <TextView - android:id="@+id/tv_detail" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="3dp" - android:text="详情" - android:textColor="#FCF200" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_continue" - app:layout_constraintEnd_toEndOf="@id/tv_used" - app:layout_constraintStart_toStartOf="@id/tv_used" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - <TextView - android:id="@+id/tv_record" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="20dp" - android:layout_marginEnd="19dp" - android:paddingVertical="10dp" - android:text="@string/reserve_record" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/cl_course_info" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="45sp" - android:text="我的日程" - android:textColor="@color/colorTextDark" - android:textSize="19sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_record" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_last_week" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="19dp" - android:drawableStart="@drawable/dark_dot" - android:drawablePadding="7dp" - android:paddingVertical="5dp" - android:text="前一周" - android:textColor="@color/colorTextDark" - android:textSize="14sp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_record" /> - - <TextView - android:id="@+id/tv_next_week" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="19dp" - android:drawableStart="@drawable/dark_dot" - android:drawablePadding="7dp" - android:paddingVertical="5dp" - android:text="后一周" - android:textColor="@color/colorTextDark" - android:textSize="14sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_record" /> - - <TextView - android:id="@+id/tv_duration" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/textColor99" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_last_week" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - tools:text="2022.10.10-2022-10.1" /> - - <androidx.viewpager.widget.ViewPager - android:id="@+id/vp_week" - android:layout_width="match_parent" - android:layout_height="100dp" - android:layout_marginHorizontal="36dp" - app:layout_constraintTop_toBottomOf="@id/tv_last_week" /> - - <ImageView - android:id="@+id/iv_last" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="10dp" - android:src="@mipmap/ic_last" - app:layout_constraintBottom_toBottomOf="@id/vp_week" - app:layout_constraintEnd_toStartOf="@id/vp_week" - app:layout_constraintTop_toTopOf="@id/vp_week" /> - - <ImageView - android:id="@+id/iv_next" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="10dp" - android:src="@mipmap/ic_next" - app:layout_constraintBottom_toBottomOf="@id/vp_week" - app:layout_constraintStart_toEndOf="@id/vp_week" - app:layout_constraintTop_toTopOf="@id/vp_week" /> - - <LinearLayout - android:id="@+id/mllrv_course_schedule" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintTop_toBottomOf="@id/vp_week" - tools:visibility="visible"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/tv_address" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="20dp" - android:background="@drawable/bg_grey_line_11dp" - android:paddingVertical="4dp" - android:paddingStart="12dp" - android:paddingEnd="80dp" - tools:text="成都非遗玩湃全科体育公园" - android:textColor="@color/disableColor" - android:textSize="10sp" - android:textStyle="bold" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="10dp" - android:drawableStart="@mipmap/pop_blue" - android:drawablePadding="3dp" - android:paddingVertical="4dp" - android:text="位置详情" - android:textColor="@color/disableColor" - android:textSize="10sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_address" - app:layout_constraintEnd_toEndOf="@id/tv_address" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_course_schedule" - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - </LinearLayout> - - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="16dp" - android:drawableStart="@mipmap/star" - android:drawablePadding="7dp" - android:text="运动营成员徽章" - android:textColor="@color/colorTextDark" - android:textSize="16sp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/mllrv_course_schedule" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_badge" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_1" /> - - <TextView - android:id="@+id/tv_evaluation" - style="@style/style_btn_action" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="35dp" - android:paddingHorizontal="66dp" - android:text="运动营成员评语" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/rv_badge" /> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:layout_marginHorizontal="19dp" - android:layout_marginTop="37dp" - app:layout_constraintTop_toBottomOf="@id/tv_evaluation" /> - - <TextView - android:id="@+id/tv_2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="29sp" - android:layout_marginTop="54dp" - android:text="课后练习" - android:textColor="@color/colorTextDark" - android:textSize="19sp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_evaluation" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_practice" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="16dp" - app:layout_constraintTop_toBottomOf="@id/tv_2" /> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:layout_marginHorizontal="22dp" - android:layout_marginTop="20dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/rv_practice" /> - - <TextView - android:id="@+id/tv_reward" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="21dp" - android:layout_marginEnd="18dp" - android:drawableStart="@mipmap/circle_orange" - android:drawableEnd="@mipmap/more_black" - android:drawablePadding="10dp" - android:paddingVertical="16dp" - android:text="观看当期课后练习视频可获得会员积分" - android:textSize="11sp" - app:layout_constraintTop_toBottomOf="@id/rv_practice" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - <com.facebook.drawee.view.SimpleDraweeView - android:id="@+id/iv_avatar" - style="@style/DefaultHeadStyle" - android:layout_width="105dp" - android:layout_height="105dp" - android:layout_marginTop="112dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:roundingBorderColor="@color/white" - app:roundingBorderWidth="2dp" /> - - <LinearLayout - android:id="@+id/ll_add_stu" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="50dp" - android:gravity="top" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:layout_marginStart="17dp" - android:layout_marginTop="3dp" - android:src="@mipmap/add_stu" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:paddingVertical="10dp" - android:text="添加运动营成员" - android:textColor="@color/white" - android:textSize="16sp" /> - </LinearLayout> - - - <androidx.constraintlayout.widget.Group - android:id="@+id/gp_user" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:visibility="gone" - app:constraint_referenced_ids="cl_content,iv_avatar,iv_top,ll_add_stu" - tools:visibility="visible" /> - </androidx.constraintlayout.widget.ConstraintLayout> - </androidx.core.widget.NestedScrollView> -</com.scwang.smart.refresh.layout.SmartRefreshLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_include.xml b/app/src/main/res/layout/fragment_include.xml index 1ee9638..b0eaf13 100644 --- a/app/src/main/res/layout/fragment_include.xml +++ b/app/src/main/res/layout/fragment_include.xml @@ -118,7 +118,6 @@ app:actualImageScaleType="centerCrop" app:failureImage="@color/grey_f1" android:layout_height="match_parent"/> - </androidx.constraintlayout.widget.ConstraintLayout> @@ -495,4 +494,57 @@ app:layout_constraintEnd_toEndOf="parent" android:src="@mipmap/quanping"/> </androidx.constraintlayout.widget.ConstraintLayout> + <RelativeLayout + android:id="@+id/rv_3" + android:layout_width="0dp" + app:layout_constraintStart_toStartOf="@id/cl_3" + app:layout_constraintEnd_toEndOf="@id/cl_3" + app:layout_constraintTop_toTopOf="@id/cl_3" + android:elevation="2dp" + app:layout_constraintBottom_toBottomOf="@id/cl_3" + android:layout_height="0dp"> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/result_3" + android:layout_centerInParent="true" + android:visibility="gone" + android:src="@mipmap/successs"/> + </RelativeLayout> + <RelativeLayout + android:id="@+id/rv_5" + android:layout_width="0dp" + app:layout_constraintStart_toStartOf="@id/cl_5" + app:layout_constraintEnd_toEndOf="@id/cl_5" + app:layout_constraintTop_toTopOf="@id/cl_5" + android:elevation="2dp" + app:layout_constraintBottom_toBottomOf="@id/cl_5" + android:layout_height="0dp"> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/result_5" + android:layout_centerInParent="true" + android:visibility="gone" + android:src="@mipmap/successs"/> + </RelativeLayout> + <RelativeLayout + android:id="@+id/rv_6" + android:layout_width="0dp" + app:layout_constraintStart_toStartOf="@id/cl_6" + app:layout_constraintEnd_toEndOf="@id/cl_6" + app:layout_constraintTop_toTopOf="@id/cl_6" + android:elevation="2dp" + app:layout_constraintBottom_toBottomOf="@id/cl_6" + android:layout_height="0dp"> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/result_6" + android:layout_centerInParent="true" + android:visibility="gone" + android:src="@mipmap/successs"/> + </RelativeLayout> + + </androidx.constraintlayout.motion.widget.MotionLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_q_a.xml b/app/src/main/res/layout/fragment_q_a.xml index 9a7f31f..8baaa2e 100644 --- a/app/src/main/res/layout/fragment_q_a.xml +++ b/app/src/main/res/layout/fragment_q_a.xml @@ -47,7 +47,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="20dp" - android:src="@mipmap/voice_answer" + android:src="@mipmap/voice_question" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -81,13 +81,23 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed"> - <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/iv_1" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/iv_right_1" + android:src="@mipmap/successs" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> @@ -96,7 +106,7 @@ android:layout_width="159dp" android:layout_height="52dp" android:layout_marginTop="8dp" - android:background="@drawable/bg_blue_8dp" + android:background="@drawable/selector_bg_voice" app:layout_constraintBottom_toTopOf="@id/cl_3" app:layout_constraintStart_toStartOf="@id/cl_3" app:layout_constraintTop_toBottomOf="@id/cl_1"> @@ -126,7 +136,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="20dp" - android:src="@mipmap/voice_answer" + android:src="@mipmap/voice_question" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -164,6 +174,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:actualImageScaleType="centerCrop" /> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/iv_right_3" + android:src="@mipmap/successs" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout @@ -236,6 +257,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:actualImageScaleType="centerCrop" /> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/iv_right_2" + android:src="@mipmap/successs" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout @@ -256,6 +288,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:actualImageScaleType="centerCrop" /> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/iv_right_4" + android:src="@mipmap/successs" + android:visibility="gone" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> @@ -263,7 +306,7 @@ android:id="@+id/cl_voice_4" android:layout_width="159dp" android:layout_height="52dp" - android:background="@drawable/bg_blue_8dp" + android:background="@drawable/selector_bg_voice" app:layout_constraintStart_toStartOf="@id/cl_4" app:layout_constraintTop_toTopOf="@id/cl_voice_3"> @@ -508,7 +551,7 @@ android:id="@+id/rl_check_1" android:layout_width="52dp" android:layout_height="52dp" - android:background="@drawable/bg_blue_line_8dp" + android:background="@drawable/selector_enable_choose" android:visibility="gone"> <View @@ -533,7 +576,7 @@ android:id="@+id/rl_check_2" android:layout_width="52dp" android:layout_height="52dp" - android:background="@drawable/bg_blue_line_8dp" + android:background="@drawable/selector_enable_choose" android:visibility="gone"> <View @@ -558,7 +601,7 @@ android:id="@+id/rl_check_3" android:layout_width="52dp" android:layout_height="52dp" - android:background="@drawable/bg_blue_line_8dp" + android:background="@drawable/selector_enable_choose" android:visibility="gone"> <View diff --git a/app/src/main/res/layout/fragment_wc_record.xml b/app/src/main/res/layout/fragment_wc_record.xml deleted file mode 100644 index e7e4aaf..0000000 --- a/app/src/main/res/layout/fragment_wc_record.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:id="@+id/refreshLayout"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_total" - android:textSize="16sp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:layout_marginTop="20dp" - android:layout_marginStart="14dp" - android:text="总场次:0场"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_list" - android:layout_width="match_parent" - android:layout_marginTop="12dp" - android:layout_height="match_parent"/> - </LinearLayout> - - <com.scwang.smart.refresh.footer.ClassicsFooter - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="100dp" - android:text="暂无数据" - android:id="@+id/tv_empty" - android:visibility="gone" - android:textSize="14sp" - android:textColor="@color/textColor99"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_world_rank.xml b/app/src/main/res/layout/fragment_world_rank.xml deleted file mode 100644 index 9a369f3..0000000 --- a/app/src/main/res/layout/fragment_world_rank.xml +++ /dev/null @@ -1,198 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginBottom="12dp" - android:id="@+id/refreshLayout"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <androidx.core.widget.NestedScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:scrollbars="none"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingBottom="90dp" - android:orientation="vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_1" - android:textSize="16sp" - app:layout_constraintStart_toStartOf="parent" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_year" - android:textColor="@color/textColor" - android:layout_marginStart="14dp" - android:text="参与年份:"/> - <TextView - android:layout_width="88dp" - android:layout_height="35dp" - android:id="@+id/tv_year" - android:text="全部" - android:layout_marginTop="12dp" - android:background="@drawable/bg_grey_line_5dp" - app:layout_constraintTop_toTopOf="parent" - android:gravity="center_vertical" - android:paddingHorizontal="8dp" - android:textSize="16sp" - android:textColor="@color/textColor" - android:drawableEnd="@mipmap/icon_nav_open" - app:layout_constraintStart_toEndOf="@id/tv_1"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_filter" - android:text="按胜率排名" - android:drawableEnd="@mipmap/update" - android:drawablePadding="5dp" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:textColor="@color/colorDeepBlue" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1"/> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="32dp" - android:orientation="horizontal" - android:id="@+id/ll_title" - app:layout_constraintTop_toBottomOf="@id/tv_year" - android:layout_marginTop="16dp" - android:layout_marginHorizontal="14dp" - android:background="@drawable/bg_grey_line"> - <TextView - android:layout_width="0dp" - android:layout_weight="50" - android:text="排名" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:gravity="center" - android:layout_height="match_parent"/> - <View - android:layout_width="1px" - android:layout_height="match_parent" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="0dp" - android:layout_weight="122" - android:text="用户" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:gravity="center" - android:layout_height="match_parent"/> - <View - android:layout_width="1px" - android:layout_height="match_parent" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="0dp" - android:layout_weight="120" - android:text="总场次" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:gravity="center" - android:layout_height="match_parent"/> - <View - android:layout_width="1px" - android:layout_height="match_parent" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="0dp" - android:layout_weight="73" - android:text="胜率" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:gravity="center" - android:layout_height="match_parent"/> - - </LinearLayout> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="300dp" - android:layout_marginHorizontal="14dp" - android:background="@color/white" - app:layout_constraintTop_toBottomOf="@id/ll_title" /> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginHorizontal="14dp" - app:layout_constraintBottom_toBottomOf="@id/rv_list" - android:background="@color/dividing_line_color"/> - <View - android:layout_width="1px" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/rv_list" - app:layout_constraintStart_toStartOf="@id/rv_list" - app:layout_constraintBottom_toBottomOf="@id/rv_list" - android:background="@color/dividing_line_color"/> - <View - android:layout_width="1px" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/rv_list" - app:layout_constraintEnd_toEndOf="@id/rv_list" - app:layout_constraintBottom_toBottomOf="@id/rv_list" - android:background="@color/dividing_line_color"/> -<!-- <LinearLayout--> -<!-- android:layout_width="match_parent"--> -<!-- android:layout_height="wrap_content"--> -<!-- android:orientation="horizontal"--> -<!-- android:id="@+id/rg_region"--> -<!-- android:layout_marginTop="13dp"--> -<!-- app:layout_constraintTop_toBottomOf="@id/rv_list">--> -<!-- <TextView--> -<!-- android:id="@+id/rb_country"--> -<!-- android:layout_width="0dp"--> -<!-- android:layout_height="wrap_content"--> -<!-- android:layout_weight="1"--> -<!-- android:layout_marginStart="40dp"--> -<!-- android:text="全国"--> -<!-- android:paddingVertical="10dp"--> -<!-- android:gravity="center"--> -<!-- android:textColor="@color/selector_white_orange"--> -<!-- android:background="@drawable/selector_rank_region"/>--> -<!-- <TextView--> -<!-- android:id="@+id/rb_city"--> -<!-- android:layout_width="0dp"--> -<!-- android:layout_height="wrap_content"--> -<!-- android:layout_weight="1"--> -<!-- android:layout_marginStart="20dp"--> -<!-- android:layout_marginEnd="40dp"--> -<!-- android:paddingVertical="10dp"--> -<!-- android:gravity="center"--> -<!-- android:checked="true"--> -<!-- android:textColor="@color/selector_white_orange"--> -<!-- android:background="@drawable/selector_rank_region"/>--> -<!-- </LinearLayout>--> - - </androidx.constraintlayout.widget.ConstraintLayout> - - </androidx.core.widget.NestedScrollView> - - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="100dp" - android:text="暂无数据" - android:id="@+id/tv_empty" - android:visibility="gone" - android:textSize="14sp" - android:textColor="@color/textColor99"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_coupon.xml b/app/src/main/res/layout/item_coupon.xml deleted file mode 100644 index 6b79cbd..0000000 --- a/app/src/main/res/layout/item_coupon.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/tv_price" - android:layout_width="100dp" - android:layout_height="0dp" - android:layout_marginStart="14dp" - android:background="@mipmap/coupon_left" - android:gravity="center" - android:text="100" - android:textColor="@color/white" - android:textSize="20sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="@id/cl_right" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@id/cl_right" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_right" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="15dp" - android:layout_marginEnd="14dp" - android:background="@mipmap/coupon_right" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@id/tv_price" - app:layout_constraintTop_toTopOf="parent"> - - <TextView - android:id="@+id/tv_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="16dp" - android:singleLine="true" - android:text="优惠券名称" - android:textColor="@color/textColor" - android:textSize="17sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_condition" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="3dp" - android:text="满¥50元可用" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_deadline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="3dp" - android:layout_marginBottom="14dp" - android:text="有效期至2023-09-12" - android:textColor="@color/textColor66" - android:textSize="12sp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_condition" /> - - <ImageView - android:id="@+id/iv_check" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="10dp" - android:src="@mipmap/coupon_uncheck" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/mtcCheck" - android:visibility="gone" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="10dp" - android:background="@drawable/shape_com" - android:paddingStart="5dp" - android:paddingTop="3dp" - android:paddingEnd="5dp" - android:paddingBottom="3dp" - android:text="查看详情" - android:textColor="@color/colorPrimary" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_coupon_detail.xml b/app/src/main/res/layout/item_coupon_detail.xml deleted file mode 100644 index 7e3ba6c..0000000 --- a/app/src/main/res/layout/item_coupon_detail.xml +++ /dev/null @@ -1,131 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="100dp" - android:layout_height="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@id/cl_right" - app:layout_constraintBottom_toBottomOf="@id/cl_right" - android:id="@+id/tv_price" - android:textColor="@color/white" - android:gravity="center" - android:lineSpacingExtra="16dp" - android:textSize="20sp" - android:text="100" - android:background="@mipmap/coupon_left" - android:layout_marginStart="14dp"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_right" - android:layout_width="0dp" - android:paddingBottom="7dp" - android:layout_height="wrap_content" - app:layout_constraintStart_toEndOf="@id/tv_price" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:background="@mipmap/coupon_right" - android:layout_marginTop="8dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="8dp" - android:layout_marginEnd="14dp"> - <TextView - android:id="@+id/tv_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="17sp" - android:layout_marginTop="8dp" - android:text="优惠券名称" - android:textColor="@color/textColor" - android:textStyle="bold" - android:singleLine="true" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_deadline" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="有效期至2023-09-12" - android:layout_marginTop="3dp" - android:textSize="12sp" - android:textStyle="bold" - android:textColor="@color/textColor66"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_range" - app:layout_constraintTop_toBottomOf="@id/tv_deadline" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="指定门店可用 查看详情" - android:paddingVertical="3dp" - android:textSize="12sp" - android:textStyle="bold" - android:textColor="@color/textColor66"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_describe" - app:layout_constraintTop_toBottomOf="@id/tv_range" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="优惠券说明" - android:paddingBottom="11dp" - android:drawableEnd="@drawable/selector_open" - android:textSize="12sp" - android:drawablePadding="3dp" - android:textStyle="bold" - android:textColor="@color/textColor66"/> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:id="@+id/ll_detail" - app:layout_constraintTop_toBottomOf="@id/tv_describe"> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - android:layout_marginStart="15dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_detail" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="这里是优惠券使用说明…" - android:layout_marginStart="15dp" - android:layout_marginEnd="10dp" - android:layout_marginTop="9dp" - android:textSize="12sp" - android:textStyle="bold" - android:layout_marginBottom="20dp" - android:textColor="@color/textColor66"/> - </LinearLayout> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/iv_tag" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_margin="7dp" - android:src="@mipmap/iv_used"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_use" - android:textColor="@color/colorPrimary" - android:text="去使用" - android:textSize="12sp" - android:paddingVertical="3dp" - app:layout_constraintTop_toTopOf="@id/tv_name" - app:layout_constraintBottom_toBottomOf="@id/tv_describe" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="7dp" - android:paddingHorizontal="12dp" - android:background="@drawable/bg_orange_line_2dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_reserve_record.xml b/app/src/main/res/layout/item_reserve_record.xml deleted file mode 100644 index 392872f..0000000 --- a/app/src/main/res/layout/item_reserve_record.xml +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/tv_name" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="17dp" - android:singleLine="true" - android:text="足球基础教学(玩湃-喜望店)" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_state" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="14dp" - android:text="待核销" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:id="@+id/tv_course" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="7dp" - android:background="@drawable/bg_tag_10dp" - android:paddingHorizontal="5dp" - android:paddingVertical="3dp" - android:text="1课时" - android:textColor="@color/colorPrimary" - android:textSize="10sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintStart_toEndOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="13dp" - android:drawableStart="@mipmap/location_grey" - android:drawablePadding="7dp" - android:text="玩湃-喜望店(天府新谷9号楼1005A)" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="@id/tv_state" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <TextView - android:id="@+id/tv_time" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="13dp" - android:drawableStart="@mipmap/time_grey" - android:drawablePadding="4dp" - android:text="可预约时间段:10:00-21:00" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="@id/tv_state" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> - - - <TextView - android:id="@+id/tv_action" - android:layout_width="65dp" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:background="@drawable/bg_green_3dp" - android:gravity="center" - android:paddingVertical="5dp" - android:text="支付" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="@id/tv_state" - app:layout_constraintTop_toBottomOf="@id/tv_time" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="12dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_action" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_stu_manage.xml b/app/src/main/res/layout/item_stu_manage.xml deleted file mode 100644 index 252b484..0000000 --- a/app/src/main/res/layout/item_stu_manage.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/bg" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="12dp" - android:background="@drawable/bg_orange_line_4dp_manage"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="10dp" - android:layout_marginTop="13dp" - android:textSize="14sp" - android:text="姓名:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_idCard" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="100dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - android:textSize="14sp" - android:text="身份证号:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_real_name" - android:textColor="@color/colorYellow" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_idCard" - app:layout_constraintStart_toEndOf="@id/tv_idCard" - android:text="@string/to_real"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="11dp" - android:textSize="14sp" - android:text="年龄:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_phone" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="100dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_age" - android:textSize="14sp" - android:text="电话:" - android:textColor="@color/textColor"/> - - - <ImageView - android:layout_width="42dp" - android:layout_height="42dp" - android:id="@+id/iv_code" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_phone" - android:layout_marginEnd="6dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="14dp"/> - <ImageView - android:id="@+id/iv_del" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@mipmap/del_2" - app:layout_constraintEnd_toStartOf="@id/iv_code" - app:layout_constraintBottom_toBottomOf="@id/iv_code" - android:layout_marginEnd="16dp" - android:padding="3dp"/> - <ImageView - android:id="@+id/iv_edit" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@mipmap/diet_2" - app:layout_constraintBottom_toBottomOf="@id/iv_del" - app:layout_constraintEnd_toStartOf="@id/iv_del" - android:layout_marginEnd="10dp" - android:padding="3dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_stu_qr.xml b/app/src/main/res/layout/item_stu_qr.xml deleted file mode 100644 index 7a36df0..0000000 --- a/app/src/main/res/layout/item_stu_qr.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="20dp" - android:background="@drawable/bg_orange_line_4"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - android:textSize="14sp" - android:text="姓名:" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="15dp" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="8dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - android:textSize="14sp" - android:layout_marginTop="6dp" - android:text="年龄:" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="15dp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name"/> - <ImageView - android:layout_width="60dp" - android:layout_height="60dp" - android:id="@+id/iv_qr" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="17dp" - android:layout_marginVertical="8dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toStartOf="@id/iv_qr" - android:text="点击查看二维码" - android:id="@+id/tv_1" - android:textStyle="bold" - android:layout_marginEnd="6dp" - app:layout_constraintBottom_toBottomOf="parent"/> - <View - android:layout_width="0dp" - android:layout_height="0dp" - android:id="@+id/clicker_code" - app:layout_constraintTop_toTopOf="@id/iv_qr" - app:layout_constraintBottom_toBottomOf="@id/iv_qr" - app:layout_constraintStart_toStartOf="@id/tv_1" - app:layout_constraintEnd_toEndOf="@id/iv_qr"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_stu_wc_detail.xml b/app/src/main/res/layout/item_stu_wc_detail.xml deleted file mode 100644 index 42c0ca9..0000000 --- a/app/src/main/res/layout/item_stu_wc_detail.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/bg" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="12dp" - android:background="@drawable/bg_orange_line_4dp_manage"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="10dp" - android:layout_marginTop="13dp" - android:textSize="14sp" - android:text="姓名:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_idCard" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="120dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - android:textSize="14sp" - android:text="身份证号:" - android:textColor="@color/textColor"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="11dp" - android:textSize="14sp" - android:text="年龄:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_phone" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="120dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_age" - android:textSize="14sp" - android:text="电话:" - android:textColor="@color/textColor"/> - - - <ImageView - android:layout_width="30dp" - android:layout_height="30dp" - android:id="@+id/iv_code" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_idCard" - android:layout_marginEnd="6dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="13dp"/> - - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_wc_record.xml b/app/src/main/res/layout/item_wc_record.xml deleted file mode 100644 index e63e73f..0000000 --- a/app/src/main/res/layout/item_wc_record.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginHorizontal="14dp" - android:layout_marginBottom="13dp" - android:background="@drawable/bg_orange_line_4dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="10dp" - android:layout_marginTop="12dp" - android:textStyle="bold" - android:textSize="14sp" - android:textColor="@color/textColor" - android:text="社区世界杯活动"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_1" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="比分:" - android:textSize="14sp" - android:textColor="@color/textColor66" - app:layout_constraintTop_toTopOf="@id/tv_score" - app:layout_constraintBottom_toBottomOf="@id/tv_score"/> - <TextView - android:id="@+id/tv_score" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintStart_toEndOf="@id/tv_1" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:textSize="24sp" - android:layout_marginTop="3dp" - android:textStyle="bold" - android:textColor="@color/colorYellow" - android:text="5:1"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="2023.11.11 12:00" - android:textSize="12sp" - android:textColor="@color/textColor66" - app:layout_constraintTop_toBottomOf="@id/tv_score" - android:layout_marginTop="3dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="6dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_integral" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1" - android:textStyle="bold" - android:textSize="12sp" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="7dp" - android:textColor="@color/colorYellow" - android:text="获得积分:200"/> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:id="@+id/iv_result"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_week.xml b/app/src/main/res/layout/item_week.xml index dcb161d..929e434 100644 --- a/app/src/main/res/layout/item_week.xml +++ b/app/src/main/res/layout/item_week.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto"> <LinearLayout diff --git a/app/src/main/res/layout/item_week_course.xml b/app/src/main/res/layout/item_week_course.xml deleted file mode 100644 index 5f88fde..0000000 --- a/app/src/main/res/layout/item_week_course.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="28dp" - android:layout_height="28dp" - android:id="@+id/tv_english" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:gravity="center" - android:textSize="12sp" - android:layout_marginTop="20dp" - android:textStyle="bold" - android:textColor="@color/selector_white_dark" - android:text="S" - android:background="@drawable/selector_bg_week"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_date" - app:layout_constraintTop_toBottomOf="@id/tv_english" - app:layout_constraintStart_toStartOf="@id/tv_english" - app:layout_constraintEnd_toEndOf="@id/tv_english" - android:layout_marginTop="8dp" - android:textStyle="bold" - android:textColor="@color/textColorHint" - android:textSize="10sp" - android:text="10.10"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 86a1813..7107b9c 100644 --- a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/share_moment.png b/app/src/main/res/mipmap-xxhdpi/share_moment.png new file mode 100644 index 0000000..01dafba --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/share_moment.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/share_wx.png b/app/src/main/res/mipmap-xxhdpi/share_wx.png new file mode 100644 index 0000000..b676179 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/share_wx.png Binary files differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 838632d..bfd1865 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -21,4 +21,5 @@ <color name="colorTextDark">#2F5264</color> <color name="colorLittleBlue">#F4FAFE</color> <color name="dkplayer_theme_color">@color/colorAccent</color> + <color name="page_bg">#C3BFB3</color> </resources> diff --git a/app/src/main/res/xml/fragment_listen_scene_result_1.xml b/app/src/main/res/xml/fragment_listen_scene_result_1.xml index 1517b37..a204a19 100644 --- a/app/src/main/res/xml/fragment_listen_scene_result_1.xml +++ b/app/src/main/res/xml/fragment_listen_scene_result_1.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> <KeyAttribute motion:framePosition="10" android:alpha="1" diff --git a/app/src/main/res/xml/fragment_listen_scene_result_2.xml b/app/src/main/res/xml/fragment_listen_scene_result_2.xml index 4fe14d1..a15eecc 100644 --- a/app/src/main/res/xml/fragment_listen_scene_result_2.xml +++ b/app/src/main/res/xml/fragment_listen_scene_result_2.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> <KeyAttribute motion:framePosition="10" android:alpha="1" diff --git a/app/src/main/res/xml/fragment_listen_scene_result_3.xml b/app/src/main/res/xml/fragment_listen_scene_result_3.xml index baed0a9..51b6860 100644 --- a/app/src/main/res/xml/fragment_listen_scene_result_3.xml +++ b/app/src/main/res/xml/fragment_listen_scene_result_3.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> <KeyAttribute motion:framePosition="10" android:alpha="1" diff --git a/app/src/main/res/xml/fragment_listen_scene_result_4.xml b/app/src/main/res/xml/fragment_listen_scene_result_4.xml index b3483ef..a6b4ee2 100644 --- a/app/src/main/res/xml/fragment_listen_scene_result_4.xml +++ b/app/src/main/res/xml/fragment_listen_scene_result_4.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> <KeyAttribute motion:framePosition="10" android:alpha="1" diff --git a/app/src/main/res/xml/fragment_listen_scene_result_5.xml b/app/src/main/res/xml/fragment_listen_scene_result_5.xml new file mode 100644 index 0000000..fb0d24e --- /dev/null +++ b/app/src/main/res/xml/fragment_listen_scene_result_5.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<MotionScene + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:motion="http://schemas.android.com/apk/res-auto"> + + <Transition + motion:constraintSetEnd="@+id/end" + motion:constraintSetStart="@id/start" + motion:duration="3000"> + <KeyFrameSet> + <KeyAttribute motion:framePosition="10" + android:alpha="1" + motion:motionTarget="@id/result_5"/> + <KeyAttribute motion:framePosition="98" + android:alpha="1" + motion:motionTarget="@id/result_5"/> + + <KeyAttribute motion:framePosition="20" + android:scaleX="0.9" + android:scaleY="0.9" + motion:motionTarget="@id/result_5"/> + <KeyAttribute motion:framePosition="25" + android:scaleX="1.1" + android:scaleY="1.1" + motion:motionTarget="@id/result_5"/> + <KeyAttribute motion:framePosition="30" + android:scaleX="0.9" + android:scaleY="0.9" + motion:motionTarget="@id/result_5"/> + <KeyAttribute motion:framePosition="35" + android:scaleX="1.1" + android:scaleY="1.1" + motion:motionTarget="@id/result_5"/> + <KeyAttribute motion:framePosition="40" + android:scaleX="1.0" + android:scaleY="1.0" + motion:motionTarget="@id/result_5"/> + </KeyFrameSet> + + </Transition> + + <ConstraintSet android:id="@+id/start"> + <Constraint android:id="@+id/result_5" + android:alpha="0" + motion:layout_constraintStart_toStartOf="@+id/iv_5" + motion:layout_constraintEnd_toEndOf="@+id/iv_5" + motion:layout_constraintTop_toTopOf="@+id/iv_5" + motion:layout_constraintBottom_toBottomOf="@+id/iv_5" + android:layout_width="100dp" + android:layout_height="100dp" + android:visibility="visible"/> + </ConstraintSet> + + <ConstraintSet android:id="@+id/end"> + <Constraint android:id="@+id/result_5" + android:alpha="1" + motion:layout_constraintStart_toStartOf="@+id/iv_5" + motion:layout_constraintEnd_toEndOf="@+id/iv_5" + motion:layout_constraintTop_toTopOf="@+id/iv_5" + motion:layout_constraintBottom_toBottomOf="@+id/iv_5" + android:layout_width="100dp" + android:layout_height="100dp" + android:visibility="visible"/> + </ConstraintSet> +</MotionScene> \ No newline at end of file diff --git a/app/src/main/res/xml/fragment_listen_scene_result_6.xml b/app/src/main/res/xml/fragment_listen_scene_result_6.xml new file mode 100644 index 0000000..7f14d70 --- /dev/null +++ b/app/src/main/res/xml/fragment_listen_scene_result_6.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<MotionScene + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:motion="http://schemas.android.com/apk/res-auto"> + + <Transition + motion:constraintSetEnd="@+id/end" + motion:constraintSetStart="@id/start" + motion:duration="3000"> + <KeyFrameSet> + <KeyAttribute motion:framePosition="10" + android:alpha="1" + motion:motionTarget="@id/result_6"/> + <KeyAttribute motion:framePosition="98" + android:alpha="1" + motion:motionTarget="@id/result_6"/> + + <KeyAttribute motion:framePosition="20" + android:scaleX="0.9" + android:scaleY="0.9" + motion:motionTarget="@id/result_6"/> + <KeyAttribute motion:framePosition="25" + android:scaleX="1.1" + android:scaleY="1.1" + motion:motionTarget="@id/result_6"/> + <KeyAttribute motion:framePosition="30" + android:scaleX="0.9" + android:scaleY="0.9" + motion:motionTarget="@id/result_6"/> + <KeyAttribute motion:framePosition="35" + android:scaleX="1.1" + android:scaleY="1.1" + motion:motionTarget="@id/result_6"/> + <KeyAttribute motion:framePosition="40" + android:scaleX="1.0" + android:scaleY="1.0" + motion:motionTarget="@id/result_6"/> + </KeyFrameSet> + + </Transition> + + <ConstraintSet android:id="@+id/start"> + <Constraint android:id="@+id/result_6" + android:alpha="0" + motion:layout_constraintStart_toStartOf="@+id/iv_6" + motion:layout_constraintEnd_toEndOf="@+id/iv_6" + motion:layout_constraintTop_toTopOf="@+id/iv_6" + motion:layout_constraintBottom_toBottomOf="@+id/iv_6" + android:layout_width="100dp" + android:layout_height="100dp" + android:visibility="visible"/> + </ConstraintSet> + + <ConstraintSet android:id="@+id/end"> + <Constraint android:id="@+id/result_6" + android:alpha="1" + motion:layout_constraintStart_toStartOf="@+id/iv_6" + motion:layout_constraintEnd_toEndOf="@+id/iv_6" + motion:layout_constraintTop_toTopOf="@+id/iv_6" + motion:layout_constraintBottom_toBottomOf="@+id/iv_6" + android:layout_width="100dp" + android:layout_height="100dp" + android:visibility="visible"/> + </ConstraintSet> +</MotionScene> \ No newline at end of file diff --git a/app/src/main/res/xml/item_game_1_scene.xml b/app/src/main/res/xml/item_game_1_scene.xml index 876b2e5..5f528c7 100644 --- a/app/src/main/res/xml/item_game_1_scene.xml +++ b/app/src/main/res/xml/item_game_1_scene.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> <KeyAttribute motion:framePosition="10" android:alpha="1" diff --git a/app/src/main/res/xml/scene_fragment_choose_voice.xml b/app/src/main/res/xml/scene_fragment_choose_voice.xml index 298fbf4..c9115e0 100644 --- a/app/src/main/res/xml/scene_fragment_choose_voice.xml +++ b/app/src/main/res/xml/scene_fragment_choose_voice.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> </KeyFrameSet> diff --git a/app/src/main/res/xml/scene_fragment_listen_voice.xml b/app/src/main/res/xml/scene_fragment_listen_voice.xml index 800962d..324c1b0 100644 --- a/app/src/main/res/xml/scene_fragment_listen_voice.xml +++ b/app/src/main/res/xml/scene_fragment_listen_voice.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> </KeyFrameSet> diff --git a/app/src/main/res/xml/scene_fragment_look.xml b/app/src/main/res/xml/scene_fragment_look.xml index 9439eab..8f93cb2 100644 --- a/app/src/main/res/xml/scene_fragment_look.xml +++ b/app/src/main/res/xml/scene_fragment_look.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> </KeyFrameSet> diff --git a/app/src/main/res/xml/scene_fragment_match.xml b/app/src/main/res/xml/scene_fragment_match.xml index b57c014..b7de0be 100644 --- a/app/src/main/res/xml/scene_fragment_match.xml +++ b/app/src/main/res/xml/scene_fragment_match.xml @@ -6,7 +6,7 @@ <Transition motion:constraintSetEnd="@+id/end" motion:constraintSetStart="@id/start" - motion:duration="2000"> + motion:duration="3000"> <KeyFrameSet> </KeyFrameSet> diff --git a/xldutils-kotlin/src/main/AndroidManifest.xml b/xldutils-kotlin/src/main/AndroidManifest.xml index 1c3c4d7..cad77ec 100644 --- a/xldutils-kotlin/src/main/AndroidManifest.xml +++ b/xldutils-kotlin/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ android:theme="@style/Dialog" /> <activity android:name="cn.sinata.xldutils.activity.ImagePagerActivity" - android:screenOrientation="portrait" /> + android:screenOrientation="landscape" /> <activity android:name=".activity.WebViewActivity" /> <activity android:name=".activity.SelectPhotoActivity" diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt index 67be698..2321b1e 100644 --- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt +++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt @@ -9,6 +9,7 @@ import androidx.viewpager.widget.ViewPager import cn.sinata.xldutils.R import cn.sinata.xldutils.adapter.ImagePagerAdapter +import cn.sinata.xldutils.gone import cn.sinata.xldutils.visible import org.jetbrains.anko.find @@ -44,6 +45,9 @@ this.urls.addAll(urls) } find<TextView>(R.id.tv_pages).text = getString(R.string.pageAndSizes,position+1,urls!!.size) + find<View>(R.id.cl_back).setOnClickListener { + finish() + } imagePager.adapter = ImagePagerAdapter(supportFragmentManager,urls) imagePager.currentItem = position diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt index 029e9cd..b83cae8 100644 --- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt +++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt @@ -1,5 +1,6 @@ package cn.sinata.xldutils.activity +import android.graphics.Color import android.view.View import android.view.ViewGroup import android.widget.LinearLayout @@ -21,6 +22,9 @@ val bg_title by lazy { find<View>(R.id.bg_title) } + val base_root by lazy { + find<View>(R.id.base_root) + } val titleBar by lazy { val titleBar = find<TitleBar>(R.id.titleBar) @@ -34,6 +38,7 @@ if (layoutResID > 0) { layoutInflater.inflate(layoutResID, llContainer, true) } + base_root.setBackgroundColor(Color.parseColor("#C3BFB3")) } override fun setContentView(view: View?) { diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt index f7f6ea2..bfe601c 100644 --- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt +++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt @@ -57,7 +57,7 @@ zoomDraweeView.setOnClickListener{ if (activity != null) { -// activity?.onBackPressed() + activity?.onBackPressed() } } } diff --git a/xldutils-kotlin/src/main/res/layout/activity_base_title.xml b/xldutils-kotlin/src/main/res/layout/activity_base_title.xml index 35a7e1c..661ce3e 100644 --- a/xldutils-kotlin/src/main/res/layout/activity_base_title.xml +++ b/xldutils-kotlin/src/main/res/layout/activity_base_title.xml @@ -2,7 +2,8 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/page_bg" + android:id="@+id/base_root" + android:background="#C3BFB3" xmlns:app="http://schemas.android.com/apk/res-auto"> <View android:id="@+id/bg_title" diff --git a/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml b/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml index fbe9bf4..0ae84d5 100644 --- a/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml +++ b/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml @@ -2,14 +2,14 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" + android:id="@+id/cl_back" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@android:color/black"> <androidx.viewpager.widget.ViewPager android:id="@+id/mViewPager" android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/tv_back" + android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent"/> <TextView android:id="@+id/tv_pages" -- Gitblit v1.7.1