lmw
2024-07-18 252736e890fd50550ab9dec218159356e2a953c1
fix bug
200个文件已删除
7个文件已添加
36个文件已修改
1867 ■■■■■ 已修改文件
app/src/main/java/com/dollearn/student/dialog/DifficultyDialog.kt 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/ApiService.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/Apis.kt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/HttpManager.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/Medal.kt 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/QrBean.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/Rank.kt 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/RechargeItem.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/RecordSchedule.kt 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/ReserveRecord.kt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/RewardAnswer.kt 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/RewardQuestion.kt 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/StudyRecord.kt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/TeacherData.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/TestingAnswer.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/TestingQuestion.kt 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/TestingRecord.kt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/TestingResult.kt 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/UserData.kt 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/Week.kt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WeekItem.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WeeksOfCourseDetails.kt 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/Welfare.kt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WelfareDetail.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WelfareHomeData.kt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WorldCupBean.kt 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WorldCupRecord.kt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/network/entity/WorldRank.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/WeekendFragment.kt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/adapter/CardAdapter.kt 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/mine/adapter/GameRecordAdapter.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/ui/mine/adapter/ImageAdapter.kt 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/views/NoScrollRecyclerView.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_select_radio.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_learn_record.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_result.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_schedul.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_start_world_cup.xml 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_super_listen.xml 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_tab_list.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_diff.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_rule.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_include.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_card.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_game_1.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_img.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_referee_world_cup.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_tab.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ad.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ad_origin.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/add.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/add_head.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/add_stu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/add_user.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/arrow_yellow.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/banner_explore.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/baoming.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_competition_tip.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_end.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_top.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_vs.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_wc_title.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_world_cup.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bg_world_cup_1.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bianjisekuai.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bmi.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/book.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/book_selected.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bottom_shadow.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/bronzemedal.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/caipan.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/calender.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/canyucishu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/changshengjiangjun.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/circle_orange.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/cl_left_disable.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/cl_right_disable.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coin.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coin_small.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coupon_checked.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coupon_left.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coupon_right.9.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/coupon_uncheck.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/daohang.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/del.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/del_2.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/diet_2.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/dingbu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/dingchang.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/dingweiicon.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/duihuan.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/empty.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/empty_course.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/erweima.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/exchange.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/fabu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/filter_close.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/filter_open.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/fire.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/game_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/game_description.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/game_top.jpg 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/gengduo.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/goldmedal.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/guanyu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/guiwei.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/huodong.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_add.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_address.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_cancel.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_couse_home.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_dial.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_heat.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_last.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_must.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_phone.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_vip.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_alipay.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_all.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_arrow.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_arrow_bootom.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_arrow_left.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_arrow_right.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_arrow_top.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_back.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_back_white.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_eye.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_eye_close.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_login_vx.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_me_evaluation.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_me_extension.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_me_history.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_me_item.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_more_grey.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_nav_close.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_nav_open.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_opinion.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_people.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_phone.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_play.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_search_gray.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_tab_home.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_tab_lib.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_tab_study.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_tab_user.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_time.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_vx.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/iv_del_user.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/iv_disable.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/iv_phone.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/iv_used.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/jifen.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/kefu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/keshi.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/keshi1.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/keshishu.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/keshitagicon.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/loc.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/location_grey.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/logo.jpg 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/map.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/marker_normal.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/medal_club.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/medal_play.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/medal_social.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/medal_sport.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/more_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/more_medal.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/nan.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/nv.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/open_soon.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/pencil.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/phone.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/phone_pc.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/pingjia.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/place_holder_coupon.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/place_holder_free.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/place_holder_shop.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/place_holder_welfare.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/play_1.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/play_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/play_red.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/playing_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/pop_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/quanbao.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/rectangle.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ren.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/renyuan.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/reset.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/saomaicon.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/saoyisao.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/service.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/setting_mine.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/shengao.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/shengli.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/shibai.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/shijian.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/shijiebei.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/silvermedal.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/sort_asc.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/sort_desc.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/sort_none.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/splash.jpg 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/splash.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/star.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/star_empty.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/star_red.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/tizhong.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/tr_close.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/tr_open.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/update.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/uploads.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/used_keshi.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/vip.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/vip_gold.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/vx.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/wanpaibi.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/wc_age.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/wc_time.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/wodejifen.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/xiangji.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/xiaofei.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/yuezhanyueyong.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/yundongying.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/xml/item_game_1_scene.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/res/mipmap-xxhdpi/title_logo.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dollearn/student/dialog/DifficultyDialog.kt
@@ -6,8 +6,10 @@
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.screenWidth
import com.dollearn.student.R
import com.dollearn.student.ui.home.SuperListenActivity
import kotlinx.android.synthetic.main.dialog_diff.*
import org.jetbrains.anko.wrapContent
@@ -31,13 +33,51 @@
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        rb_0.isSelected = true
        tv_cancel.setOnClickListener {
            callback?.onCancel()
            dismiss()
        }
        val level = (activity as SuperListenActivity).level
        when(level){
            1->{
                rb_2.alpha = 0.6f
            }
            0->{
                rb_2.alpha = 0.6f
                rb_1.alpha = 0.6f
            }
        }
        rb_0.setOnClickListener {
            rb_1.isSelected = false
            rb_2.isSelected = false
            rb_0.isSelected = true
        }
        rb_1.setOnClickListener {
            if (rb_1.alpha!=1f){
                myToast("请先完成上一难度再挑战")
            }else{
                rb_0.isSelected = false
                rb_1.isSelected = true
                rb_2.isSelected = false
            }
        }
        rb_2.setOnClickListener {
            if (rb_2.alpha!=1f){
                myToast("请先完成上一难度再挑战")
            }else{
                rb_0.isSelected = false
                rb_1.isSelected = false
                rb_2.isSelected = true
            }
        }
        tv_ok.setOnClickListener {
            callback?.onOk(if (rb_0.isChecked) 0 else if (rb_1.isChecked) 1 else 2)
            callback?.onOk(if (rb_0.isSelected) 0 else if (rb_1.isSelected) 1 else 2)
        }
    }
app/src/main/java/com/dollearn/student/network/ApiService.kt
@@ -115,6 +115,9 @@
    @POST(Apis.gameAchievement)
    fun gameAchievement(@Body body: String): Flowable<ResultData<Int?>>
    @GET(Apis.userGameDifficulty)
    fun userGameDifficulty(@Query("week") week: Int): Flowable<ResultData<Int?>>
    @GET(Apis.teamSchedule)
    fun teamSchedule(@Query("day") day:Int,@Query("type") type:Int,@Query("week") week:Int): Flowable<ResultData<ProgressBean>>
