├── .gitignore
├── 1.png
├── README.md
├── build.gradle
├── example
├── .gitignore
├── build.gradle
├── example-release.apk
├── libs
│ ├── MobCommons-2016.1222.1756.jar
│ ├── MobTools-2016.1222.1756.jar
│ ├── ShareSDK-Core-2.8.0.jar
│ ├── ShareSDK-ShortMessage-2.8.0.jar
│ ├── ShareSDK-Wechat-2.8.0.jar
│ ├── ShareSDK-Wechat-Core-2.8.0.jar
│ ├── ShareSDK-Wechat-Favorite-2.8.0.jar
│ └── ShareSDK-Wechat-Moments-2.8.0.jar
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── ShareSDK.xml
│ ├── assets
│ │ └── zepto.js
│ ├── dist
│ │ ├── css
│ │ │ ├── sm-extend.css
│ │ │ ├── sm-extend.min.css
│ │ │ ├── sm.css
│ │ │ └── sm.min.css
│ │ └── js
│ │ │ ├── sm-city-picker.js
│ │ │ ├── sm-city-picker.min.js
│ │ │ ├── sm-extend.js
│ │ │ ├── sm-extend.min.js
│ │ │ ├── sm.js
│ │ │ └── sm.min.js
│ ├── index.html
│ ├── js
│ │ └── index.js
│ └── second.html
│ ├── java
│ ├── cn
│ │ └── sharesdk
│ │ │ └── onekeyshare
│ │ │ ├── CustomerLogo.java
│ │ │ ├── OnekeyShare.java
│ │ │ ├── OnekeySharePage.java
│ │ │ ├── OnekeyShareTheme.java
│ │ │ ├── OnekeyShareThemeImpl.java
│ │ │ ├── ShareContentCustomizeCallback.java
│ │ │ └── themes
│ │ │ └── classic
│ │ │ ├── ClassicTheme.java
│ │ │ ├── EditPage.java
│ │ │ ├── FriendAdapter.java
│ │ │ ├── FriendListItem.java
│ │ │ ├── FriendListPage.java
│ │ │ ├── IndicatorView.java
│ │ │ ├── PRTHeader.java
│ │ │ ├── PicViewerPage.java
│ │ │ ├── PlatformPage.java
│ │ │ ├── PlatformPageAdapter.java
│ │ │ ├── RotateImageView.java
│ │ │ ├── XView.java
│ │ │ ├── land
│ │ │ ├── EditPageLand.java
│ │ │ ├── FriendListPageLand.java
│ │ │ ├── PlatformPageAdapterLand.java
│ │ │ └── PlatformPageLand.java
│ │ │ └── port
│ │ │ ├── EditPagePort.java
│ │ │ ├── FriendListPagePort.java
│ │ │ ├── PlatformPageAdapterPort.java
│ │ │ └── PlatformPagePort.java
│ └── com
│ │ └── diabin
│ │ └── fastec
│ │ └── example
│ │ ├── ExampleActivity.java
│ │ ├── ExampleApp.java
│ │ ├── ExampleDelegate.java
│ │ ├── event
│ │ ├── ShareEvent.java
│ │ └── TestEvent.java
│ │ ├── generators
│ │ ├── AppRegister.java
│ │ ├── WeChatEntry.java
│ │ └── WeChatPayEntry.java
│ │ └── push
│ │ └── PushReceiver.java
│ └── res
│ ├── drawable-hdpi
│ └── ssdk_oks_ptr_ptr.png
│ ├── drawable-xhdpi
│ ├── ssdk_auth_title_back.png
│ ├── ssdk_back_arr.png
│ ├── ssdk_logo.png
│ ├── ssdk_oks_classic_alipay.png
│ ├── ssdk_oks_classic_alipaymoments.png
│ ├── ssdk_oks_classic_bluetooth.png
│ ├── ssdk_oks_classic_check_checked.png
│ ├── ssdk_oks_classic_check_default.png
│ ├── ssdk_oks_classic_douban.png
│ ├── ssdk_oks_classic_dropbox.png
│ ├── ssdk_oks_classic_email.png
│ ├── ssdk_oks_classic_evernote.png
│ ├── ssdk_oks_classic_facebook.png
│ ├── ssdk_oks_classic_facebookmessenger.png
│ ├── ssdk_oks_classic_flickr.png
│ ├── ssdk_oks_classic_foursquare.png
│ ├── ssdk_oks_classic_googleplus.png
│ ├── ssdk_oks_classic_instagram.png
│ ├── ssdk_oks_classic_instapaper.png
│ ├── ssdk_oks_classic_kaixin.png
│ ├── ssdk_oks_classic_kakaostory.png
│ ├── ssdk_oks_classic_kakaotalk.png
│ ├── ssdk_oks_classic_laiwang.png
│ ├── ssdk_oks_classic_laiwangmoments.png
│ ├── ssdk_oks_classic_line.png
│ ├── ssdk_oks_classic_linkedin.png
│ ├── ssdk_oks_classic_mingdao.png
│ ├── ssdk_oks_classic_pinterest.png
│ ├── ssdk_oks_classic_pocket.png
│ ├── ssdk_oks_classic_qq.png
│ ├── ssdk_oks_classic_qzone.png
│ ├── ssdk_oks_classic_renren.png
│ ├── ssdk_oks_classic_shortmessage.png
│ ├── ssdk_oks_classic_sinaweibo.png
│ ├── ssdk_oks_classic_tencentweibo.png
│ ├── ssdk_oks_classic_tumblr.png
│ ├── ssdk_oks_classic_twitter.png
│ ├── ssdk_oks_classic_vkontakte.png
│ ├── ssdk_oks_classic_wechat.png
│ ├── ssdk_oks_classic_wechatfavorite.png
│ ├── ssdk_oks_classic_wechatmoments.png
│ ├── ssdk_oks_classic_whatsapp.png
│ ├── ssdk_oks_classic_yixin.png
│ ├── ssdk_oks_classic_yixinmoments.png
│ ├── ssdk_oks_classic_youdao.png
│ └── ssdk_title_div.png
│ ├── drawable
│ ├── ssdk_oks_classic_platform_cell_back.xml
│ └── ssdk_oks_classic_progressbar.xml
│ ├── layout
│ ├── activity_main.xml
│ └── delegate_example.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── app_logo.png
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── raw
│ └── test.json
│ └── values
│ ├── colors.xml
│ ├── dimens.xml
│ ├── ssdk_instapaper_strings.xml
│ ├── ssdk_oks_color_drawables.xml
│ ├── ssdk_oks_strings.xml
│ ├── ssdk_strings.xml
│ ├── strings.xml
│ └── styles.xml
├── gradle.properties
├── gradlew
├── gradlew.bat
├── latte-annotations
├── build.gradle
└── src
│ └── main
│ └── java
│ └── com
│ └── flj
│ └── latte
│ └── annotations
│ ├── AppRegisterGenerator.java
│ ├── EntryGenerator.java
│ └── PayEntryGenerator.java
├── latte-compiler
├── build.gradle
└── src
│ └── main
│ └── java
│ └── com
│ └── flj
│ └── latte
│ └── compiler
│ ├── AppRegisterVisitor.java
│ ├── EntryVisitor.java
│ ├── LatteProcessor.java
│ └── PayEntryVisitor.java
├── latte-core
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── flj
│ │ └── latte
│ │ ├── activities
│ │ └── ProxyActivity.java
│ │ ├── app
│ │ ├── AccountManager.java
│ │ ├── ConfigKeys.java
│ │ ├── Configurator.java
│ │ ├── IUserChecker.java
│ │ ├── Latte.java
│ │ └── YLXconst.java
│ │ ├── delegates
│ │ ├── BaseDelegate.java
│ │ ├── IPageLoadListener.java
│ │ ├── LatteDelegate.java
│ │ ├── PermissionCheckerDelegate.java
│ │ ├── bottom
│ │ │ ├── BaseBottomDelegate.java
│ │ │ ├── BottomItemDelegate.java
│ │ │ ├── BottomTabBean.java
│ │ │ └── ItemBuilder.java
│ │ └── web
│ │ │ ├── IWebViewInitializer.java
│ │ │ ├── LatteWebInterface.java
│ │ │ ├── WebDelegate.java
│ │ │ ├── WebDelegateImpl.java
│ │ │ ├── WebViewInitializer.java
│ │ │ ├── chromeclient
│ │ │ └── WebChromeClientImpl.java
│ │ │ ├── client
│ │ │ └── WebViewClientImpl.java
│ │ │ ├── event
│ │ │ ├── Event.java
│ │ │ ├── EventManager.java
│ │ │ ├── IEvent.java
│ │ │ └── UndefineEvent.java
│ │ │ └── route
│ │ │ ├── RouteKeys.java
│ │ │ └── Router.java
│ │ ├── net
│ │ ├── HttpMethod.java
│ │ ├── RestClient.java
│ │ ├── RestClientBuilder.java
│ │ ├── RestCreator.java
│ │ ├── RestService.java
│ │ ├── callback
│ │ │ ├── IError.java
│ │ │ ├── IFailure.java
│ │ │ ├── IRequest.java
│ │ │ ├── ISuccess.java
│ │ │ └── RequestCallbacks.java
│ │ ├── download
│ │ │ ├── DownloadHandler.java
│ │ │ └── SaveFileTask.java
│ │ ├── interceptors
│ │ │ ├── BaseInterceptor.java
│ │ │ └── DebugInterceptor.java
│ │ └── rx
│ │ │ ├── AddCookieInterceptor.java
│ │ │ ├── RxRestClient.java
│ │ │ ├── RxRestClientBuilder.java
│ │ │ └── RxRestService.java
│ │ ├── ui
│ │ ├── camera
│ │ │ ├── CameraHandler.java
│ │ │ ├── CameraImageBean.java
│ │ │ ├── LatteCamera.java
│ │ │ └── RequestCodes.java
│ │ ├── loader
│ │ │ ├── LatteLoader.java
│ │ │ ├── LoaderCreator.java
│ │ │ └── LoaderStyle.java
│ │ └── scanner
│ │ │ ├── LatteViewFinderView.java
│ │ │ ├── ScanView.java
│ │ │ └── ScannerDelegate.java
│ │ ├── util
│ │ ├── AMUtils.java
│ │ ├── CommonUtils.java
│ │ ├── DialogSelectItemUtil.java
│ │ ├── callback
│ │ │ ├── CallbackManager.java
│ │ │ ├── CallbackType.java
│ │ │ ├── IGlobalCallback.java
│ │ │ └── SortPopCallBack.java
│ │ ├── dimen
│ │ │ └── DimenUtil.java
│ │ ├── downtimer
│ │ │ ├── DownTimer.java
│ │ │ └── DownTimerListener.java
│ │ ├── expandtext
│ │ │ └── StretchUtil.java
│ │ ├── file
│ │ │ └── FileUtil.java
│ │ ├── log
│ │ │ └── LatteLogger.java
│ │ ├── storage
│ │ │ └── LattePreference.java
│ │ └── timer
│ │ │ ├── BaseTimerTask.java
│ │ │ └── ITimerListener.java
│ │ └── wechat
│ │ ├── BaseWXActivity.java
│ │ ├── BaseWXEntryActivity.java
│ │ ├── BaseWXPayEntryActivity.java
│ │ ├── LatteWeChat.java
│ │ ├── callbacks
│ │ └── IWeChatSignInCallback.java
│ │ └── templates
│ │ ├── AppRegisterTemplate.java
│ │ ├── WXEntryTemplate.java
│ │ └── WXPayEntryTemplate.java
│ └── res
│ ├── anim
│ ├── push_bottom_in.xml
│ └── push_bottom_out.xml
│ ├── drawable
│ ├── btn_border.xml
│ ├── btn_border_nativephoto.xml
│ ├── btn_border_takephoto.xml
│ ├── btn_dialog_cancel.xml
│ └── dialog_okcancle_bottombg.xml
│ ├── layout
│ ├── bottom_item_icon_text_layout.xml
│ ├── delegate_bottom.xml
│ ├── dialog_camera_panel.xml
│ ├── dialog_select_item.xml
│ └── dialog_select_list.xml
│ └── values
│ ├── ids.xml
│ ├── strings.xml
│ └── style.xml
├── latte-ec
├── .gitignore
├── build.gradle
├── libs
│ └── alipaySdk-20170922.jar
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ └── iconfont.ttf
│ ├── java
│ └── com
│ │ └── flj
│ │ └── latte
│ │ └── ec
│ │ ├── course_detail
│ │ ├── CourseDetailDelegate.java
│ │ ├── CourseDetailItemType.java
│ │ └── Teachingeiradapter.java
│ │ ├── detail
│ │ ├── GoodsDetailDelegate.java
│ │ ├── GoodsInfoDelegate.java
│ │ ├── ImageDelegate.java
│ │ ├── RecyclerImageAdapter.java
│ │ ├── ScaleUpAnimator.java
│ │ └── TabPagerAdapter.java
│ │ ├── icon
│ │ ├── EcIcons.java
│ │ └── FontEcModule.java
│ │ ├── launcher
│ │ ├── LauncherDelegate.java
│ │ └── LauncherScrollDelegate.java
│ │ ├── main
│ │ ├── EcBottomDelegate.java
│ │ ├── audition
│ │ │ ├── AuditionDelegate.java
│ │ │ ├── AuditionItemFields.java
│ │ │ ├── AuditionItemType.java
│ │ │ ├── OverAuditionDelegate
│ │ │ │ ├── OverAuditionConveter.java
│ │ │ │ ├── OverAuditionDelegate.java
│ │ │ │ └── OverAuditionadapter.java
│ │ │ ├── OverBookDelegate
│ │ │ │ ├── OverBookConverter.java
│ │ │ │ ├── OverBookDelegate.java
│ │ │ │ └── OverBookadapter.java
│ │ │ └── OverdueDelegate
│ │ │ │ ├── OverdueConverter.java
│ │ │ │ ├── OverdueDelegate.java
│ │ │ │ └── Overdueadapter.java
│ │ ├── cart
│ │ │ ├── ICartItemListener.java
│ │ │ ├── ShopCartAdapter.java
│ │ │ ├── ShopCartDataConverter.java
│ │ │ ├── ShopCartDelegate.java
│ │ │ ├── ShopCartItemFields.java
│ │ │ └── ShopCartItemType.java
│ │ ├── discover
│ │ │ └── DiscoverDelegate.java
│ │ ├── index
│ │ │ ├── IndexArtConverter.java
│ │ │ ├── IndexArtItemType.java
│ │ │ ├── IndexArtadapter.java
│ │ │ ├── IndexDataConverter.java
│ │ │ ├── IndexDelegate.java
│ │ │ ├── IndexHotConverter.java
│ │ │ ├── IndexHotItemClickListener.java
│ │ │ ├── IndexHotadapter.java
│ │ │ ├── IndexItemClickListener.java
│ │ │ ├── IndexItemFields.java
│ │ │ ├── IndexItemType.java
│ │ │ ├── TranslucentBehavior.java
│ │ │ └── search
│ │ │ │ ├── SearchAdapter.java
│ │ │ │ ├── SearchDataConverter.java
│ │ │ │ ├── SearchDelegate.java
│ │ │ │ └── SearchItemType.java
│ │ ├── personal
│ │ │ ├── PersonalClickListener.java
│ │ │ ├── PersonalDelegate.java
│ │ │ ├── address
│ │ │ │ ├── AddressAdapter.java
│ │ │ │ ├── AddressDataConverter.java
│ │ │ │ ├── AddressDelegate.java
│ │ │ │ ├── AddressItemFields.java
│ │ │ │ └── AddressItemType.java
│ │ │ ├── list
│ │ │ │ ├── ListAdapter.java
│ │ │ │ ├── ListBean.java
│ │ │ │ └── ListItemType.java
│ │ │ ├── order
│ │ │ │ ├── OrderCommentDelegate.java
│ │ │ │ ├── OrderItemFields.java
│ │ │ │ ├── OrderListAdapter.java
│ │ │ │ ├── OrderListClickListener.java
│ │ │ │ ├── OrderListDataConverter.java
│ │ │ │ ├── OrderListDelegate.java
│ │ │ │ └── OrderListItemType.java
│ │ │ ├── profile
│ │ │ │ ├── UploadConfig.java
│ │ │ │ ├── UserProfileClickListener.java
│ │ │ │ └── UserProfileDelegate.java
│ │ │ └── settings
│ │ │ │ ├── AboutDelegate.java
│ │ │ │ ├── NameDelegate.java
│ │ │ │ ├── SettingsClickListener.java
│ │ │ │ └── SettingsDelegate.java
│ │ └── sort
│ │ │ ├── SortDelegate.java
│ │ │ ├── content
│ │ │ ├── ContentDelegate.java
│ │ │ ├── SectionAdapter.java
│ │ │ ├── SectionBean.java
│ │ │ ├── SectionContentItemEntity.java
│ │ │ └── SectionDataConverter.java
│ │ │ └── list
│ │ │ ├── SortRecyclerAdapter.java
│ │ │ ├── VerticalListDataConverter.java
│ │ │ └── VerticalListDelegate.java
│ │ ├── pay
│ │ ├── FastPay.java
│ │ ├── IAlPayResultListener.java
│ │ ├── PayAsyncTask.java
│ │ └── PayResult.java
│ │ └── sign
│ │ ├── ISignListener.java
│ │ ├── SignHandler.java
│ │ ├── SignInDelegate.java
│ │ └── SignUpDelegate.java
│ └── res
│ ├── anim
│ └── translate_anim.xml
│ ├── drawable
│ ├── arrow_down.png
│ ├── arrow_up.png
│ ├── avator.png
│ ├── border_circle_timer.xml
│ ├── btn_border_overbook.xml
│ ├── btn_border_overdue.xml
│ ├── de_bg.png
│ ├── dot_focus.xml
│ ├── dot_normal.xml
│ ├── ic_audition_remind.png
│ ├── ic_home_art.png
│ ├── ic_home_broadcast.png
│ ├── ic_home_computer.png
│ ├── ic_home_dance.png
│ ├── ic_home_hot.png
│ ├── ic_home_music.png
│ ├── ic_home_sports.png
│ ├── ic_my_comments.png
│ ├── ic_my_favorites.png
│ ├── ic_my_leave.png
│ ├── ic_right.png
│ ├── pic_home_banner.png
│ ├── rs_select_btn_blue.xml
│ ├── rs_select_btn_gray.xml
│ ├── saber.png
│ └── ylx_blue_btn.xml
│ ├── layout
│ ├── arrow_item_avatar.xml
│ ├── arrow_item_layout.xml
│ ├── arrow_switch_layout.xml
│ ├── delegate_about.xml
│ ├── delegate_address.xml
│ ├── delegate_audition.xml
│ ├── delegate_course_detail.xml
│ ├── delegate_discover.xml
│ ├── delegate_goods_detail.xml
│ ├── delegate_goods_info.xml
│ ├── delegate_image.xml
│ ├── delegate_index.xml
│ ├── delegate_launcher.xml
│ ├── delegate_list_content.xml
│ ├── delegate_name.xml
│ ├── delegate_order_comment.xml
│ ├── delegate_order_list.xml
│ ├── delegate_overaudition.xml
│ ├── delegate_overbook.xml
│ ├── delegate_overdue.xml
│ ├── delegate_personal.xml
│ ├── delegate_search.xml
│ ├── delegate_settings.xml
│ ├── delegate_shop_cart.xml
│ ├── delegate_sign_in.xml
│ ├── delegate_sign_up.xml
│ ├── delegate_sort.xml
│ ├── delegate_user_profile.xml
│ ├── delegate_vertical_list.xml
│ ├── dialog_pay_panel.xml
│ ├── item_address.xml
│ ├── item_art_course.xml
│ ├── item_hot_course.xml
│ ├── item_image.xml
│ ├── item_order_list.xml
│ ├── item_overadutiton.xml
│ ├── item_overaudition.xml
│ ├── item_overbook.xml
│ ├── item_search.xml
│ ├── item_section_content.xml
│ ├── item_section_header.xml
│ ├── item_shop_cart.xml
│ ├── item_teaching_enviroment.xml
│ ├── item_vertical_menu_list.xml
│ ├── layout_goods_detail_bottom.xml
│ └── stub_shop_cart_no_item.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── avatar.jpg
│ ├── ic_launcher.png
│ ├── ic_launcher_round.png
│ ├── launcher_00.jpeg
│ ├── launcher_01.jpeg
│ ├── launcher_02.jpeg
│ ├── launcher_03.jpeg
│ ├── launcher_04.jpeg
│ └── launcher_05.jpeg
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ ├── colors.xml
│ ├── dimens.xml
│ └── strings.xml
├── latte-ui
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── flj
│ │ └── latte
│ │ └── ui
│ │ ├── animation
│ │ ├── BezierAnimation.java
│ │ └── BezierUtil.java
│ │ ├── banner
│ │ ├── BannerCreator.java
│ │ ├── BannerCreatornative.java
│ │ ├── HolderCreator.java
│ │ ├── HolderCreatornative.java
│ │ ├── ImageHolder.java
│ │ └── ImageHoldernative.java
│ │ ├── date
│ │ └── DateDialogUtil.java
│ │ ├── dimen
│ │ └── ScreenUtils.java
│ │ ├── image
│ │ └── LatteGlideModel.java
│ │ ├── launcher
│ │ ├── ILauncherListener.java
│ │ ├── LauncherHolder.java
│ │ ├── LauncherHolderCreator.java
│ │ ├── OnLauncherFinishTag.java
│ │ └── ScrollLauncherTag.java
│ │ ├── recycler
│ │ ├── BaseDecoration.java
│ │ ├── DataConverter.java
│ │ ├── DividerLookupImpl.java
│ │ ├── ItemType.java
│ │ ├── MultipleEntityBuilder.java
│ │ ├── MultipleFields.java
│ │ ├── MultipleItemEntity.java
│ │ ├── MultipleRecyclerAdapter.java
│ │ ├── MultipleViewHolder.java
│ │ └── RgbValue.java
│ │ ├── refresh
│ │ ├── PagingBean.java
│ │ └── RefreshHandler.java
│ │ └── widget
│ │ ├── AutoPhotoLayout.java
│ │ ├── CircleTextView.java
│ │ └── StarLayout.java
│ └── res
│ ├── drawable
│ ├── border_text.xml
│ ├── btn_border.xml
│ ├── btn_border_nativephoto.xml
│ ├── btn_border_takephoto.xml
│ ├── btn_normal_border.xml
│ ├── dot_focus.xml
│ └── dot_normal.xml
│ ├── layout
│ ├── dialog_camera_panel.xml
│ ├── dialog_image_click_panel.xml
│ ├── item_multiple_banner.xml
│ ├── item_multiple_image.xml
│ ├── item_multiple_image_text.xml
│ └── item_multiple_text.xml
│ └── values
│ ├── attrs.xml
│ ├── dimen.xml
│ ├── ids.xml
│ ├── strings.xml
│ └── style.xml
├── pics
├── 1.png
├── 10.png
├── 11.png
├── 12.png
├── 13.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
└── 9.png
├── settings.gradle
└── teacherapp
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
├── androidTest
└── java
│ └── com
│ └── tongyao
│ └── teacherapp
│ └── ExampleInstrumentedTest.java
├── main
├── AndroidManifest.xml
├── java
│ └── com
│ │ └── tongyao
│ │ └── teacherapp
│ │ └── activities
│ │ ├── LoginActivity.java
│ │ ├── MainActivity.java
│ │ └── RegisterActivity.java
└── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── layout
│ └── activity_main.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
└── test
└── java
└── com
└── tongyao
└── teacherapp
└── ExampleUnitTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | build
4 | gradle
5 | .idea
6 | local.properties
--------------------------------------------------------------------------------
/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/1.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # yuelexue
2 | [https://blog.csdn.net/qq_38366777/article/details/82840140](csdn博客传送门)
3 |
4 | 简要介绍功能
5 | 1.在悦乐学系统中,用户能通过自己的手机号来获取账户,这也是市面上很主流的操作,当输入符合规定时,便能成为该系统的一个用户。
6 |
7 | 2.登陆功能,用户通过之前注册的账户、便能成功访问悦乐学系统
8 |
9 | 3.课程搜索功能,用户输入关键字,搜索出名称相关的课程,并根据自己的需要选择对应的课程。
10 |
11 | 4.课程分类功能,用户可根据分类搜索出相关培训机构信息,并根据系统提示,购买或预约该课程(分类如数学、英语、美术、体育等等)
12 |
13 | 5.支付功能,能让用户使用第三方支付平台(支付宝、微信)
14 |
15 | 6.试听课程(已预约课程、已结束课程)
16 |
17 | 7.个人中心内对帐户头像、密码等可以进行更改。
18 |
19 | 8.反馈功能,用户可以根据自己的需求、并在使用的过程产生问题,可以提供给开发者
20 |
21 |
22 |
23 | 项目架构介绍
24 | core 核心库:封装app通用的一些基础组件,比如网络情求,权限设置等等
25 |
26 | ec 业务库:这里面含有以上app所有的业务逻辑
27 |
28 | ui ui库:封装统一使用的ui
29 |
30 |
31 |
32 | 图片展示
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter()
4 | google()
5 | }
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:3.0.1'
8 | }
9 | }
10 |
11 | allprojects {
12 | repositories {
13 | jcenter()
14 | mavenCentral()
15 | //BaseRecyclerViewAdapterHelper
16 | maven { url "https://jitpack.io" }
17 | google()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/example/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 26
5 | buildToolsVersion '27.0.1'
6 | defaultConfig {
7 | applicationId "com.diabin.fastec.example"
8 | minSdkVersion 21
9 | targetSdkVersion 26
10 | versionCode 2
11 | versionName "1.1"
12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13 | multiDexEnabled true
14 |
15 | ndk {
16 | //选择要添加的对应cpu类型的.so库。
17 | abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a', 'x86', 'x86_64', 'mips', 'mips64'
18 | }
19 |
20 | manifestPlaceholders = [
21 | JPUSH_PKGNAME: applicationId,
22 | JPUSH_APPKEY : "26a34a494a1d5dc03b133b24",
23 | JPUSH_CHANNEL: "developer-default",
24 | ]
25 | }
26 | buildTypes {
27 | release {
28 | minifyEnabled false
29 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
30 | }
31 | }
32 | productFlavors {
33 | }
34 | compileOptions {
35 | sourceCompatibility JavaVersion.VERSION_1_8
36 | targetCompatibility JavaVersion.VERSION_1_8
37 | }
38 | }
39 |
40 | dependencies {
41 | implementation fileTree(include: ['*.jar'], dir: 'libs')
42 | implementation project(':latte-ec')
43 | provided project(':latte-annotations')
44 | annotationProcessor project(':latte-compiler')
45 | implementation 'cn.jiguang.sdk:jpush:3.0.8'
46 | implementation 'cn.jiguang.sdk:jcore:1.1.6'
47 | }
48 |
--------------------------------------------------------------------------------
/example/example-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/example-release.apk
--------------------------------------------------------------------------------
/example/libs/MobCommons-2016.1222.1756.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/MobCommons-2016.1222.1756.jar
--------------------------------------------------------------------------------
/example/libs/MobTools-2016.1222.1756.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/MobTools-2016.1222.1756.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-Core-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-Core-2.8.0.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-ShortMessage-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-ShortMessage-2.8.0.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-Wechat-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-Wechat-2.8.0.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-Wechat-Core-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-Wechat-Core-2.8.0.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-Wechat-Favorite-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-Wechat-Favorite-2.8.0.jar
--------------------------------------------------------------------------------
/example/libs/ShareSDK-Wechat-Moments-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hughcoder/yuelexue/d6a3d4714ba677370052168adfd66b23b446c41b/example/libs/ShareSDK-Wechat-Moments-2.8.0.jar
--------------------------------------------------------------------------------
/example/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/FuLingjie/Library/Android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/example/src/main/assets/js/index.js:
--------------------------------------------------------------------------------
1 | $(function () {
2 | $('.share').click(function () {
3 | var json = {
4 | action: "share",
5 | params: {
6 | imageUrl:"http://i9.qhimg.com/t017d891ca365ef60b5.jpg",
7 | url:"https://www.baidu.com",
8 | title:"标题",
9 | text:"描述"
10 | }
11 | };
12 |
13 | latte.event(JSON.stringify(json));
14 |
15 | });
16 |
17 | $('.comment').click(function () {
18 |
19 | var json = {
20 | action: "comment"
21 | };
22 |
23 | latte.event(JSON.stringify(json));
24 |
25 | });
26 | });
--------------------------------------------------------------------------------
/example/src/main/assets/second.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 | 本地测试2
9 |
10 |
11 |
12 | 这是本地页面2
13 |
14 |
15 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/CustomerLogo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare;
10 |
11 | import android.graphics.Bitmap;
12 | import android.view.View.OnClickListener;
13 |
14 | /**
15 | * 九宫格自定义的图标对象
16 | */
17 | public class CustomerLogo {
18 | public String label;
19 | public Bitmap logo;
20 | public OnClickListener listener;
21 | }
22 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/OnekeyShareTheme.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare;
10 |
11 | import cn.sharesdk.onekeyshare.themes.classic.ClassicTheme;
12 |
13 | /**
14 | * 快捷分享的主题样式
15 | */
16 | public enum OnekeyShareTheme {
17 | /**
18 | * 九格宫的主题样式 ,对应的实现类ClassicTheme
19 | */
20 | CLASSIC(0, new ClassicTheme());
21 |
22 | private final int value;
23 | private final OnekeyShareThemeImpl impl;
24 |
25 | private OnekeyShareTheme(int value, OnekeyShareThemeImpl impl) {
26 | this.value = value;
27 | this.impl = impl;
28 | }
29 |
30 | public static OnekeyShareTheme fromValue(int value) {
31 | for (OnekeyShareTheme theme : OnekeyShareTheme.values()) {
32 | if (theme.value == value) {
33 | return theme;
34 | }
35 | }
36 | return CLASSIC;
37 | }
38 |
39 | public int getValue() {
40 | return value;
41 | }
42 |
43 | public OnekeyShareThemeImpl getImpl() {
44 | return impl;
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/ShareContentCustomizeCallback.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare;
10 |
11 | import cn.sharesdk.framework.Platform;
12 | import cn.sharesdk.framework.Platform.ShareParams;
13 |
14 | /**
15 | * 自定义不同平台分享不同内容的接口
16 | */
17 | public interface ShareContentCustomizeCallback {
18 |
19 | public void onShare(Platform platform, ShareParams paramsToShare);
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/themes/classic/RotateImageView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare.themes.classic;
10 |
11 | import android.content.Context;
12 | import android.graphics.Canvas;
13 | import android.widget.ImageView;
14 |
15 | /**
16 | * 在At好友页面中,下拉刷新列表头部的旋转箭头
17 | */
18 | public class RotateImageView extends ImageView {
19 | private float rotation;
20 |
21 | public RotateImageView(Context context) {
22 | super(context);
23 | }
24 |
25 | public void setRotation(float rotation) {
26 | this.rotation = rotation;
27 | invalidate();
28 | }
29 |
30 | protected void onDraw(Canvas canvas) {
31 | canvas.rotate(rotation, getWidth() / 2, getHeight() / 2);
32 | super.onDraw(canvas);
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/themes/classic/XView.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare.themes.classic;
10 |
11 | import android.content.Context;
12 | import android.graphics.Canvas;
13 | import android.graphics.Paint;
14 | import android.view.View;
15 |
16 | /**
17 | * 编辑页面中删除图片“X”按钮
18 | */
19 | public class XView extends View {
20 | private float ratio;
21 |
22 | public XView(Context context) {
23 | super(context);
24 | }
25 |
26 | public void setRatio(float ratio) {
27 | this.ratio = ratio;
28 | }
29 |
30 | protected void onDraw(Canvas canvas) {
31 | int width = getWidth() / 2;
32 | int height = getHeight() / 2;
33 |
34 | Paint paint = new Paint();
35 | paint.setAntiAlias(true);
36 | paint.setColor(0xffa0a0a0);
37 | canvas.drawRect(width, 0, getWidth(), height, paint);
38 |
39 | paint = new Paint();
40 | paint.setAntiAlias(true);
41 | paint.setStrokeWidth(3f * ratio);
42 | paint.setColor(0xffffffff);
43 | float left = 8f * ratio;
44 | canvas.drawLine(width + left, left, getWidth() - left, width - left, paint);
45 | canvas.drawLine(width + left, width - left, getWidth() - left, left, paint);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/themes/classic/land/FriendListPageLand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare.themes.classic.land;
10 |
11 | import com.mob.tools.utils.ResHelper;
12 |
13 | import cn.sharesdk.onekeyshare.OnekeyShareThemeImpl;
14 | import cn.sharesdk.onekeyshare.themes.classic.FriendListPage;
15 |
16 | /**
17 | * 横屏的好友列表
18 | */
19 | public class FriendListPageLand extends FriendListPage {
20 | private static final int DESIGN_SCREEN_WIDTH = 1280;
21 | private static final int DESIGN_TITLE_HEIGHT = 70;
22 |
23 | public FriendListPageLand(OnekeyShareThemeImpl impl) {
24 | super(impl);
25 | }
26 |
27 | protected float getRatio() {
28 | float screenWidth = ResHelper.getScreenWidth(activity);
29 | return screenWidth / DESIGN_SCREEN_WIDTH;
30 | }
31 |
32 | protected int getDesignTitleHeight() {
33 | return DESIGN_TITLE_HEIGHT;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/example/src/main/java/cn/sharesdk/onekeyshare/themes/classic/land/PlatformPageLand.java:
--------------------------------------------------------------------------------
1 | /*
2 | * 官网地站:http://www.mob.com
3 | * 技术支持QQ: 4006852216
4 | * 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
5 | *
6 | * Copyright (c) 2013年 mob.com. All rights reserved.
7 | */
8 |
9 | package cn.sharesdk.onekeyshare.themes.classic.land;
10 |
11 | import java.util.ArrayList;
12 |
13 | import cn.sharesdk.onekeyshare.OnekeyShareThemeImpl;
14 | import cn.sharesdk.onekeyshare.themes.classic.PlatformPage;
15 | import cn.sharesdk.onekeyshare.themes.classic.PlatformPageAdapter;
16 |
17 | /**
18 | * 横屏的九宫格页面
19 | */
20 | public class PlatformPageLand extends PlatformPage {
21 |
22 | public PlatformPageLand(OnekeyShareThemeImpl impl) {
23 | super(impl);
24 | }
25 |
26 | public void onCreate() {
27 | requestLandscapeOrientation();
28 | super.onCreate();
29 | }
30 |
31 | protected PlatformPageAdapter newAdapter(ArrayList