app/src/main/java/com/dollearn/student/network/Apis.kt
@@ -50,6 +50,7 @@
    const val gameHearing = "study/base/study/gameHearing"
    const val gameMemory = "study/base/study/gameMemory"
    const val gameAchievement = "study/base/study/gameAchievement"
    const val userGameDifficulty = "study/base/study/userGameDifficulty"
    /**
app/src/main/java/com/dollearn/student/network/HttpManager.kt
@@ -191,6 +191,13 @@
    }
    /**
     * 获取可用游戏难度
     */
    fun userGameDifficulty(week: Int): Flowable<ResultData<Int?>> {
        return request().userGameDifficulty(week)
    }
    /**
     * 回复进度
     */
    fun teamSchedule(day: Int,week: Int,type: Int): Flowable<ResultData<ProgressBean>> {
app/src/main/java/com/dollearn/student/network/entity/Medal.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/QrBean.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/Rank.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/RechargeItem.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/RecordSchedule.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/ReserveRecord.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/RewardAnswer.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/RewardQuestion.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/StudyRecord.kt
@@ -8,12 +8,11 @@
data class GameRecord(
    val accuracy: String,
    val createBy: String,
    val createTime: String,
    val time: String,
    val disabled: Boolean,
    val gameDifficulty: Int,
    val gameId: Int,
    val gameName: String,
    val id: Int,
    val updateBy: String,
    val updateTime: String,
    val useTime: Int,
app/src/main/java/com/dollearn/student/network/entity/TeacherData.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/TestingAnswer.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/TestingQuestion.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/TestingRecord.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/TestingResult.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/UserData.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/Week.kt
@@ -3,6 +3,7 @@
data class Week(
    val id: String,
    val quarter: Int,
    val canStudy: Boolean,
    val title: String,
    val totalIntegral: Long,
    val week: Int
app/src/main/java/com/dollearn/student/network/entity/WeekItem.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WeeksOfCourseDetails.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/Welfare.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WelfareDetail.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WelfareHomeData.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WorldCupBean.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WorldCupRecord.kt
File was deleted
app/src/main/java/com/dollearn/student/network/entity/WorldRank.kt
File was deleted
app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt
@@ -29,22 +29,4 @@
    abstract fun initClick()
    abstract fun initView()
    /**
     * 状态栏和标题采用白色风格
     */
    fun useWhiteTitle(){
        titleBar.setTitleColor(R.color.textColor)
        titleBar.backgroundColorResource = R.color.white
//        rootLayout.backgroundColorResource = R.color.white
        titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back,0,0,0)
    }
//    /**
//     * 微信登录是否有手机号,没有就跳绑定页面
//     */
//    fun checkPhone():Boolean{
//        return if (SPUtils.instance().getBoolean(Const.User.NO_PHONE)){
//            startActivity<BindPhoneActivity>()
//            false
//        } else true
//    }
}
app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt
@@ -117,7 +117,7 @@
        }
        rl_check_1.clickDelay {
            if (playing)
            if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size)
                return@clickDelay
            if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){
                dot_1.visible()
@@ -143,7 +143,7 @@
        }
        rl_check_2.clickDelay {
            if (playing)
            if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size)
                return@clickDelay
            if (rl_check_1.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
                dot_2.visible()
@@ -170,7 +170,7 @@
        }
        rl_check_3.clickDelay {
            if (playing)
            if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size)
                return@clickDelay
            if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
                dot_3.visible()
@@ -441,4 +441,8 @@
        player.stopPlayMusic()
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeCallbacksAndMessages(null)
    }
}
app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt
@@ -18,6 +18,7 @@
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.dip
import org.jetbrains.anko.support.v4.startActivity
class IncludeFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
@@ -63,6 +64,7 @@
                super.handleMessage(msg)
                when(msg.what){
                    PLAY_VOICE->{
                        playing = true
                        player.startPlayMusic(requireContext(),data!!.subjectList[group][voiceIndex].correct)
                    }
                    TO_NEXT->{
@@ -71,10 +73,12 @@
                        }
                    }
                    PLAY_RIGHT->{
                        playing = true
                        rightPlaying = true
                        player.startPlayMusic(requireContext(),rightVoice)
                    }
                    PLAY_ERROR->{
                        playing = true
                        errorPlaying = true
                        player.startPlayMusic(requireContext(),errorVoice)
                    }
@@ -120,13 +124,14 @@
        }
        cl_answer_1.clickDelay {
            if (currentImage == 0)
            if (currentImage == 0||!data!!.subjectList[group][currentImage].listend)
                return@clickDelay
            val subject = data!!.subjectList[group][currentImage]
            if (!subject.listend||subject.completed){
                return@clickDelay
            }
            act.totalCount++
            data!!.subjectList[group][currentImage].listend = false
            if (answerImg[0] == subject.img){
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
@@ -143,7 +148,7 @@
        }
        cl_answer_2.clickDelay {
            if (currentImage == 0)
            if (currentImage == 0||!data!!.subjectList[group][currentImage].listend)
                return@clickDelay
            val subject = data!!.subjectList[group][currentImage]
            if (!subject.listend||subject.completed){
@@ -151,6 +156,7 @@
            }
            act.totalCount++
            data!!.subjectList[group][currentImage].listend = false
            if (answerImg[1] == subject.img){
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
@@ -167,7 +173,7 @@
        }
        cl_answer_3.clickDelay {
            if (currentImage == 0)
            if (currentImage == 0||!data!!.subjectList[group][currentImage].listend)
                return@clickDelay
            val subject = data!!.subjectList[group][currentImage]
            if (!subject.listend||subject.completed){
@@ -175,6 +181,7 @@
            }
            act.totalCount++
            data!!.subjectList[group][currentImage].listend = false
            if (answerImg[2] == subject.img){
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
@@ -417,7 +424,6 @@
    override fun onFinishPlay() {
        playing = false
        val subject = data!!.subjectList[group][voiceIndex]
        subject.listend = true
        when(voiceIndex){
            0->{
                iv1_1.visible()
@@ -470,19 +476,24 @@
                }
            }
        }
        showVoiceEnable()
        if (errorPlaying)
            errorPlaying = false
        if (rightPlaying) {
        else if (rightPlaying) {
            rightPlaying = false
            data!!.subjectList[group][currentImage].completed = true
            nowVoiceView?.callOnClick()
        }
        }else
            subject.listend = true
        showVoiceEnable()
    }
    override fun onPause() {
        super.onPause()
        player.stopPlayMusic()
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeCallbacksAndMessages(null)
    }
}
app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt
@@ -225,4 +225,9 @@
        super.onPause()
        player.stopPlayMusic()
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeCallbacksAndMessages(null)
    }
}
app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
@@ -644,4 +644,9 @@
        super.onPause()
        player.stopPlayMusic()
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeCallbacksAndMessages(null)
    }
}
app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt
@@ -1,10 +1,13 @@
package com.dollearn.student.ui.home
import android.os.Handler
import android.util.Log
import androidx.core.os.bundleOf
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.showAllowingStateLoss
import cn.sinata.xldutils.visible
import com.dollearn.student.R
import com.dollearn.student.dialog.TipDialog
import com.dollearn.student.network.HttpManager
@@ -17,7 +20,13 @@
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import kotlinx.android.synthetic.main.activity_memory.*
import kotlinx.android.synthetic.main.item_card.view.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.imageResource
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
import kotlin.math.sqrt
class MemoryActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener {
    override fun setContentView() = R.layout.activity_memory
@@ -27,17 +36,18 @@
    }
    private val list = arrayListOf<Card>()
    private val adapter = CardAdapter(list)
    val TAG = "Memory====>"
    private var lastTime = 600 //剩余秒
    private var totalCount = 0
    private var rightCount = 0
    private var handler: Handler? = null
    var handler: Handler? = null
    var time = 0 //学习秒数
    private val PLAY_VOICE = 1
    val PLAY_VOICE = 1
    private val STUDY_TIME = 2
    val PLAY_RIGHT = 4
@@ -51,7 +61,7 @@
    private val player by lazy { AudioUtils() }
    private var index = 0
    var index = 0
    var playing = false
@@ -97,13 +107,17 @@
                            sendEmptyMessageDelayed(STUDY_TIME,1000)
                    }
                    PLAY_VOICE->{
                        playing = true
                        player.startPlayMusic(this@MemoryActivity,list[index].url)
                        rv_list.getChildAt(index).iv_play.setImageResource(R.mipmap.playing_blue)
                    }
                    PLAY_RIGHT->{
                        playing = true
                        rightPlaying = true
                        player.startPlayMusic(this@MemoryActivity,rightVoice)
                    }
                    PLAY_ERROR->{
                        playing = true
                        errorPlaying = true
                        player.startPlayMusic(this@MemoryActivity,errorVoice)
                    }
@@ -114,11 +128,41 @@
        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) })
        list.addAll(data.voiceList.map { Card(it.id,2,it.voice) })
        list.shuffle()
        rv_list.postDelayed({
            initRecycler(list.size)
        },500)
    }
    /**
     * 需要计算行列数
     */
    private fun initRecycler(total: Int){
        var bestRows = 1
        var bestColumns: Int = total
        var i = 1
        while (i <= sqrt(total.toDouble())) {
            val rows = i
            val columns: Int = if (total%i>0) (total / i)+1 else total / i
            // Calculate the absolute difference between rows and columns
            val diff = abs(rows - columns)
            // Update the best rows and columns if this pair has a smaller difference
            if (diff < abs(bestRows - bestColumns)) {
                bestRows = rows
                bestColumns = columns
            }
            i++
        }
        Log.e(TAG,"总数:$total,计算得到行数:${min(bestColumns,bestRows)},列数:${max(bestColumns,bestRows)}")
        val lineHeight = rv_list.height.toDouble() / min(bestColumns, bestRows)
        val lineWidth = rv_list.width.toDouble() / max(bestColumns, bestRows)
        Log.e(TAG,"高度:${rv_list.height},计算得到行高:${lineHeight},宽度:${rv_list.width},计算得到行宽:${lineWidth}")
        rv_list.layoutManager = GridLayoutManager(this, max(bestColumns,bestRows))
        adapter.height = lineHeight.toInt()
        adapter.widgh = lineWidth.toInt()
        adapter.notifyDataSetChanged()
    }
@@ -143,6 +187,20 @@
            if (card1.type!=card2.type&&card1.id == card2.id){//匹配成功
                handler?.sendEmptyMessage(PLAY_RIGHT)
                rightCount++
                rv_list.getChildAt(adapter.position1).iv_result?.apply {
                    imageResource = R.mipmap.successs
                    visible()
                    postDelayed({
                        gone()
                    },3000)
                }
                rv_list.getChildAt(adapter.position2).iv_result?.apply {
                    imageResource = R.mipmap.successs
                    visible()
                    postDelayed({
                        gone()
                    },3000)
                }
                tv_timer.postDelayed({
                    if (list.filter { !it.isBack }.size == list.size){ //全部答对
                        tv_exit.text = "提交"
@@ -151,6 +209,20 @@
                },500)
            }else{
                handler?.sendEmptyMessage(PLAY_ERROR)
                rv_list.getChildAt(adapter.position1).iv_result?.apply {
                    imageResource = R.mipmap.zhifushibai
                    visible()
                    postDelayed({
                        gone()
                    },3000)
                }
                rv_list.getChildAt(adapter.position2).iv_result?.apply {
                    imageResource = R.mipmap.zhifushibai
                    visible()
                    postDelayed({
                        gone()
                    },3000)
                }
            }
        }
    }
@@ -189,8 +261,10 @@
        playing = false
        if (errorPlaying){
            errorPlaying = false
            playing = true
            tv_timer.postDelayed({
                adapter.bothToBack()
                playing = false //防止翻转过程中点击,造成缓存view被销毁
            },500)
        }else if (rightPlaying){
            rightPlaying = false
@@ -202,6 +276,7 @@
            adapter.releaseHolder()
            handler?.sendEmptyMessage(PLAY_VOICE)
        }else{
            rv_list.getChildAt(index).iv_play.setImageResource(R.mipmap.play_blue)
            checkResult()
        }
    }
app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
@@ -57,7 +57,6 @@
    private val voiceViews by lazy { arrayListOf(cl_voice_1,cl_voice_2,cl_voice_3,cl_voice_4) } //语音蓝条
    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) }
@@ -408,4 +407,9 @@
        super.onPause()
        player.stopPlayMusic()
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeCallbacksAndMessages(null)
    }
}
app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt
@@ -1,13 +1,11 @@
package com.dollearn.student.ui.home
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 org.jetbrains.anko.startActivity
class RememberFinishActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_finish_remember
@@ -18,7 +16,7 @@
    override fun initClick() {
        tv_back.setOnClickListener {
            startActivity<MainActivity>()
            finish()
        }
    }
app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt
@@ -35,11 +35,11 @@
    override fun initClick() {
        tv_last.setOnClickListener {
            startActivity<MainActivity>()
            finish()
        }
        tv_back.setOnClickListener {
            startActivity<MainActivity>()
            finish()
        }
        tv_exit.clickDelay {
@@ -66,13 +66,20 @@
                }
            }
            7->{
                title = "超级记忆"
                title = "自主游戏2-超级记忆"
                tv_score.text = "恭喜你,已完成游戏!获得${score}积分!"
                tv_back.visible()
                tv_last.invisible()
                tv_exit.invisible()
                tv_1.text = "总题目:"
                tv_2.text = "正确题目:"
                tv_3.text = "错误题目:"
                tv_count.text = "$total"
                tv_right.text = "$right"
                tv_fault.text = "${total-right}"
                HttpManager.gameAchievement(rate,difficulty,id?:"","超级记忆",time).request(this){_,data->
                    tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!"
                    tv_score.text = "恭喜你,已完成游戏!获得${data?:0}积分!"
                }
            }
            8->{
@@ -85,8 +92,14 @@
                }
            }
            else->{
                when(type){
                    1-> title = "自主学习1-听音选图"
                    2-> title = "自主学习2-看图选音"
                    3-> title = "自主学习3-归纳排除"
                    4-> title = "自主学习4-有问有答"
                }
                if (type == 5){
                    title = "音图相配"
                    title = "自主学习5-音图相配"
                    tv_back.visible()
                    tv_last.invisible()
                    tv_exit.invisible()
app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt
@@ -1,10 +1,17 @@
package com.dollearn.student.ui.home
import android.R.attr.animation
import android.R.attr.max
import android.animation.Animator
import android.animation.ObjectAnimator
import android.animation.PropertyValuesHolder
import android.animation.ValueAnimator
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.util.Log
import android.view.View
import android.view.animation.LinearInterpolator
import androidx.recyclerview.widget.GridLayoutManager
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
@@ -23,8 +30,11 @@
import com.dollearn.student.utils.event.EmptyEvent
import com.dollearn.student.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.activity_super_listen.*
import kotlinx.android.synthetic.main.fragment_q_a.*
import kotlinx.android.synthetic.main.fragmetn_look_img.*
import kotlinx.android.synthetic.main.item_game_1.view.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.dip
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
@@ -34,6 +44,9 @@
class SuperListenActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener {
    override fun setContentView() = R.layout.activity_super_listen
    val level by lazy { //0就只能点入门,1就是入门和中级都能点,2就是入门、中级高级三个难度都可以点
        intent.getIntExtra("level", 0)
    }
    private val week by lazy {
        intent.getIntExtra("week", 0)
    }
@@ -48,7 +61,7 @@
    val TAG = "Listen====>"
    val list = arrayListOf<Subject>()
    var list = arrayListOf<Subject>()
    private val adapter = GameAdapter(list)
    val PLAY_VOICE = 1
@@ -78,6 +91,9 @@
    var state = 0 //0:准备听题 1:听题中 2:请作答 3:结束答题
    var showFullImage = false
    var paused = false
    override fun initClick() {
        tv_exit.setOnClickListener {
            if (tv_exit.text == "提交"){
@@ -97,6 +113,12 @@
                finish()
            }else
                onBackPressed()
        }
        cl_voice.setOnClickListener {
            if (!playing){
                handler?.sendEmptyMessage(PLAY_VOICE)
            }
        }
    }
@@ -132,8 +154,10 @@
                        sendEmptyMessageDelayed(STUDY_TIME, 1000)
                    }
                    PLAY_VOICE -> {
                        if (index < voiceList.size)
                        if (!paused&&!playing&&index < voiceList.size) {
                            playing = true
                            player.startPlayMusic(this@SuperListenActivity, voiceList[index])
                        }
                    }
                    COUNT_DOWN -> {
                        if (!playing) {
@@ -143,16 +167,18 @@
                        tv_tip.text = "请在${countTime}s内选择答案!"
                        if (countTime == 0) {
                            index++
                            startGame()
                            startGame(true)
                        } else {
                            sendEmptyMessageDelayed(COUNT_DOWN, 1000)
                        }
                    }
                    PLAY_RIGHT -> {
                        playing = true
                        rightPlaying = true
                        player.startPlayMusic(this@SuperListenActivity, rightVoice)
                    }
                    PLAY_ERROR -> {
                        playing = true
                        errorPlaying = true
                        player.startPlayMusic(this@SuperListenActivity, errorVoice)
                    }
@@ -181,7 +207,7 @@
        countdownDialog.callback = object :StringCallback{
            override fun onResult(rst: String) {
                index = 0
                startGame()
                startGame(true)
            }
        }
        countdownDialog.show(supportFragmentManager, "timer")
@@ -206,15 +232,19 @@
            }
            i++
        }
        Log.e(TAG,"总数:$total,计算得到行数:${min(bestColumns,bestRows)},列数:${max(bestColumns,bestRows)}")
        Log.e(TAG, "总数:$total,计算得到行数:${min(bestColumns, bestRows)},列数:${max(bestColumns, bestRows)}")
        val lineHeight = rv_list.height.toDouble() / min(bestColumns, bestRows)
        Log.e(TAG,"高度:${rv_list.height},计算得到行高:${lineHeight}")
        rv_list.layoutManager = GridLayoutManager(this, max(bestColumns,bestRows))
        Log.e(TAG, "高度:${rv_list.height},计算得到行高:${lineHeight}")
        rv_list.layoutManager = GridLayoutManager(this, max(bestColumns, bestRows))
        adapter.height = lineHeight.toInt()
        adapter.notifyDataSetChanged()
    }
    fun startGame() {
    /**
     * 切题
     * @param playNow true:表示立即播放下一题  false:3秒后播放下一题
     */
    fun startGame(playNow: Boolean = false) {
        if (index < voiceList.size){
            Log.e(TAG, "开始答题:index=${index}")
            tv_sort.text = (index+1).toString()
@@ -222,9 +252,10 @@
            countTime = TIME //重置答题时间
            tv_tip.text = "准备听题"
            state = 0
            handler?.sendEmptyMessageDelayed(PLAY_VOICE, if (index == 0) 200 else 3000)
            handler?.sendEmptyMessageDelayed(PLAY_VOICE, if (playNow) 200 else 3000)
        }else{
            tv_sort.visibility = View.INVISIBLE
            cl_voice.visibility = View.INVISIBLE
            tv_tip.text = ""
            state = 3
            tv_end.text = "已完成全部问题"
@@ -232,6 +263,56 @@
            handler?.removeMessages(STUDY_TIME)
        }
    }
    fun transAnimation(endView: View){
        val offx = getScreenX(endView) - getScreenX(cl_voice)
        val offy = getScreenY(endView) - getScreenY(cl_voice)
        val x = PropertyValuesHolder.ofFloat("translationX", 0f, offx.toFloat())
        val y = PropertyValuesHolder.ofFloat("translationY", 0f, offy.toFloat())
        val animator = ObjectAnimator.ofPropertyValuesHolder(cl_voice, x, y)
        animator.duration = 500
        animator.interpolator = LinearInterpolator()
        val withAnim = ValueAnimator.ofInt(cl_voice.width, endView.width).setDuration(500) //会影响结束坐标
        withAnim.addUpdateListener {
            cl_voice.layoutParams.width = it.animatedValue as Int
            cl_voice.requestLayout()
        }
        val heightAnim = ValueAnimator.ofInt(cl_voice.height, endView.height).setDuration(500)
        heightAnim.addUpdateListener {
            cl_voice.layoutParams.height = it.animatedValue as Int
            cl_voice.requestLayout()
        }
        withAnim.start()
        heightAnim.start()
        animator.start()
        animator.addListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(animation: Animator?) {
            }
            override fun onAnimationEnd(animation: Animator?) {
                endView.visible()
            }
            override fun onAnimationCancel(animation: Animator?) {
            }
            override fun onAnimationRepeat(animation: Animator?) {
            }
        })
    }
    private fun getScreenY(v: View):Int{
        val xy = IntArray(2)
        v.getLocationOnScreen(xy)
        return xy[1]
    }
    private fun getScreenX(v: View):Int{
        val xy = IntArray(2)
        v.getLocationOnScreen(xy)
        return xy[0]
    }
    override fun onUpdate(db: Double, time: Long) {
    }
@@ -243,7 +324,8 @@
        playing = true
        if (errorPlaying||rightPlaying)
            return
        if (!data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){//首次播放
//        if (!data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){//首次播放
        if (handler?.hasMessages(COUNT_DOWN) == false){//首次播放
            state = 1
            tv_tip.text = "请在${countTime}s内选择答案!"
            handler?.sendEmptyMessageDelayed(COUNT_DOWN, 1000)
@@ -258,18 +340,24 @@
        iv1.visible()
        iv2.visible()
        iv_playing.gone()
        if (data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){ //当前题目已作答,3秒后进入下一题
        if (data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[min(index,voiceList.lastIndex)])].completed){ //当前题目已作答,3秒后进入下一题
            index++
            startGame()
        }
        if (errorPlaying)
            errorPlaying = false
        if (rightPlaying){
        else if (rightPlaying){
            rightPlaying = false
            val subject = data!!.subjectList[data!!.subjectList.map { it.correct }
                .indexOf(voiceList[index])] //当前音频对应题目
            subject.completed = true
            handler?.sendEmptyMessage(PLAY_VOICE)
        }else{
            cl_voice.translationX = 0f
            cl_voice.translationY = 0f
            cl_voice.layoutParams.width = dip(159)
            cl_voice.layoutParams.height = dip(52)
            cl_voice.requestLayout()
        }
    }
@@ -285,8 +373,20 @@
        EventBus.getDefault().post(EmptyEvent(Const.EventCode.STOP_TIMER))
    }
    override fun onResume() {
        super.onResume()
        if (paused){
            paused = false
            handler?.sendEmptyMessageDelayed(PLAY_VOICE, 200)
        }
    }
    override fun onPause() {
        super.onPause()
        player.stopPlayMusic()
        if (!showFullImage){
            player.stopPlayMusic()
            paused = true
        }
        showFullImage = false
    }
}
app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt
@@ -1,8 +1,11 @@
package com.dollearn.student.ui.home
import androidx.core.os.bundleOf
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
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.Week
import com.dollearn.student.network.request
@@ -28,7 +31,13 @@
        }
        weekAdapter.setOnItemClickListener { view, position ->
            startActivity<ScheduleActivity>("week" to weeks[position].week,"season" to seasonAdapter.checked+1)
            if (weeks[position].canStudy)
                startActivity<ScheduleActivity>("week" to weeks[position].week,"season" to seasonAdapter.checked+1)
            else{
                val tipDialog = TipDialog()
                tipDialog.arguments = bundleOf("msg" to "请先完成上一周练习","isAlert" to true)
                tipDialog.showAllowingStateLoss(supportFragmentManager,"noStart")
            }
        }
    }
@@ -38,7 +47,6 @@
        rv_week.layoutManager = GridLayoutManager(this,3)
        rv_week.adapter = weekAdapter
        getWeeks()
    }
    private fun getWeeks(){
@@ -49,4 +57,9 @@
            weekAdapter.notifyDataSetChanged()
        }
    }
    override fun onResume() {
        super.onResume()
        getWeeks()
    }
}
app/src/main/java/com/dollearn/student/ui/home/WeekendFragment.kt
@@ -33,7 +33,6 @@
                HttpManager.lookPictureDbu(season, week).requestByF(this){_,data->
                    startActivity<LookImgActivity>("data" to data,"week" to week,"season" to season)
                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                }
            }
            cl_2.setOnClickListener {
@@ -47,9 +46,10 @@
        }
        if (day == 6){
            cl_1.setOnClickListener {
                startActivity<SuperListenActivity>("week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                HttpManager.userGameDifficulty(week).requestByF(this){_,data->
                    startActivity<SuperListenActivity>("week" to week,"season" to season,"level" to (data?:0))
                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                }
            }
            cl_2.setOnClickListener {
                showDialog("加载题目...")
app/src/main/java/com/dollearn/student/ui/home/adapter/CardAdapter.kt
@@ -1,6 +1,8 @@
package com.dollearn.student.ui.home.adapter
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import cn.sinata.xldutils.activity.ImagePagerActivity
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
import cn.sinata.xldutils.adapter.util.ViewHolder
import cn.sinata.xldutils.gone
@@ -12,20 +14,24 @@
import com.dollearn.student.utils.extention.clickDelay
import com.facebook.drawee.view.SimpleDraweeView
import kotlinx.android.synthetic.main.fragment_q_a.*
import org.jetbrains.anko.dip
import org.jetbrains.anko.startActivity
import java.util.ArrayList
class CardAdapter(list: ArrayList<Card>):HFRecyclerAdapter<Card>(list, R.layout.item_card) {
    private val act by lazy { context as MemoryActivity }
    var height:Int = 200 //行高
    var widgh:Int = 300 //行宽
    //第一次翻开的
    var position1 = -1
    private var p1View:View? = null
    var p1View:View? = null
    private var f1View:View? = null
    private var b1View:View? = null
    //第2次翻开的
    var position2 = -1
    private var p2View:View? = null
    var p2View:View? = null
    private var f2View:View? = null
    private var b2View:View? = null
@@ -35,7 +41,15 @@
        val front = holder.bind<View>(R.id.front)
        val rlVoice = holder.bind<View>(R.id.rl_voice)
        val ivImg = holder.bind<SimpleDraweeView>(R.id.iv_img)
        val iv_play = holder.bind<View>(R.id.iv_play)
        val layoutParams = frame.layoutParams as ConstraintLayout.LayoutParams
        layoutParams.height = height - act.dip(12)
        layoutParams.width = height*3/2
        if (layoutParams.width > widgh){
            layoutParams.width = widgh - act.dip(10)
            layoutParams.height = (widgh- act.dip(10))*2/3
        }
        frame.layoutParams = layoutParams
        if(data.type == 1){
            rlVoice.gone()
            ivImg.visible()
@@ -44,9 +58,14 @@
            rlVoice.visible()
            ivImg.gone()
        }
        iv_play.clickDelay {
            if (!act.playing&&position2 == -1){
                act.index = position
                act.handler?.sendEmptyMessage(act.PLAY_VOICE)
            }
        }
        frame.clickDelay {
            if(data.isBack){
            if(!act.playing&&data.isBack){
                if(position1 == -1)
                    position1 = position
                else if(position2 == -1)
app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt
@@ -5,6 +5,7 @@
import android.widget.ImageView
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.constraintlayout.widget.ConstraintLayout
import cn.sinata.xldutils.activity.ImagePagerActivity
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
import cn.sinata.xldutils.adapter.util.ViewHolder
import com.dollearn.student.R
@@ -18,6 +19,7 @@
import kotlinx.android.synthetic.main.fragment_listen.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.dip
import org.jetbrains.anko.startActivity
import java.util.ArrayList
class GameAdapter(list: ArrayList<Subject>):HFRecyclerAdapter<Subject>(list, R.layout.item_game_1) {
@@ -26,10 +28,15 @@
        val act = context as SuperListenActivity
        holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.img)
        val view = holder.bind<View>(R.id.cl_voice_end_1)
        val iv_full = holder.bind<View>(R.id.iv_full)
        iv_full.setOnClickListener {
            act.showFullImage = true
            act.startActivity<ImagePagerActivity>("url" to arrayListOf(data.img))
        }
        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.visibility = if (data.right) View.VISIBLE else View.INVISIBLE
        view.clickDelay {
//            (context as SuperListenActivity)
        }
@@ -54,7 +61,7 @@
                act.handler?.sendEmptyMessage(act.PLAY_RIGHT)
                act.rightCount++
                subject.right = true
                notifyItemChanged(position)
                act.transAnimation(view)
            }else{
                act.handler?.sendEmptyMessage(act.PLAY_ERROR) //选择答案后,停止倒计时
                ivResult.setImageResource(R.mipmap.zhifushibai)
app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt
@@ -72,7 +72,7 @@
            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,
                        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?) {
                                }
app/src/main/java/com/dollearn/student/ui/mine/adapter/GameRecordAdapter.kt
@@ -11,7 +11,7 @@
class GameRecordAdapter(list: ArrayList<GameRecord>) :HFRecyclerAdapter<GameRecord>(list, R.layout.item_game_record){
    override fun onBind(holder: ViewHolder, position: Int, data: GameRecord) {
        holder.setText(R.id.tv_time,data.createTime)
        holder.setText(R.id.tv_time,data.time)
        holder.setText(R.id.tv_name,data.gameName)
        holder.setText(R.id.tv_duration,formatDuration(data.useTime))
        holder.setText(R.id.tv_rate,data.accuracy+"%")
app/src/main/java/com/dollearn/student/ui/mine/adapter/ImageAdapter.kt
File was deleted
app/src/main/java/com/dollearn/student/views/NoScrollRecyclerView.java
New file
@@ -0,0 +1,69 @@
package com.dollearn.student.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
public class NoScrollRecyclerView extends RecyclerView {
    private boolean isScroll = false;
    public NoScrollRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public NoScrollRecyclerView(Context context) {
        super(context);
    }
    /**
     * 1.dispatchTouchEvent一般情况不做处理
     * ,如果修改了默认的返回值,子孩子都无法收到事件
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);   // return true;不行
    }
    /**
     * 是否拦截
     * 拦截:会走到自己的onTouchEvent方法里面来
     * 不拦截:事件传递给子孩子
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // return false;//可行,不拦截事件,
        // return true;//不行,孩子无法处理事件
        //return super.onInterceptTouchEvent(ev);//不行,会有细微移动
        if (isScroll) {
            return super.onInterceptTouchEvent(ev);
        } else {
            return false;
        }
    }
    /**
     * 是否消费事件
     * 消费:事件就结束
     * 不消费:往父控件传
     */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        //return false;// 可行,不消费,传给父控件
        //return true;// 可行,消费,拦截事件
        //super.onTouchEvent(ev); //不行,
        //虽然onInterceptTouchEvent中拦截了,
        //但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法.
        if (isScroll) {
            return super.onTouchEvent(ev);
        } else {
            return true;// 可行,消费,拦截事件
        }
    }
    public void setScroll(boolean scroll) {
        isScroll = scroll;
    }
}
app/src/main/res/drawable/selector_select_radio.xml
New file
@@ -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="@mipmap/icon_selected"/>
    <item android:state_selected="false" android:drawable="@mipmap/icon_radiobutton"/>
</selector>
app/src/main/res/layout/activity_learn_record.xml
@@ -119,7 +119,7 @@
        app:layout_constraintTop_toBottomOf="@id/cl_top"
        android:layout_marginTop="9dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="70dp">
        android:layout_marginBottom="50dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
app/src/main/res/layout/activity_login.xml
@@ -7,10 +7,10 @@
    <ImageView
        android:id="@+id/iv_bg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_width="296dp"
        android:layout_height="129dp"
        android:layout_marginTop="34dp"
        android:scaleType="centerCrop"
        android:scaleType="centerInside"
        android:src="@mipmap/logo"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
app/src/main/res/layout/activity_result.xml
@@ -59,7 +59,7 @@
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="12dp"
        android:textStyle="bold" />
    <ScrollView
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginHorizontal="230dp"
@@ -68,9 +68,7 @@
        android:background="@drawable/bg_white_8dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/tv_last">
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:id="@+id/tv_score"
                android:layout_width="wrap_content"
@@ -96,6 +94,7 @@
                android:textColor="@color/textColor"
                android:textSize="16sp"/>
            <TextView
                android:id="@+id/tv_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintBaseline_toBaselineOf="@id/tv_count"
@@ -114,6 +113,7 @@
                android:textColor="@color/textColor"
                android:textSize="16sp"/>
            <TextView
                android:id="@+id/tv_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintBaseline_toBaselineOf="@id/tv_right"
@@ -132,6 +132,7 @@
                android:textColor="@color/textColor"
                android:textSize="16sp"/>
            <TextView
                android:id="@+id/tv_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_constraintBaseline_toBaselineOf="@id/tv_fault"
@@ -148,12 +149,10 @@
                app:layout_constraintTop_toBottomOf="@id/tv_fault"
                android:textSize="24sp"
                android:textStyle="bold"
                app:layout_constraintVertical_bias="0.3"
                app:layout_constraintBottom_toBottomOf="parent"
                android:layout_marginBottom="10dp"
                android:textColor="@color/color_text_price"
                android:layout_marginTop="50dp"
                android:text="正确率:0%"/>
        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_schedul.xml
@@ -120,6 +120,7 @@
            android:background="@color/white"
            app:tl_indicator_corner_radius="3dp"
            app:tl_indicator_color="@color/colorPrimary"
            app:tl_indicator_margin_bottom="7dp"
            app:tl_tab_space_equal="true"
            app:tl_textsize="18sp"
            app:tl_textSelectColor="@color/colorPrimary"
app/src/main/res/layout/activity_start_world_cup.xml
File was deleted
app/src/main/res/layout/activity_super_listen.xml
@@ -4,9 +4,45 @@
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layoutDescription="@xml/activity_memory_scene">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/cl_bottom"
        android:layout_width="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_exit"
            android:layout_width="124dp"
            android:layout_height="wrap_content"
            android:textSize="14sp"
            android:textColor="@color/white"
            android:background="@drawable/bg_blue_4dp"
            android:text="退出"
            android:paddingVertical="10dp"
            app:layout_goneMarginStart="0dp"
            android:visibility="invisible"
            android:gravity="center"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="25dp"
            android:textStyle="bold" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <com.dollearn.student.views.NoScrollRecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/rv_list"
        android:layout_marginHorizontal="30dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/cl_bottom"
        android:layout_marginTop="100dp"/>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/cl_top">
        <TextView
            android:layout_width="32dp"
@@ -28,8 +64,8 @@
            android:layout_width="159dp"
            android:layout_height="52dp"
            app:layout_constraintStart_toEndOf="@id/tv_sort"
            app:layout_constraintTop_toTopOf="@id/tv_sort"
            app:layout_constraintBottom_toBottomOf="@id/tv_sort"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="29dp"
            android:layout_marginStart="12dp"
            android:elevation="2dp"
            android:id="@+id/cl_voice"
@@ -78,51 +114,16 @@
            android:textSize="14sp"
            android:textStyle="bold"
            android:text=""/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBaseline_toBaselineOf="@id/tv_sort"
        android:textColor="@color/colorRed"
        android:id="@+id/tv_end"
        android:gravity="center"
        android:textSize="16sp"
        android:textStyle="bold"
        android:text=""/>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/cl_bottom"
        android:layout_width="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_exit"
            android:layout_width="124dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"
            android:textColor="@color/white"
            android:background="@drawable/bg_blue_4dp"
            android:text="退出"
            android:paddingVertical="10dp"
            app:layout_goneMarginStart="0dp"
            android:visibility="invisible"
            app:layout_constraintBaseline_toBaselineOf="@id/tv_sort"
            android:textColor="@color/colorRed"
            android:id="@+id/tv_end"
            android:gravity="center"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginBottom="25dp"
            android:textStyle="bold" />
            android:textSize="16sp"
            android:textStyle="bold"
            android:text=""/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/rv_list"
        android:layout_marginHorizontal="30dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/cl_bottom"
        android:layout_marginTop="100dp"/>
</androidx.constraintlayout.motion.widget.MotionLayout>
app/src/main/res/layout/activity_tab_list.xml
File was deleted
app/src/main/res/layout/dialog_diff.xml
@@ -42,7 +42,7 @@
        android:textSize="16sp"
        app:layout_constraintTop_toBottomOf="@id/tv_title" />
    <RadioGroup
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
@@ -53,33 +53,35 @@
        android:layout_marginEnd="35dp"
        android:layout_marginStart="8dp"
        app:layout_constraintEnd_toEndOf="parent">
        <RadioButton
        <TextView
            android:id="@+id/rb_0"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textColor="@color/textColor66"
            android:singleLine="true"
            android:checked="true"
            android:button="@drawable/selector_check_radio"
            android:paddingVertical="8dp"
            android:drawableStart="@drawable/selector_select_radio"
            android:text="入门级"/>
        <RadioButton
        <TextView
            android:id="@+id/rb_1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@drawable/selector_check_radio"
            android:paddingVertical="8dp"
            android:drawableStart="@drawable/selector_select_radio"
            android:textColor="@color/textColor66"
            android:text="中级"/>
        <RadioButton
        <TextView
            android:id="@+id/rb_2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:button="@drawable/selector_check_radio"
            android:paddingVertical="8dp"
            android:drawableStart="@drawable/selector_select_radio"
            android:textColor="@color/textColor66"
            android:layout_weight="1"
            android:text="高级"/>
    </RadioGroup>
    </LinearLayout>
    <TextView
        android:id="@+id/tv_cancel"
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" />
app/src/main/res/layout/fragment_home.xml
@@ -37,7 +37,7 @@
        android:id="@+id/tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎使用海豚英语!"
        android:text="欢迎使用哆能智学!"
        android:textColor="@color/white"
        android:textStyle="bold"
        android:textSize="25sp"
@@ -49,7 +49,7 @@
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="海豚英语学习体系"
        android:text="孩子自己就能学好的\n英语课程体系"
        android:textColor="@color/white"
        android:textSize="20sp"
        android:alpha="0.8"
app/src/main/res/layout/fragment_include.xml
@@ -12,13 +12,13 @@
        android:layout_height="0dp"
        android:padding="4dp"
        android:elevation="2dp"
        android:layout_marginTop="20dp"
        android:layout_marginTop="14dp"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintVertical_chainStyle="packed"
        android:background="@drawable/bg_white_8dp"
        app:layout_constraintTop_toBottomOf="@id/cl_voice1"
        app:layout_constraintBottom_toTopOf="@id/cl_4"
        android:layout_marginBottom="140dp"
        android:layout_marginBottom="130dp"
        app:layout_constraintDimensionRatio="3:2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/cl_2"
@@ -82,7 +82,7 @@
        android:layout_height="0dp"
        android:padding="4dp"
        android:elevation="2dp"
        android:layout_marginBottom="10dp"
        android:layout_marginBottom="5dp"
        app:layout_constraintTop_toBottomOf="@id/cl_1"
        android:background="@drawable/bg_white_8dp"
        app:layout_constraintBottom_toBottomOf="parent"
@@ -143,18 +143,22 @@
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_1"
        app:layout_constraintEnd_toEndOf="@id/cl_1"
        app:layout_constraintDimensionRatio="3:1"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="24dp"
        android:layout_marginTop="15dp"
        android:id="@+id/cl_voice1"
        android:layout_marginStart="4dp"
        android:layout_marginEnd="40dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -163,7 +167,8 @@
        <ImageView
            android:id="@+id/iv2_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -181,18 +186,21 @@
            app:layout_constraintStart_toStartOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_2"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="24dp"
        app:layout_constraintEnd_toEndOf="@id/cl_2"
        app:layout_constraintDimensionRatio="3:1"
        app:layout_constraintTop_toTopOf="@id/cl_voice1"
        android:id="@+id/cl_voice2"
        android:layout_marginStart="4dp"
        android:layout_marginEnd="40dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -201,7 +209,8 @@
        <ImageView
            android:id="@+id/iv2_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -219,18 +228,21 @@
            app:layout_constraintStart_toStartOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_3"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="24dp"
        app:layout_constraintEnd_toEndOf="@id/cl_3"
        app:layout_constraintDimensionRatio="3:1"
        app:layout_constraintTop_toTopOf="@id/cl_voice1"
        android:id="@+id/cl_voice3"
        android:layout_marginStart="4dp"
        android:layout_marginEnd="40dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -239,7 +251,8 @@
        <ImageView
            android:id="@+id/iv2_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -257,18 +270,22 @@
            app:layout_constraintStart_toStartOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_4"
        app:layout_constraintEnd_toEndOf="@id/cl_4"
        app:layout_constraintDimensionRatio="3:1"
        app:layout_constraintBottom_toTopOf="@id/cl_4"
        android:layout_marginBottom="20dp"
        android:layout_marginBottom="14dp"
        android:id="@+id/cl_voice4"
        android:layout_marginStart="4dp"
        android:layout_marginEnd="40dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -277,7 +294,8 @@
        <ImageView
            android:id="@+id/iv2_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -295,18 +313,21 @@
            app:layout_constraintStart_toStartOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_5"
        app:layout_constraintBottom_toTopOf="@id/cl_5"
        android:layout_marginBottom="20dp"
        app:layout_constraintEnd_toEndOf="@id/cl_5"
        app:layout_constraintDimensionRatio="3:1"
        android:layout_marginEnd="40dp"
        app:layout_constraintTop_toTopOf="@id/cl_voice4"
        android:id="@+id/cl_voice5"
        android:layout_marginStart="4dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -315,7 +336,8 @@
        <ImageView
            android:id="@+id/iv2_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -333,18 +355,21 @@
            app:layout_constraintStart_toStartOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="159dp"
        android:layout_height="52dp"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/cl_6"
        app:layout_constraintBottom_toTopOf="@id/cl_6"
        android:layout_marginBottom="20dp"
        app:layout_constraintEnd_toEndOf="@id/cl_6"
        app:layout_constraintDimensionRatio="3:1"
        android:layout_marginEnd="40dp"
        app:layout_constraintTop_toTopOf="@id/cl_voice4"
        android:id="@+id/cl_voice6"
        android:layout_marginStart="4dp"
        android:background="@drawable/selector_bg_voice">
        <ImageView
            android:id="@+id/iv1_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/yuyin"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -353,7 +378,8 @@
        <ImageView
            android:id="@+id/iv2_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginVertical="6dp"
            android:src="@mipmap/play"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
@@ -412,7 +438,7 @@
        android:elevation="2dp"
        app:layout_constraintTop_toBottomOf="@id/cl_3"
        android:layout_marginEnd="23dp"
        android:layout_marginTop="8dp">
        android:layout_marginTop="6dp">
        <ImageView
            android:id="@+id/iv_error_3"
            android:layout_width="42dp"
@@ -442,7 +468,7 @@
        app:layout_constraintEnd_toStartOf="@id/cl_answer_3"
        app:layout_constraintTop_toBottomOf="@id/cl_3"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="8dp">
        android:layout_marginTop="6dp">
        <ImageView
            android:id="@+id/iv_error_2"
            android:layout_width="42dp"
@@ -472,7 +498,7 @@
        app:layout_constraintEnd_toStartOf="@id/cl_answer_2"
        app:layout_constraintTop_toBottomOf="@id/cl_3"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="8dp">
        android:layout_marginTop="6dp">
        <ImageView
            android:id="@+id/iv_error_1"
            android:layout_width="42dp"
app/src/main/res/layout/item_card.xml
@@ -5,11 +5,12 @@
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <FrameLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="3:2"
        android:layout_marginHorizontal="9dp"
        android:layout_marginVertical="8dp"
        android:layout_height="200dp"
        android:layout_width="300dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginHorizontal="5dp"
        android:layout_marginVertical="4dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent">
        <androidx.constraintlayout.widget.ConstraintLayout
@@ -21,41 +22,14 @@
                android:layout_height="match_parent"
                android:background="@drawable/bg_blue_8dp"
                android:id="@+id/rl_voice">
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="159dp"
                    android:layout_height="52dp"
                    android:id="@+id/cl_voice"
                <ImageView
                    android:id="@+id/iv_play"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginHorizontal="6dp"
                    android:layout_centerInParent="true"
                    android:background="@drawable/bg_white_8dp">
                    <ImageView
                        android:id="@+id/iv1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/yuyin"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginStart="25dp"/>
                    <ImageView
                        android:id="@+id/iv2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/play"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginEnd="23dp"/>
                    <ImageView
                        android:id="@+id/iv_playing"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:visibility="gone"
                        android:src="@mipmap/bofangzhong"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent" />
                </androidx.constraintlayout.widget.ConstraintLayout>
                    android:src="@mipmap/play_blue"/>
            </RelativeLayout>
            <com.facebook.drawee.view.SimpleDraweeView
@@ -71,6 +45,19 @@
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@mipmap/bg_card_back"
            android:scaleType="fitXY"
            android:visibility="gone"/>
    </FrameLayout>
    <ImageView
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="@id/frame"
        app:layout_constraintEnd_toEndOf="@id/frame"
        app:layout_constraintTop_toTopOf="@id/frame"
        app:layout_constraintBottom_toBottomOf="@id/frame"
        android:scaleType="centerInside"
        android:visibility="gone"
        android:id="@+id/iv_result"
        android:src="@mipmap/successs"
        android:layout_margin="6dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/item_game_1.xml
@@ -14,6 +14,13 @@
        android:padding="4dp"
        android:background="@drawable/bg_white_8dp"
        app:layoutDescription="@xml/item_game_1_scene">
        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:id="@+id/line_in"
            app:layout_constraintTop_toTopOf="@id/motion"
            app:layout_constraintVertical_bias="0.33"
            app:layout_constraintBottom_toBottomOf="@id/motion"/>
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
@@ -62,7 +69,7 @@
            android:layout_width="match_parent"
            android:id="@+id/cl_voice_end_1"
            android:background="@color/colorPrimary"
            android:visibility="gone"
            android:visibility="invisible"
            android:layout_height="match_parent">
            <ImageView
                android:id="@+id/iv1_1_end"
app/src/main/res/layout/item_img.xml
File was deleted
app/src/main/res/layout/item_referee_world_cup.xml
File was deleted
app/src/main/res/layout/layout_tab.xml
New file
@@ -0,0 +1,32 @@
<?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"
    android:clipChildren="false"
    android:clipToPadding="false">
    <TextView
        android:id="@+id/tv_tab_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:fontFamily="@font/impact_regular"
        android:singleLine="true"/>
    <com.flyco.tablayout.widget.MsgView
        android:id="@+id/rtv_msg_tip"
        xmlns:mv="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="#ffffff"
        android:textSize="11.5sp"
        android:visibility="gone"
        mv:mv_backgroundColor="#FD481F"
        mv:mv_isRadiusHalfHeight="true"
        mv:mv_strokeColor="#ffffff"
        mv:mv_strokeWidth="1dp"/>
</RelativeLayout>
app/src/main/res/mipmap-xxhdpi/ad.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ad_origin.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/add.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/add_head.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/add_stu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/add_user.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/arrow_yellow.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/banner_explore.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/baoming.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_competition_tip.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_end.9.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_top.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_vs.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_wc_title.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_world_cup.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bg_world_cup_1.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bianjisekuai.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bmi.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/book.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/book_selected.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bottom_shadow.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/bronzemedal.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/caipan.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/calender.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/canyucishu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/changshengjiangjun.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/circle_orange.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/cl_left_disable.9.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/cl_right_disable.9.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coin.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coin_small.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coupon_checked.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coupon_left.9.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coupon_right.9.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/coupon_uncheck.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/daohang.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/del.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/del_2.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/diet_2.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/dingbu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/dingchang.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/dingweiicon.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/duihuan.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/empty.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/empty_course.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/erweima.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/exchange.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/fabu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/filter_close.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/filter_open.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/fire.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/game_bg.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/game_description.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/game_top.jpg
Binary files differ
app/src/main/res/mipmap-xxhdpi/gengduo.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/goldmedal.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/guanyu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/guiwei.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/huodong.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_add.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_address.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_cancel.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_couse_home.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_dial.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_heat.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_last.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_must.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_phone.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_vip.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_alipay.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_all.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_arrow.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_arrow_bootom.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_arrow_left.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_arrow_right.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_arrow_top.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_back.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_back_white.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_eye.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_eye_close.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_login_vx.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_me_evaluation.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_me_extension.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_me_history.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_me_item.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_more_grey.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_nav_close.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_nav_open.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_opinion.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_people.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_phone.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_play.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_search_gray.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_tab_home.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_tab_lib.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_tab_study.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_tab_user.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_time.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/icon_vx.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/iv_del_user.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/iv_disable.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/iv_phone.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/iv_used.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/jifen.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/kefu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/keshi.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/keshi1.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/keshishu.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/keshitagicon.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/loc.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/location_grey.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/logo.jpg
app/src/main/res/mipmap-xxhdpi/logo.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/map.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/marker_normal.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/medal_club.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/medal_play.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/medal_social.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/medal_sport.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/more_blue.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/more_medal.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/nan.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/nv.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/open_soon.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/pencil.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/phone.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/phone_pc.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/pingjia.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/place_holder_coupon.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/place_holder_free.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/place_holder_shop.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/place_holder_welfare.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/play_1.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/play_blue.png
app/src/main/res/mipmap-xxhdpi/play_red.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/playing_blue.png
app/src/main/res/mipmap-xxhdpi/pop_blue.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/quanbao.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/rectangle.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/ren.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/renyuan.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/reset.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/saomaicon.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/saoyisao.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/service.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/setting_mine.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/shengao.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/shengli.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/shibai.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/shijian.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/shijiebei.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/silvermedal.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/sort_asc.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/sort_desc.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/sort_none.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/splash.jpg
app/src/main/res/mipmap-xxhdpi/splash.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/star.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/star_empty.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/star_red.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/tizhong.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/tr_close.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/tr_open.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/update.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/uploads.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/used_keshi.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/vip.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/vip_gold.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/vx.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/wanpaibi.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/wc_age.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/wc_time.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/wodejifen.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/xiangji.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/xiaofei.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/yuezhanyueyong.png
Binary files differ
app/src/main/res/mipmap-xxhdpi/yundongying.png
Binary files differ
app/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
<resources>
    <string name="app_name">海豚英语</string>
    <string name="app_name">哆能智学-学习端</string>
    <string name="id_card">1234567890Xx</string>
    <string name="储值说明"><u>储值说明?</u></string>
    <string name="reserve_record"><u>上课记录</u></string>
app/src/main/res/xml/item_game_1_scene.xml
@@ -44,9 +44,8 @@
            android:alpha="0"
            motion:layout_constraintStart_toStartOf="@+id/iv_img"
            motion:layout_constraintEnd_toEndOf="@+id/iv_img"
            motion:layout_constraintTop_toTopOf="@+id/iv_img"
            motion:layout_constraintTop_toBottomOf="@+id/line_in"
            motion:layout_constraintBottom_toBottomOf="@+id/iv_img"
            motion:layout_constraintVertical_bias="0.6"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
    </ConstraintSet>
@@ -56,9 +55,8 @@
            android:alpha="1"
            motion:layout_constraintStart_toStartOf="@+id/iv_img"
            motion:layout_constraintEnd_toEndOf="@+id/iv_img"
            motion:layout_constraintTop_toTopOf="@+id/iv_img"
            motion:layout_constraintTop_toBottomOf="@+id/line_in"
            motion:layout_constraintBottom_toBottomOf="@+id/iv_img"
            motion:layout_constraintVertical_bias="0.6"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
    </ConstraintSet>
xldutils-kotlin/src/main/res/mipmap-xxhdpi/title_logo.png