├── .github ├── ISSUE_TEMPLATE │ └── config.yml ├── workflows │ └── android.yml └── FUNDING.yml ├── logo.png ├── picture ├── gif │ ├── 1.gif │ ├── 2.gif │ ├── 3.gif │ ├── 4.gif │ ├── 5.gif │ ├── 6.gif │ ├── 7.gif │ ├── 8.gif │ ├── 9.gif │ ├── 10.gif │ ├── 11.gif │ └── 12.gif ├── activity │ ├── 1.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ ├── 9.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 19.jpg │ ├── 20.jpg │ ├── 21.jpg │ ├── 22.jpg │ ├── 23.jpg │ ├── 24.jpg │ ├── 25.jpg │ ├── 26.jpg │ ├── 27.jpg │ ├── 28.jpg │ ├── 29.jpg │ ├── 30.jpg │ ├── 31.jpg │ ├── 32.jpg │ ├── 33.jpg │ ├── 34.jpg │ ├── 35.jpg │ └── 36.jpg ├── demo_code.png ├── dialog │ ├── 1.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ └── 9.jpg ├── help │ ├── vote_1.jpg │ ├── vote_2.jpg │ ├── mvvm_issue.jpg │ ├── contributors.jpg │ ├── mvp_issue_1.jpg │ ├── mvp_issue_2.jpg │ └── swipe_issue.jpg ├── douyin │ ├── douyin_logo.png │ └── douyin_open_source_agreement.jpg └── resource │ ├── tip_error_ic.png │ ├── tip_finish_ic.png │ ├── status_empty_ic.png │ ├── status_error_ic.png │ ├── status_order_ic.png │ ├── tip_warning_ic.png │ ├── status_network_ic.png │ ├── home_mime_off_ic.svg │ ├── home_main_off_ic.svg │ ├── rating_bar_fill.svg │ ├── example_bg.svg │ ├── home_mime_on_ic.svg │ └── home_found_off_ic.svg ├── app ├── AppSignature.jks ├── AppSignature.jpg ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── attrs.xml │ │ │ └── integers.xml │ │ ├── mipmap-xhdpi │ │ │ └── launcher_ic.png │ │ ├── mipmap-xxhdpi │ │ │ └── launcher_ic.png │ │ ├── mipmap-xxxhdpi │ │ │ └── launcher_ic.png │ │ ├── drawable-xxhdpi │ │ │ ├── guide_1_bg.webp │ │ │ ├── guide_2_bg.webp │ │ │ ├── guide_3_bg.webp │ │ │ ├── logo_big_ic.png │ │ │ └── update_app_top_bg.png │ │ ├── drawable │ │ │ ├── guide_indicator_selected.xml │ │ │ ├── home_search_bar_gray_bg.xml │ │ │ ├── guide_indicator_unselected.xml │ │ │ ├── home_search_bar_transparent_bg.xml │ │ │ ├── home_found_selector.xml │ │ │ ├── home_main_selector.xml │ │ │ ├── home_mime_selector.xml │ │ │ ├── home_message_selector.xml │ │ │ ├── home_mime_off_ic.xml │ │ │ └── home_main_off_ic.xml │ │ └── layout │ │ │ ├── copy_item.xml │ │ │ ├── pay_password_empty_item.xml │ │ │ ├── copy_popup.xml │ │ │ ├── copy_dialog.xml │ │ │ ├── guide_item.xml │ │ │ ├── picker_item.xml │ │ │ ├── copy_activity.xml │ │ │ ├── copy_fragment.xml │ │ │ ├── status_item.xml │ │ │ ├── pay_password_normal_item.xml │ │ │ ├── pay_password_delete_item.xml │ │ │ ├── status_fragment.xml │ │ │ ├── status_activity.xml │ │ │ ├── home_activity.xml │ │ │ └── home_navigation_item.xml │ │ ├── res-common │ │ ├── values │ │ │ ├── integers.xml │ │ │ ├── dimens.xml │ │ │ ├── strings_http.xml │ │ │ └── colors.xml │ │ ├── anim │ │ │ ├── shake_interpolator.xml │ │ │ ├── left_in_activity.xml │ │ │ ├── left_out_activity.xml │ │ │ ├── right_in_activity.xml │ │ │ ├── right_out_activity.xml │ │ │ └── shake_anim.xml │ │ ├── drawable │ │ │ ├── image_preview_indicator.xml │ │ │ ├── video_progress_ball_bg.xml │ │ │ ├── dialog_input_bg.xml │ │ │ ├── video_volume_low_ic.xml │ │ │ ├── video_schedule_forward_ic.xml │ │ │ ├── video_schedule_rewind_ic.xml │ │ │ ├── checkbox_selector.xml │ │ │ ├── video_volume_medium_ic.xml │ │ │ ├── radiobutton_selector.xml │ │ │ ├── succeed_ic.xml │ │ │ ├── countdown_color_selector.xml │ │ │ ├── video_brightness_low_ic.xml │ │ │ ├── white_selector.xml │ │ │ ├── compound_normal_ic.xml │ │ │ ├── radiobutton_checked_ic.xml │ │ │ ├── transparent_selector.xml │ │ │ ├── video_volume_high_ic.xml │ │ │ ├── radiobutton_disable_ic.xml │ │ │ ├── video_brightness_medium_ic.xml │ │ │ ├── video_brightness_high_ic.xml │ │ │ ├── button_rect_selector.xml │ │ │ ├── checkbox_checked_ic.xml │ │ │ ├── videocam_ic.xml │ │ │ ├── video_lock_open_ic.xml │ │ │ ├── checkbox_disable_ic.xml │ │ │ ├── video_lock_close_ic.xml │ │ │ ├── update_progress_bg.xml │ │ │ ├── video_volume_mute_ic.xml │ │ │ ├── arrows_bottom_ic.xml │ │ │ ├── arrows_left_ic.xml │ │ │ ├── arrows_right_ic.xml │ │ │ ├── arrows_top_ic.xml │ │ │ ├── progress_gradient_bg.xml │ │ │ ├── share_link_ic.xml │ │ │ ├── add_ic.xml │ │ │ ├── camera_ic.xml │ │ │ ├── close_icon.xml │ │ │ ├── reboot_ic.xml │ │ │ ├── video_progress_bg.xml │ │ │ ├── share_qzone_ic.xml │ │ │ ├── login_qq_ic.xml │ │ │ ├── share_qq_ic.xml │ │ │ ├── phone_ic.xml │ │ │ ├── safe_ic.xml │ │ │ └── button_circle_selector.xml │ │ ├── layout │ │ │ ├── image_preview_item.xml │ │ │ ├── video_play_activity.xml │ │ │ ├── message_dialog.xml │ │ │ ├── select_dialog.xml │ │ │ ├── input_dialog.xml │ │ │ ├── album_dialog.xml │ │ │ ├── share_item.xml │ │ │ ├── browser_fragment.xml │ │ │ ├── menu_item.xml │ │ │ └── tab_item_design.xml │ │ └── xml │ │ │ ├── network_security_config.xml │ │ │ └── file_paths.xml │ │ └── java │ │ └── com │ │ └── hjq │ │ └── demo │ │ ├── http │ │ ├── api │ │ │ ├── LogoutApi.kt │ │ │ ├── CopyApi.kt │ │ │ ├── UserInfoApi.kt │ │ │ ├── GetCodeApi.kt │ │ │ ├── UpdateImageApi.kt │ │ │ ├── VerifyCodeApi.kt │ │ │ ├── LoginApi.kt │ │ │ ├── PhoneApi.kt │ │ │ ├── PasswordApi.kt │ │ │ └── RegisterApi.kt │ │ ├── exception │ │ │ ├── TokenException.kt │ │ │ └── ResultException.kt │ │ └── model │ │ │ ├── RequestServer.kt │ │ │ └── HttpData.kt │ │ ├── aop │ │ ├── CheckNet.kt │ │ ├── Log.kt │ │ ├── SingleClick.kt │ │ └── CheckNetCut.kt │ │ ├── ktx │ │ └── ToastKtx.kt │ │ ├── ui │ │ ├── popup │ │ │ ├── CopyPopup.kt │ │ │ └── PermissionDescriptionPopup.kt │ │ ├── activity │ │ │ ├── CopyActivity.kt │ │ │ └── AboutActivity.kt │ │ ├── dialog │ │ │ ├── CopyDialog.kt │ │ │ └── common │ │ │ │ └── WaitDialog.kt │ │ ├── fragment │ │ │ └── CopyFragment.kt │ │ └── adapter │ │ │ ├── CopyAdapter.kt │ │ │ ├── GuideAdapter.kt │ │ │ ├── StatusAdapter.kt │ │ │ └── common │ │ │ └── ImagePreviewAdapter.kt │ │ ├── other │ │ ├── LinkClickableSpan.kt │ │ ├── ToastInterceptor.kt │ │ ├── DebugLoggerTree.kt │ │ └── ToastStyle.kt │ │ ├── action │ │ └── ImmersionAction.kt │ │ └── app │ │ └── AppApplication.kt ├── gradle.properties ├── proguard-sdk.pro └── proguard-app.pro ├── library ├── base │ ├── src │ │ └── main │ │ │ └── AndroidManifest.xml │ └── build.gradle.kts ├── core │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ ├── values │ │ │ │ └── integers.xml │ │ │ └── anim │ │ │ │ ├── window_top_out.xml │ │ │ │ ├── window_bottom_in.xml │ │ │ │ ├── window_bottom_out.xml │ │ │ │ ├── window_left_in.xml │ │ │ │ ├── window_left_out.xml │ │ │ │ ├── window_right_in.xml │ │ │ │ ├── window_right_out.xml │ │ │ │ ├── window_top_in.xml │ │ │ │ ├── layout_fall_down.xml │ │ │ │ ├── layout_from_right.xml │ │ │ │ ├── layout_from_bottom.xml │ │ │ │ ├── window_ios_in.xml │ │ │ │ ├── window_ios_out.xml │ │ │ │ ├── layout_from_right_item.xml │ │ │ │ ├── layout_from_bottom_item.xml │ │ │ │ ├── window_scale_out.xml │ │ │ │ ├── layout_fall_down_item.xml │ │ │ │ └── window_scale_in.xml │ │ │ └── java │ │ │ └── com │ │ │ └── hjq │ │ │ └── core │ │ │ ├── action │ │ │ ├── ContextAction.kt │ │ │ ├── AnimAction.kt │ │ │ └── ClickAction.kt │ │ │ ├── ktx │ │ │ ├── ContextKtx.kt │ │ │ └── KeyboardActionKtx.kt │ │ │ └── tools │ │ │ └── DoubleClickTools.kt │ └── build.gradle.kts ├── customWidget │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── res │ │ │ └── drawable │ │ │ │ ├── input_delete_ic.xml │ │ │ │ ├── rating_star_fill_ic.xml │ │ │ │ ├── rating_star_off_ic.xml │ │ │ │ └── password_on_ic.xml │ │ │ └── java │ │ │ └── com │ │ │ └── hjq │ │ │ └── custom │ │ │ └── widget │ │ │ ├── view │ │ │ ├── PressAlphaTextView.kt │ │ │ └── ScaleImageView.kt │ │ │ └── layout │ │ │ └── NoScrollViewPager.kt │ └── build.gradle.kts ├── smallestWidth │ ├── src │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── res │ │ │ ├── values-sw240dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw320dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw360dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw362dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw384dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw392dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw400dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw410dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw411dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw432dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw451dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw480dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw533dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw540dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw592dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw600dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw640dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw662dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw720dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw768dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw800dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw811dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw820dp │ │ │ └── dimens_sp.xml │ │ │ ├── values │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw1024dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw960dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw961dp │ │ │ └── dimens_sp.xml │ │ │ ├── values-sw1280dp │ │ │ └── dimens_sp.xml │ │ │ └── values-sw1365dp │ │ │ └── dimens_sp.xml │ └── build.gradle.kts └── umengSdk │ ├── proguard-umeng.pro │ └── src │ └── main │ ├── res │ └── values │ │ └── strings.xml │ └── java │ └── com │ └── hjq │ └── umeng │ └── sdk │ ├── WXEntryActivity.kt │ └── Platform.kt ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── localMaven └── com │ ├── umeng │ └── umsdk │ │ ├── share-qq │ │ ├── 7.3.7 │ │ │ ├── share-qq-7.3.7.jar │ │ │ └── share-qq-7.3.7.pom │ │ └── maven-metadata.xml │ │ ├── share-wx │ │ ├── 7.3.7 │ │ │ ├── share-wx-7.3.7.jar │ │ │ └── share-wx-7.3.7.pom │ │ └── maven-metadata.xml │ │ └── share-core │ │ ├── 7.3.7 │ │ ├── share-core-7.3.7.jar │ │ └── share-core-7.3.7.pom │ │ └── maven-metadata.xml │ └── tencent │ └── qq │ └── open-sdk │ ├── 3.5.18.0 │ ├── open-sdk-3.5.18.0.jar │ └── open-sdk-3.5.18.0.pom │ └── maven-metadata.xml └── gradle.properties /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/logo.png -------------------------------------------------------------------------------- /picture/gif/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/1.gif -------------------------------------------------------------------------------- /picture/gif/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/2.gif -------------------------------------------------------------------------------- /picture/gif/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/3.gif -------------------------------------------------------------------------------- /picture/gif/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/4.gif -------------------------------------------------------------------------------- /picture/gif/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/5.gif -------------------------------------------------------------------------------- /picture/gif/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/6.gif -------------------------------------------------------------------------------- /picture/gif/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/7.gif -------------------------------------------------------------------------------- /picture/gif/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/8.gif -------------------------------------------------------------------------------- /picture/gif/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/9.gif -------------------------------------------------------------------------------- /picture/gif/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/10.gif -------------------------------------------------------------------------------- /picture/gif/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/11.gif -------------------------------------------------------------------------------- /picture/gif/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/gif/12.gif -------------------------------------------------------------------------------- /app/AppSignature.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/AppSignature.jks -------------------------------------------------------------------------------- /app/AppSignature.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/AppSignature.jpg -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /picture/activity/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/1.jpg -------------------------------------------------------------------------------- /picture/activity/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/2.jpg -------------------------------------------------------------------------------- /picture/activity/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/3.jpg -------------------------------------------------------------------------------- /picture/activity/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/4.jpg -------------------------------------------------------------------------------- /picture/activity/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/5.jpg -------------------------------------------------------------------------------- /picture/activity/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/6.jpg -------------------------------------------------------------------------------- /picture/activity/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/7.jpg -------------------------------------------------------------------------------- /picture/activity/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/8.jpg -------------------------------------------------------------------------------- /picture/activity/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/9.jpg -------------------------------------------------------------------------------- /picture/demo_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/demo_code.png -------------------------------------------------------------------------------- /picture/dialog/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/1.jpg -------------------------------------------------------------------------------- /picture/dialog/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/10.jpg -------------------------------------------------------------------------------- /picture/dialog/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/11.jpg -------------------------------------------------------------------------------- /picture/dialog/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/12.jpg -------------------------------------------------------------------------------- /picture/dialog/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/13.jpg -------------------------------------------------------------------------------- /picture/dialog/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/14.jpg -------------------------------------------------------------------------------- /picture/dialog/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/15.jpg -------------------------------------------------------------------------------- /picture/dialog/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/16.jpg -------------------------------------------------------------------------------- /picture/dialog/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/17.jpg -------------------------------------------------------------------------------- /picture/dialog/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/18.jpg -------------------------------------------------------------------------------- /picture/dialog/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/2.jpg -------------------------------------------------------------------------------- /picture/dialog/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/3.jpg -------------------------------------------------------------------------------- /picture/dialog/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/4.jpg -------------------------------------------------------------------------------- /picture/dialog/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/5.jpg -------------------------------------------------------------------------------- /picture/dialog/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/6.jpg -------------------------------------------------------------------------------- /picture/dialog/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/7.jpg -------------------------------------------------------------------------------- /picture/dialog/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/8.jpg -------------------------------------------------------------------------------- /picture/dialog/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/dialog/9.jpg -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /picture/activity/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/10.jpg -------------------------------------------------------------------------------- /picture/activity/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/11.jpg -------------------------------------------------------------------------------- /picture/activity/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/12.jpg -------------------------------------------------------------------------------- /picture/activity/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/13.jpg -------------------------------------------------------------------------------- /picture/activity/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/14.jpg -------------------------------------------------------------------------------- /picture/activity/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/15.jpg -------------------------------------------------------------------------------- /picture/activity/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/16.jpg -------------------------------------------------------------------------------- /picture/activity/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/17.jpg -------------------------------------------------------------------------------- /picture/activity/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/18.jpg -------------------------------------------------------------------------------- /picture/activity/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/19.jpg -------------------------------------------------------------------------------- /picture/activity/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/20.jpg -------------------------------------------------------------------------------- /picture/activity/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/21.jpg -------------------------------------------------------------------------------- /picture/activity/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/22.jpg -------------------------------------------------------------------------------- /picture/activity/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/23.jpg -------------------------------------------------------------------------------- /picture/activity/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/24.jpg -------------------------------------------------------------------------------- /picture/activity/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/25.jpg -------------------------------------------------------------------------------- /picture/activity/26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/26.jpg -------------------------------------------------------------------------------- /picture/activity/27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/27.jpg -------------------------------------------------------------------------------- /picture/activity/28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/28.jpg -------------------------------------------------------------------------------- /picture/activity/29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/29.jpg -------------------------------------------------------------------------------- /picture/activity/30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/30.jpg -------------------------------------------------------------------------------- /picture/activity/31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/31.jpg -------------------------------------------------------------------------------- /picture/activity/32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/32.jpg -------------------------------------------------------------------------------- /picture/activity/33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/33.jpg -------------------------------------------------------------------------------- /picture/activity/34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/34.jpg -------------------------------------------------------------------------------- /picture/activity/35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/35.jpg -------------------------------------------------------------------------------- /picture/activity/36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/activity/36.jpg -------------------------------------------------------------------------------- /picture/help/vote_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/vote_1.jpg -------------------------------------------------------------------------------- /picture/help/vote_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/vote_2.jpg -------------------------------------------------------------------------------- /library/base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /picture/help/mvvm_issue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/mvvm_issue.jpg -------------------------------------------------------------------------------- /picture/help/contributors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/contributors.jpg -------------------------------------------------------------------------------- /picture/help/mvp_issue_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/mvp_issue_1.jpg -------------------------------------------------------------------------------- /picture/help/mvp_issue_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/mvp_issue_2.jpg -------------------------------------------------------------------------------- /picture/help/swipe_issue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/help/swipe_issue.jpg -------------------------------------------------------------------------------- /picture/douyin/douyin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/douyin/douyin_logo.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /library/customWidget/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/umengSdk/proguard-umeng.pro: -------------------------------------------------------------------------------- 1 | # 友盟相关 SDK 2 | -keep class com.umeng.** {*;} 3 | 4 | # QQ 和 微信 SDK 5 | -keep class com.tencent.** {*;} -------------------------------------------------------------------------------- /picture/resource/tip_error_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/tip_error_ic.png -------------------------------------------------------------------------------- /picture/resource/tip_finish_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/tip_finish_ic.png -------------------------------------------------------------------------------- /picture/resource/status_empty_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/status_empty_ic.png -------------------------------------------------------------------------------- /picture/resource/status_error_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/status_error_ic.png -------------------------------------------------------------------------------- /picture/resource/status_order_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/status_order_ic.png -------------------------------------------------------------------------------- /picture/resource/tip_warning_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/tip_warning_ic.png -------------------------------------------------------------------------------- /picture/resource/status_network_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/resource/status_network_ic.png -------------------------------------------------------------------------------- /app/gradle.properties: -------------------------------------------------------------------------------- 1 | STORE_FILE = AppSignature.jks 2 | STORE_PASSWORD = AndroidProject 3 | KEY_ALIAS = AndroidProject 4 | KEY_PASSWORD = AndroidProject -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/launcher_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/mipmap-xhdpi/launcher_ic.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/launcher_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/mipmap-xxhdpi/launcher_ic.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/launcher_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/mipmap-xxxhdpi/launcher_ic.png -------------------------------------------------------------------------------- /library/smallestWidth/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.library) 3 | } 4 | 5 | android { 6 | namespace = "com.hjq.smallest.width" 7 | } -------------------------------------------------------------------------------- /picture/douyin/douyin_open_source_agreement.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/picture/douyin/douyin_open_source_agreement.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .cxx 4 | .kotlin 5 | .externalNativeBuild 6 | build 7 | captures 8 | 9 | ._* 10 | *.iml 11 | .DS_Store 12 | local.properties -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/guide_1_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/drawable-xxhdpi/guide_1_bg.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/guide_2_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/drawable-xxhdpi/guide_2_bg.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/guide_3_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/drawable-xxhdpi/guide_3_bg.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/logo_big_ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/drawable-xxhdpi/logo_big_ic.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/update_app_top_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/app/src/main/res/drawable-xxhdpi/update_app_top_bg.png -------------------------------------------------------------------------------- /library/core/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 400 4 | -------------------------------------------------------------------------------- /library/umengSdk/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 未安装该应用 4 | -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-qq/7.3.7/share-qq-7.3.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/localMaven/com/umeng/umsdk/share-qq/7.3.7/share-qq-7.3.7.jar -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-wx/7.3.7/share-wx-7.3.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/localMaven/com/umeng/umsdk/share-wx/7.3.7/share-wx-7.3.7.jar -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-core/7.3.7/share-core-7.3.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/localMaven/com/umeng/umsdk/share-core/7.3.7/share-core-7.3.7.jar -------------------------------------------------------------------------------- /localMaven/com/tencent/qq/open-sdk/3.5.18.0/open-sdk-3.5.18.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getActivity/AndroidProject-Kotlin/HEAD/localMaven/com/tencent/qq/open-sdk/3.5.18.0/open-sdk-3.5.18.0.jar -------------------------------------------------------------------------------- /app/src/main/res-common/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 200 6 | 7 | -------------------------------------------------------------------------------- /library/base/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.library) 3 | } 4 | 5 | android { 6 | namespace = "com.hjq.base" 7 | } 8 | 9 | dependencies { 10 | implementation(project(":library:core")) 11 | } -------------------------------------------------------------------------------- /app/src/main/res-common/anim/shake_interpolator.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /app/proguard-sdk.pro: -------------------------------------------------------------------------------- 1 | # EasyHttp 2 | # 不混淆实现 OnHttpListener 接口的类,必须要加上此规则,否则会导致泛型解析失败 3 | -keep class * implements com.hjq.http.listener.OnHttpListener { 4 | *; 5 | } 6 | -keep class * extends com.hjq.http.model.ResponseClass { 7 | *; 8 | } -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_top_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.library) 3 | } 4 | 5 | android { 6 | namespace = "com.hjq.core" 7 | 8 | defaultConfig { 9 | // 模块混淆配置 10 | consumerProguardFiles("proguard-core.pro") 11 | } 12 | } -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_bottom_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_bottom_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_left_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_left_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_right_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_right_out.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_top_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/image_preview_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/guide_indicator_selected.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_search_bar_gray_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/guide_indicator_unselected.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_fall_down.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_from_right.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_from_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 4 6 | 7 | 8 | 16 9 | 10 | -------------------------------------------------------------------------------- /library/customWidget/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.library) 3 | } 4 | 5 | android { 6 | namespace = "com.hjq.custom.widget" 7 | } 8 | 9 | dependencies { 10 | implementation(project(":library:core")) 11 | implementation(project(":library:smallestWidth")) 12 | } -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: set up JDK 1.8 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 1.8 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_search_bar_transparent_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res-common/anim/left_in_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/anim/left_out_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/anim/right_in_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/anim/right_out_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_progress_ball_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res-common/anim/shake_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/dialog_input_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res-common/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1px 6 | 7 | 8 | 999dp 9 | 10 | 11 | 15dp 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_found_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_main_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_mime_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | zipStoreBase=GRADLE_USER_HOME 2 | zipStorePath=wrapper/dists 3 | distributionBase=GRADLE_USER_HOME 4 | distributionPath=wrapper/dists 5 | #distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-all.zip 6 | # ??????????????????????????? Gradle ?????????????????????? 7 | distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-9.2.1-all.zip -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_message_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/copy_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/pay_password_empty_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/umengSdk/src/main/java/com/hjq/umeng/sdk/WXEntryActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.umeng.sdk 2 | 3 | import com.umeng.socialize.weixin.view.WXCallbackActivity 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/05/06 9 | * desc : 微信登录回调(请注意这个 Activity 放置的包名要和当前项目的包名保持一致,否则将不能正常回调) 10 | */ 11 | class WXEntryActivity : WXCallbackActivity() -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-core/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.umeng.umsdk 4 | share-core 5 | 6 | 7.3.7 7 | 7.3.7 8 | 9 | 7.3.7 10 | 11 | 20251212121800 12 | 13 | -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-qq/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.umeng.umsdk 4 | share-qq 5 | 6 | 7.3.7 7 | 7.3.7 8 | 9 | 7.3.7 10 | 11 | 20251212121800 12 | 13 | -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-wx/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.umeng.umsdk 4 | share-wx 5 | 6 | 7.3.7 7 | 7.3.7 8 | 9 | 7.3.7 10 | 11 | 20251212121800 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/LogoutApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 退出登录 10 | */ 11 | class LogoutApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/logout" 15 | } 16 | } -------------------------------------------------------------------------------- /localMaven/com/tencent/qq/open-sdk/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.tencent.qq 4 | open-sdk 5 | 6 | 3.5.18.0 7 | 3.5.18.0 8 | 9 | 3.5.18.0 10 | 11 | 20251117000000 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_volume_low_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/copy_popup.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/action/ContextAction.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.action 2 | 3 | import android.content.Context 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2020/03/08 9 | * desc : Activity 相关意图 10 | */ 11 | interface ContextAction { 12 | 13 | /** 14 | * 获取 Context 对象 15 | */ 16 | fun getContext(): Context 17 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/copy_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/image_preview_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/proguard-app.pro: -------------------------------------------------------------------------------- 1 | # 忽略警告 2 | #-ignorewarning 3 | 4 | # 混淆保护自己项目的部分代码以及引用的第三方jar包 5 | #-libraryjars libs/xxxxxxxxx.jar 6 | 7 | # 不混淆这个包下的类 8 | -keep class com.hjq.demo.http.api.** { 9 | ; 10 | } 11 | -keep class com.hjq.demo.http.response.** { 12 | ; 13 | } 14 | -keep class com.hjq.demo.http.model.** { 15 | ; 16 | } 17 | 18 | # 不混淆被 Log 注解的方法信息 19 | -keepclassmembernames class ** { 20 | @com.hjq.demo.aop.Log ; 21 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_schedule_forward_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/video_play_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/CopyApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 可进行拷贝的副本 10 | */ 11 | class CopyApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "" 15 | } 16 | 17 | class Bean { 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_schedule_rewind_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/UserInfoApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 获取用户信息 10 | */ 11 | class UserInfoApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/info" 15 | } 16 | 17 | class Bean { 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-qq/7.3.7/share-qq-7.3.7.pom: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | com.umeng.umsdk 5 | share-qq 6 | 7.3.7 7 | jar 8 | -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-wx/7.3.7/share-wx-7.3.7.pom: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | com.umeng.umsdk 5 | share-wx 6 | 7.3.7 7 | jar 8 | -------------------------------------------------------------------------------- /localMaven/com/tencent/qq/open-sdk/3.5.18.0/open-sdk-3.5.18.0.pom: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | com.tencent.qq 5 | open-sdk 6 | 3.5.18.0 7 | jar 8 | -------------------------------------------------------------------------------- /localMaven/com/umeng/umsdk/share-core/7.3.7/share-core-7.3.7.pom: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | com.umeng.umsdk 5 | share-core 6 | 7.3.7 7 | jar 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/guide_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/checkbox_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_volume_medium_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/exception/TokenException.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.exception 2 | 3 | import com.hjq.http.exception.HttpException 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2021/12/19 9 | * desc : Token 失效异常 10 | */ 11 | class TokenException : HttpException { 12 | 13 | constructor(message: String) : super(message) 14 | 15 | constructor(message: String, cause: Throwable) : super(message, cause) 16 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/radiobutton_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/aop/CheckNet.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.aop 2 | 3 | import com.flyjingfish.android_aop_annotation.anno.AndroidAopPointCut 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2020/01/11 9 | * desc : 网络检测注解 10 | */ 11 | @Retention(AnnotationRetention.RUNTIME) 12 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) 13 | @AndroidAopPointCut(CheckNetCut::class) 14 | annotation class CheckNet -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ktx/ToastKtx.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ktx 2 | 3 | import androidx.annotation.StringRes 4 | import com.hjq.toast.Toaster 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2022/03/10 10 | * desc : Toast 调用扩展 11 | */ 12 | fun toast(text: CharSequence?) { 13 | Toaster.show(text) 14 | } 15 | 16 | fun toast(@StringRes id: Int) { 17 | Toaster.show(id) 18 | } 19 | 20 | fun toast(`object`: Any?) { 21 | Toaster.show(`object`) 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/aop/Log.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.aop 2 | 3 | import com.flyjingfish.android_aop_annotation.anno.AndroidAopPointCut 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/06 9 | * desc : Debug 日志注解 10 | */ 11 | @Retention(AnnotationRetention.RUNTIME) 12 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) 13 | @AndroidAopPointCut(LogCut::class) 14 | annotation class Log(val value: String = "AOPLog") -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/succeed_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_ios_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_ios_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_from_right_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/countdown_color_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_from_bottom_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/popup/CopyPopup.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.popup 2 | 3 | import android.content.Context 4 | import com.hjq.base.BasePopupWindow 5 | import com.hjq.demo.R 6 | 7 | 8 | /** 9 | * author : Android 轮子哥 10 | * github : https://github.com/getActivity/AndroidProject-Kotlin 11 | * time : 2019/10/18 12 | * desc : 可进行拷贝的副本 13 | */ 14 | class CopyPopup { 15 | 16 | class Builder(context: Context) : BasePopupWindow.Builder(context) { 17 | 18 | init { 19 | setContentView(R.layout.copy_popup) 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_brightness_low_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/activity/CopyActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.activity 2 | 3 | import com.hjq.demo.R 4 | import com.hjq.demo.app.AppActivity 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2018/10/18 10 | * desc : 可进行拷贝的副本 11 | */ 12 | class CopyActivity : AppActivity() { 13 | 14 | override fun getLayoutId(): Int { 15 | return R.layout.copy_activity 16 | } 17 | 18 | override fun initView() { 19 | 20 | } 21 | 22 | override fun initData() { 23 | 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/white_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/compound_normal_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/radiobutton_checked_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/GetCodeApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 获取验证码 10 | */ 11 | class GetCodeApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "code/get" 15 | } 16 | 17 | /** 手机号 */ 18 | private var phone: String? = null 19 | 20 | fun setPhone(phone: String?): GetCodeApi = apply { 21 | this.phone = phone 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/transparent_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/other/LinkClickableSpan.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.other 2 | 3 | import android.text.style.ClickableSpan 4 | import android.view.View 5 | import com.hjq.demo.ui.activity.common.BrowserActivity 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2023/06/24 11 | * desc : 点击跳转链接的 ClickableSpan 12 | */ 13 | class LinkClickableSpan(private val targetUrl: String) : ClickableSpan() { 14 | 15 | override fun onClick(widget: View) { 16 | BrowserActivity.start(widget.context, targetUrl) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/picker_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_volume_high_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/copy_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/radiobutton_disable_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/aop/SingleClick.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.aop 2 | 3 | import com.flyjingfish.android_aop_annotation.anno.AndroidAopPointCut 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/06 9 | * desc : 防重复点击注解 10 | */ 11 | @Retention(AnnotationRetention.RUNTIME) 12 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) 13 | @AndroidAopPointCut(SingleClickCut::class) 14 | annotation class SingleClick( 15 | /** 16 | * 快速点击的间隔 17 | */ 18 | val value: Long = 1000 19 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/UpdateImageApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | import java.io.File 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2019/12/07 10 | * desc : 上传图片 11 | */ 12 | class UpdateImageApi : IRequestApi { 13 | 14 | override fun getApi(): String { 15 | return "update/image" 16 | } 17 | 18 | /** 图片文件 */ 19 | private var image: File? = null 20 | 21 | fun setImage(image: File?): UpdateImageApi = apply { 22 | this.image = image 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/res-common/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_scale_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/other/ToastInterceptor.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.other 2 | 3 | import com.hjq.toast.ToastLogInterceptor 4 | import timber.log.Timber 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2020/11/04 10 | * desc : 自定义 Toast 拦截器(用于追踪 Toast 调用的位置) 11 | */ 12 | class ToastInterceptor : ToastLogInterceptor() { 13 | 14 | override fun isLogEnable(): Boolean { 15 | return AppConfig.isLogEnable() 16 | } 17 | 18 | override fun printLog(msg: String?) { 19 | Timber.tag("Toaster") 20 | Timber.i(msg) 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_brightness_medium_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/copy_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_brightness_high_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res-common/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/status_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/action/ImmersionAction.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.action 2 | 3 | import android.view.View 4 | import com.hjq.bar.OnTitleBarListener 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2025/12/13 10 | * desc : 沉浸式意图 11 | */ 12 | interface ImmersionAction : OnTitleBarListener { 13 | 14 | /** 15 | * 获取需要沉浸的顶部 View 对象 16 | */ 17 | fun getImmersionTopView(): View? { 18 | return null 19 | } 20 | 21 | /** 22 | * 获取需要沉浸的底部 View 对象 23 | */ 24 | fun getImmersionBottomView(): View? { 25 | return null 26 | } 27 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/button_rect_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/checkbox_checked_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/videocam_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/exception/ResultException.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.exception 2 | 3 | import com.hjq.demo.http.model.HttpData 4 | import com.hjq.http.exception.HttpException 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2021/12/19 10 | * desc : 返回结果异常 11 | */ 12 | class ResultException : HttpException { 13 | 14 | val httpData: HttpData<*> 15 | 16 | constructor(message: String, data: HttpData<*>) : super(message) { 17 | httpData = data 18 | } 19 | 20 | constructor(message: String, cause: Throwable, data: HttpData<*>) : super(message, cause) { 21 | httpData = data 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_lock_open_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/checkbox_disable_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/pay_password_normal_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_lock_close_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/dialog/CopyDialog.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.dialog 2 | 3 | import android.content.Context 4 | import android.view.Gravity 5 | import com.hjq.base.BaseDialog 6 | import com.hjq.core.action.AnimAction 7 | import com.hjq.demo.R 8 | 9 | /** 10 | * author : Android 轮子哥 11 | * github : https://github.com/getActivity/AndroidProject-Kotlin 12 | * time : 2018/10/18 13 | * desc : 可进行拷贝的副本 14 | */ 15 | class CopyDialog { 16 | 17 | class Builder(context: Context) : BaseDialog.Builder(context) { 18 | 19 | init { 20 | setContentView(R.layout.copy_dialog) 21 | setAnimStyle(AnimAction.ANIM_BOTTOM) 22 | setGravity(Gravity.BOTTOM) 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/model/RequestServer.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.model 2 | 3 | import com.hjq.demo.other.AppConfig 4 | import com.hjq.http.config.IHttpPostBodyStrategy 5 | import com.hjq.http.config.IRequestServer 6 | import com.hjq.http.model.RequestBodyType 7 | 8 | /** 9 | * author : Android 轮子哥 10 | * github : https://github.com/getActivity/AndroidProject-Kotlin 11 | * time : 2020/10/02 12 | * desc : 服务器配置 13 | */ 14 | class RequestServer : IRequestServer { 15 | 16 | override fun getHost(): String { 17 | return AppConfig.getHostUrl() + "api/" 18 | } 19 | 20 | override fun getBodyType(): IHttpPostBodyStrategy { 21 | // 以表单的形式提交参数 22 | return RequestBodyType.FORM 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/activity/AboutActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.activity 2 | 3 | import android.view.View 4 | import com.hjq.demo.R 5 | import com.hjq.demo.app.AppActivity 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2018/10/18 11 | * desc : 关于界面 12 | */ 13 | class AboutActivity : AppActivity() { 14 | 15 | override fun getLayoutId(): Int { 16 | return R.layout.about_activity 17 | } 18 | 19 | override fun initView() { 20 | 21 | } 22 | 23 | override fun initData() { 24 | 25 | } 26 | 27 | override fun getImmersionBottomView(): View? { 28 | return findViewById(R.id.tv_about_copyright) 29 | } 30 | } -------------------------------------------------------------------------------- /picture/resource/home_mime_off_ic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/update_progress_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /library/customWidget/src/main/res/drawable/input_delete_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_ali.png 13 | -------------------------------------------------------------------------------- /app/src/main/res-common/values/strings_http.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 请求出错,未知错误 5 | 登录失效,请重新登录 6 | 数据解析异常,请稍后 7 | 服务器请求超时,请稍后再试 8 | 请求失败,请检查网络设置 9 | 服务器响应异常,请稍后再试,响应码:%d,响应信息:%s 10 | 服务器连接异常,请稍后再试 11 | 请求被中断,请重试 12 | 服务器数据返回异常,请稍后再试 13 | 文件 md5 校验失败 14 | 15 | -------------------------------------------------------------------------------- /library/customWidget/src/main/java/com/hjq/custom/widget/view/PressAlphaTextView.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.custom.widget.view 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import androidx.appcompat.widget.AppCompatTextView 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2021/09/12 11 | * desc : 长按半透明松手恢复的 TextView 12 | */ 13 | class PressAlphaTextView @JvmOverloads constructor( 14 | context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : 15 | AppCompatTextView(context, attrs, defStyleAttr) { 16 | 17 | override fun dispatchSetPressed(pressed: Boolean) { 18 | // 判断当前手指是否按下了 19 | alpha = if (pressed) 0.5f else 1f 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/VerifyCodeApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 验证码校验 10 | */ 11 | class VerifyCodeApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "code/checkout" 15 | } 16 | 17 | /** 手机号 */ 18 | private var phone: String? = null 19 | 20 | /** 验证码 */ 21 | private var code: String? = null 22 | 23 | fun setPhone(phone: String?): VerifyCodeApi = apply { 24 | this.phone = phone 25 | } 26 | 27 | fun setCode(code: String?): VerifyCodeApi = apply { 28 | this.code = code 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_volume_mute_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/fragment/CopyFragment.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.fragment 2 | 3 | import com.hjq.demo.R 4 | import com.hjq.demo.app.AppFragment 5 | import com.hjq.demo.ui.activity.CopyActivity 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2018/10/18 11 | * desc : 可进行拷贝的副本 12 | */ 13 | class CopyFragment : AppFragment() { 14 | 15 | companion object { 16 | 17 | fun newInstance(): CopyFragment { 18 | return CopyFragment() 19 | } 20 | } 21 | 22 | override fun getLayoutId(): Int { 23 | return R.layout.copy_fragment 24 | } 25 | 26 | override fun initView() { 27 | 28 | } 29 | 30 | override fun initData() { 31 | 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/main/res-common/layout/message_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/arrows_bottom_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/arrows_left_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/arrows_right_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/arrows_top_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/select_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/input_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/album_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/other/DebugLoggerTree.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.other 2 | 3 | import com.hjq.core.ktx.isAndroid8 4 | import timber.log.Timber.DebugTree 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2020/08/12 10 | * desc : 自定义日志打印规则 11 | */ 12 | class DebugLoggerTree : DebugTree() { 13 | 14 | companion object { 15 | private const val MAX_TAG_LENGTH: Int = 23 16 | } 17 | 18 | /** 19 | * 创建日志堆栈 TAG 20 | */ 21 | override fun createStackElementTag(element: StackTraceElement): String { 22 | val tag = "(" + element.fileName + ":" + element.lineNumber + ")" 23 | // 日志 TAG 长度限制已经在 Android 8.0 被移除 24 | return if (tag.length <= MAX_TAG_LENGTH || isAndroid8()) { tag } else tag.take(MAX_TAG_LENGTH) 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/adapter/CopyAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.adapter 2 | 3 | import android.content.Context 4 | import android.view.ViewGroup 5 | import com.hjq.demo.R 6 | import com.hjq.demo.app.AppAdapter 7 | 8 | /** 9 | * author : Android 轮子哥 10 | * github : https://github.com/getActivity/AndroidProject-Kotlin 11 | * time : 2018/11/05 12 | * desc : 可进行拷贝的副本 13 | */ 14 | class CopyAdapter(context: Context) : AppAdapter(context) { 15 | 16 | override fun getItemCount(): Int { 17 | return 10 18 | } 19 | 20 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppViewHolder { 21 | return ViewHolder() 22 | } 23 | 24 | inner class ViewHolder : AppViewHolder(R.layout.copy_item) { 25 | 26 | override fun onBindView(position: Int) { 27 | 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/pay_password_delete_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/layout_fall_down_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 14 | 15 | 23 | 24 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/ktx/ContextKtx.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.ktx 2 | 3 | import android.app.Activity 4 | import android.content.Context 5 | import android.content.ContextWrapper 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2022/07/02 11 | * desc : Context 扩展 12 | */ 13 | 14 | /* 获取 Activity 对象 */ 15 | fun Context.getActivity() : Activity? { 16 | var context: Context? = this 17 | do { 18 | when (context) { 19 | is Activity -> { 20 | return context 21 | } 22 | is ContextWrapper -> { 23 | context = context.baseContext 24 | } 25 | else -> { 26 | return null 27 | } 28 | } 29 | } while (context != null) 30 | return null 31 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/progress_gradient_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/share_link_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/add_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/camera_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/close_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/tools/DoubleClickTools.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.tools 2 | 3 | import android.os.SystemClock 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2018/10/18 9 | * desc : 双击判断工具类 10 | */ 11 | object DoubleClickTools { 12 | 13 | /** 数组的长度为2代表只记录双击操作 */ 14 | private val TIME_ARRAY: LongArray = LongArray(2) 15 | 16 | /** 17 | * 是否在短时间内进行了双击操作 18 | */ 19 | fun isOnDoubleClick(): Boolean { 20 | // 默认间隔时长 21 | return isOnDoubleClick(1500) 22 | } 23 | 24 | /** 25 | * 是否在短时间内进行了双击操作 26 | */ 27 | fun isOnDoubleClick(time: Int): Boolean { 28 | System.arraycopy(TIME_ARRAY, 1, TIME_ARRAY, 0, TIME_ARRAY.size - 1) 29 | TIME_ARRAY[TIME_ARRAY.size - 1] = SystemClock.uptimeMillis() 30 | return TIME_ARRAY[0] >= (SystemClock.uptimeMillis() - time) 31 | } 32 | } -------------------------------------------------------------------------------- /picture/resource/home_main_off_ic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/adapter/GuideAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.adapter 2 | 3 | import android.content.Context 4 | import android.view.ViewGroup 5 | import android.widget.ImageView 6 | import com.hjq.demo.R 7 | import com.hjq.demo.app.AppAdapter 8 | 9 | /** 10 | * author : Android 轮子哥 11 | * github : https://github.com/getActivity/AndroidProject-Kotlin 12 | * time : 2020/08/28 13 | * desc : 引导页适配器 14 | */ 15 | class GuideAdapter(context: Context) : AppAdapter(context) { 16 | 17 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppViewHolder { 18 | return ViewHolder() 19 | } 20 | 21 | inner class ViewHolder : AppViewHolder(R.layout.guide_item) { 22 | 23 | private val imageView: ImageView by lazy { getItemView() as ImageView } 24 | 25 | override fun onBindView(position: Int) { 26 | imageView.setImageResource(getItem(position)) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/LoginApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 用户登录 10 | */ 11 | class LoginApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/login" 15 | } 16 | 17 | /** 手机号 */ 18 | private var phone: String? = null 19 | 20 | /** 登录密码 */ 21 | private var password: String? = null 22 | 23 | fun setPhone(phone: String?): LoginApi = apply { 24 | this.phone = phone 25 | } 26 | 27 | fun setPassword(password: String?): LoginApi = apply { 28 | this.password = password 29 | } 30 | 31 | class Bean { 32 | 33 | private val token: String? = null 34 | 35 | fun getToken(): String? { 36 | return token 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/PhoneApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 修改手机 10 | */ 11 | class PhoneApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/phone" 15 | } 16 | 17 | /** 旧手机号验证码(没有绑定情况下可不传) */ 18 | private var preCode: String? = null 19 | 20 | /** 新手机号 */ 21 | private var phone: String? = null 22 | 23 | /** 新手机号验证码 */ 24 | private var code: String? = null 25 | 26 | fun setPreCode(preCode: String?): PhoneApi = apply { 27 | this.preCode = preCode 28 | } 29 | 30 | fun setPhone(phone: String?): PhoneApi = apply { 31 | this.phone = phone 32 | } 33 | 34 | fun setCode(code: String?): PhoneApi = apply { 35 | this.code = code 36 | } 37 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/PasswordApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 修改密码 10 | */ 11 | class PasswordApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/password" 15 | } 16 | 17 | /** 手机号(已登录可不传) */ 18 | private var phone: String? = null 19 | 20 | /** 验证码 */ 21 | private var code: String? = null 22 | 23 | /** 密码 */ 24 | private var password: String? = null 25 | 26 | fun setPhone(phone: String?): PasswordApi = apply { 27 | this.phone = phone 28 | } 29 | 30 | fun setCode(code: String?): PasswordApi = apply { 31 | this.code = code 32 | } 33 | 34 | fun setPassword(password: String?): PasswordApi = apply { 35 | this.password = password 36 | } 37 | } -------------------------------------------------------------------------------- /library/umengSdk/src/main/java/com/hjq/umeng/sdk/Platform.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.umeng.sdk 2 | 3 | import com.umeng.socialize.bean.SHARE_MEDIA 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/04/03 9 | * desc : 友盟平台 10 | */ 11 | enum class Platform( 12 | /** 第三方平台 */ 13 | private val thirdParty: SHARE_MEDIA, 14 | /** 第三方包名 */ 15 | private val packageName: String 16 | ) { 17 | /** 微信 */ 18 | WECHAT(SHARE_MEDIA.WEIXIN, "com.tencent.mm"), 19 | 20 | /** 微信朋友圈 */ 21 | CIRCLE(SHARE_MEDIA.WEIXIN_CIRCLE, "com.tencent.mm"), 22 | 23 | /** QQ */ 24 | QQ(SHARE_MEDIA.QQ, "com.tencent.mobileqq"), 25 | 26 | /** QQ 空间 */ 27 | QZONE(SHARE_MEDIA.QZONE, "com.tencent.mobileqq"); 28 | 29 | fun getThirdParty(): SHARE_MEDIA { 30 | return thirdParty 31 | } 32 | 33 | fun getPackageName(): String { 34 | return packageName 35 | } 36 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel = true 14 | 15 | # Default memory allocation for Gradle JVM 16 | org.gradle.jvmargs = -Xmx3072m 17 | 18 | # Enable AndroidX 19 | android.useAndroidX = true 20 | # Enable Jetifier to migrate third-party libraries to AndroidX 21 | android.enableJetifier = true 22 | 23 | # Use transitive R class for backward compatibility with old code 24 | android.nonTransitiveRClass=false -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/adapter/StatusAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.adapter 2 | 3 | import android.content.Context 4 | import android.view.ViewGroup 5 | import android.widget.TextView 6 | import com.hjq.base.ktx.lazyFindViewById 7 | import com.hjq.demo.R 8 | import com.hjq.demo.app.AppAdapter 9 | 10 | /** 11 | * author : Android 轮子哥 12 | * github : https://github.com/getActivity/AndroidProject-Kotlin 13 | * time : 2019/09/22 14 | * desc : 状态数据列表 15 | */ 16 | class StatusAdapter(context: Context) : AppAdapter(context) { 17 | 18 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppViewHolder { 19 | return ViewHolder() 20 | } 21 | 22 | inner class ViewHolder : AppViewHolder(R.layout.status_item) { 23 | 24 | private val textView: TextView? by lazyFindViewById(R.id.tv_status_text) 25 | 26 | override fun onBindView(position: Int) { 27 | textView?.text = getItem(position) 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/reboot_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/api/RegisterApi.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.api 2 | 3 | import com.hjq.http.config.IRequestApi 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/12/07 9 | * desc : 用户注册 10 | */ 11 | class RegisterApi : IRequestApi { 12 | 13 | override fun getApi(): String { 14 | return "user/register" 15 | } 16 | 17 | /** 手机号 */ 18 | private var phone: String? = null 19 | 20 | /** 验证码 */ 21 | private var code: String? = null 22 | 23 | /** 密码 */ 24 | private var password: String? = null 25 | 26 | fun setPhone(phone: String?): RegisterApi = apply { 27 | this.phone = phone 28 | } 29 | 30 | fun setCode(code: String?): RegisterApi = apply { 31 | this.code = code 32 | } 33 | 34 | fun setPassword(password: String?): RegisterApi = apply { 35 | this.password = password 36 | } 37 | 38 | class Bean { 39 | 40 | } 41 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/video_progress_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res-common/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @color/white 5 | @color/black 6 | #5A8DDF 7 | #F4F4F4 8 | #333333 9 | @color/panda 10 | 11 | 12 | #AA5A8DDF 13 | 14 | #BBBBBB 15 | 16 | #ECECEC 17 | 18 | #7C7C7C 19 | 20 | 21 | #007AFF 22 | 23 | #F44336 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/status_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/share_qzone_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/adapter/common/ImagePreviewAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.adapter.common 2 | 3 | import android.content.Context 4 | import android.view.ViewGroup 5 | import com.github.chrisbanes.photoview.PhotoView 6 | import com.hjq.demo.R 7 | import com.hjq.demo.app.AppAdapter 8 | import com.hjq.demo.http.glide.GlideApp 9 | 10 | /** 11 | * author : Android 轮子哥 12 | * github : https://github.com/getActivity/AndroidProject-Kotlin 13 | * time : 2020/08/28 14 | * desc : 图片预览适配器 15 | */ 16 | class ImagePreviewAdapter(context: Context) : AppAdapter(context) { 17 | 18 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppViewHolder { 19 | return ViewHolder() 20 | } 21 | 22 | inner class ViewHolder : AppViewHolder(R.layout.image_preview_item) { 23 | 24 | private val photoView: PhotoView by lazy { getItemView() as PhotoView } 25 | 26 | override fun onBindView(position: Int) { 27 | GlideApp.with(getContext()) 28 | .load(getItem(position)) 29 | .into(photoView) 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /library/customWidget/src/main/res/drawable/rating_star_fill_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /library/customWidget/src/main/res/drawable/rating_star_off_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_mime_off_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /picture/resource/rating_bar_fill.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/action/AnimAction.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.action 2 | 3 | import com.hjq.core.R 4 | 5 | /** 6 | * author : Android 轮子哥 7 | * github : https://github.com/getActivity/AndroidProject-Kotlin 8 | * time : 2019/09/21 9 | * desc : 动画样式 10 | */ 11 | interface AnimAction { 12 | 13 | companion object { 14 | 15 | /** 默认动画效果 */ 16 | const val ANIM_DEFAULT: Int = -1 17 | 18 | /** 没有动画效果 */ 19 | const val ANIM_EMPTY: Int = 0 20 | 21 | /** 缩放动画 */ 22 | val ANIM_SCALE: Int = R.style.ScaleAnimStyle 23 | 24 | /** IOS 动画 */ 25 | val ANIM_IOS: Int = R.style.IOSAnimStyle 26 | 27 | /** 吐司动画 */ 28 | const val ANIM_TOAST: Int = android.R.style.Animation_Toast 29 | 30 | /** 顶部弹出动画 */ 31 | val ANIM_TOP: Int = R.style.TopAnimStyle 32 | 33 | /** 底部弹出动画 */ 34 | val ANIM_BOTTOM: Int = R.style.BottomAnimStyle 35 | 36 | /** 左边弹出动画 */ 37 | val ANIM_LEFT: Int = R.style.LeftAnimStyle 38 | 39 | /** 右边弹出动画 */ 40 | val ANIM_RIGHT: Int = R.style.RightAnimStyle 41 | } 42 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/status_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 19 | 20 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /picture/resource/example_bg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/login_qq_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/share_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 19 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/action/ClickAction.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.action 2 | 3 | import android.view.View 4 | import androidx.annotation.IdRes 5 | 6 | /** 7 | * author : Android 轮子哥 8 | * github : https://github.com/getActivity/AndroidProject-Kotlin 9 | * time : 2019/09/15 10 | * desc : 点击事件意图 11 | */ 12 | interface ClickAction : View.OnClickListener { 13 | 14 | fun findViewById(@IdRes id: Int): V? 15 | 16 | fun setOnClickListener(@IdRes vararg ids: Int) { 17 | setOnClickListener(this, *ids) 18 | } 19 | 20 | fun setOnClickListener(listener: View.OnClickListener?, @IdRes vararg ids: Int) { 21 | for (id: Int in ids) { 22 | findViewById(id)?.setOnClickListener(listener) 23 | } 24 | } 25 | 26 | fun setOnClickListener(vararg views: View?) { 27 | setOnClickListener(this, *views) 28 | } 29 | 30 | fun setOnClickListener(listener: View.OnClickListener?, vararg views: View?) { 31 | for (view: View? in views) { 32 | view?.setOnClickListener(listener) 33 | } 34 | } 35 | 36 | override fun onClick(view: View) { 37 | // 默认不实现,让子类实现 38 | } 39 | } -------------------------------------------------------------------------------- /app/src/main/res-common/layout/browser_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 19 | 20 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/home_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/app/AppApplication.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.app 2 | 3 | import android.app.Application 4 | import com.hjq.core.manager.ActivityManager 5 | import com.hjq.demo.aop.Log 6 | import com.hjq.demo.http.glide.GlideApp 7 | import com.hjq.demo.manager.InitManager 8 | 9 | /** 10 | * author : Android 轮子哥 11 | * github : https://github.com/getActivity/AndroidProject-Kotlin 12 | * time : 2018/10/18 13 | * desc : 应用入口 14 | */ 15 | class AppApplication : Application() { 16 | 17 | @Log("启动耗时") 18 | override fun onCreate() { 19 | super.onCreate() 20 | 21 | // 如果当前的进程不是主进程的话,则不进行第三方框架的初始化 22 | if (!ActivityManager.isMainProcess(this)) { 23 | return 24 | } 25 | 26 | InitManager.preInitSdk(this) 27 | if (InitManager.isAgreePrivacy(this)) { 28 | InitManager.initSdk(this) 29 | } 30 | } 31 | 32 | override fun onLowMemory() { 33 | super.onLowMemory() 34 | // 清理所有图片内存缓存 35 | GlideApp.get(this).onLowMemory() 36 | } 37 | 38 | override fun onTrimMemory(level: Int) { 39 | super.onTrimMemory(level) 40 | // 根据手机内存剩余情况清理图片内存缓存 41 | GlideApp.get(this).onTrimMemory(level) 42 | } 43 | } -------------------------------------------------------------------------------- /app/src/main/res-common/layout/menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 21 | 22 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/share_qq_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /library/core/src/main/res/anim/window_scale_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 22 | 23 | 32 | 33 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/other/ToastStyle.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.other 2 | 3 | import android.content.Context 4 | import android.graphics.drawable.Drawable 5 | import android.graphics.drawable.GradientDrawable 6 | import com.hjq.demo.R 7 | import com.hjq.smallest.width.sp2px 8 | import com.hjq.toast.style.BlackToastStyle 9 | 10 | /** 11 | * author : Android 轮子哥 12 | * github : https://github.com/getActivity/AndroidProject-Kotlin 13 | * time : 2021/02/27 14 | * desc : Toast 样式配置 15 | */ 16 | class ToastStyle : BlackToastStyle() { 17 | 18 | override fun getBackgroundDrawable(context: Context): Drawable { 19 | val drawable = GradientDrawable() 20 | // 设置颜色 21 | drawable.setColor(-0x78000000) 22 | // 设置圆角 23 | drawable.cornerRadius = context.resources.getDimension(R.dimen.button_circle_size) 24 | return drawable 25 | } 26 | 27 | override fun getTextSize(context: Context): Float { 28 | return context.sp2px(14) 29 | } 30 | 31 | override fun getHorizontalPadding(context: Context): Int { 32 | return context.sp2px(24).toInt() 33 | } 34 | 35 | override fun getVerticalPadding(context: Context): Int { 36 | return context.sp2px(16).toInt() 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_main_off_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 25 | -------------------------------------------------------------------------------- /picture/resource/home_mime_on_ic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/layout/home_navigation_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 17 | 18 | 27 | 28 | -------------------------------------------------------------------------------- /library/core/src/main/java/com/hjq/core/ktx/KeyboardActionKtx.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.core.ktx 2 | 3 | import android.content.Context 4 | import android.view.View 5 | import android.view.inputmethod.InputMethodManager 6 | 7 | /** 8 | * author : Android 轮子哥 9 | * github : https://github.com/getActivity/AndroidProject-Kotlin 10 | * time : 2022/03/10 11 | * desc : 软键盘意图扩展 12 | */ 13 | 14 | fun View.showKeyboard() { 15 | showKeyboard(this) 16 | } 17 | 18 | /** 19 | * 显示软键盘,需要先 requestFocus 获取焦点,如果是在 Activity Create,那么需要延迟一段时间 20 | */ 21 | fun Any.showKeyboard(view: View?) { 22 | if (view == null) { 23 | return 24 | } 25 | val manager: InputMethodManager = view.context 26 | .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? ?: return 27 | manager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) 28 | } 29 | 30 | fun View.hideKeyboard() { 31 | hideKeyboard(this) 32 | } 33 | 34 | /** 35 | * 隐藏软键盘 36 | */ 37 | fun Any.hideKeyboard(view: View?) { 38 | if (view == null) { 39 | return 40 | } 41 | val manager: InputMethodManager = view.context 42 | .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? ?: return 43 | manager.hideSoftInputFromWindow(view.windowToken, 0) 44 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/phone_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 24 | -------------------------------------------------------------------------------- /library/customWidget/src/main/java/com/hjq/custom/widget/layout/NoScrollViewPager.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.custom.widget.layout 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.KeyEvent 6 | import android.view.MotionEvent 7 | import androidx.viewpager.widget.ViewPager 8 | import kotlin.math.abs 9 | 10 | /** 11 | * author : Android 轮子哥 12 | * github : https://github.com/getActivity/AndroidProject-Kotlin 13 | * time : 2018/10/18 14 | * desc : 禁用水平滑动的ViewPager(一般用于 APP 首页的 ViewPager + Fragment) 15 | */ 16 | class NoScrollViewPager @JvmOverloads constructor( 17 | context: Context, attrs: AttributeSet? = null) : 18 | ViewPager(context, attrs) { 19 | 20 | override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { 21 | // 不拦截这个事件 22 | return false 23 | } 24 | 25 | @Suppress("ClickableViewAccessibility") 26 | override fun onTouchEvent(ev: MotionEvent): Boolean { 27 | // 不处理这个事件 28 | return false 29 | } 30 | 31 | override fun executeKeyEvent(event: KeyEvent): Boolean { 32 | // 不响应按键事件 33 | return false 34 | } 35 | 36 | override fun setCurrentItem(item: Int) { 37 | // 只有相邻页才会有动画 38 | super.setCurrentItem(item, abs(currentItem - item) == 1) 39 | } 40 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/http/model/HttpData.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.http.model 2 | 3 | /** 4 | * author : Android 轮子哥 5 | * github : https://github.com/getActivity/AndroidProject-Kotlin 6 | * time : 2019/12/07 7 | * desc : 统一接口数据结构 8 | */ 9 | open class HttpData { 10 | 11 | /** 响应头 */ 12 | private var responseHeaders: MutableMap? = null 13 | 14 | /** 返回码 */ 15 | private val code: Int = 0 16 | 17 | /** 提示语 */ 18 | private val msg: String? = null 19 | 20 | /** 数据 */ 21 | private val data: T? = null 22 | 23 | fun setResponseHeaders(headers: MutableMap?) { 24 | this.responseHeaders = headers 25 | } 26 | 27 | fun getResponseHeaders(): MutableMap? { 28 | return responseHeaders 29 | } 30 | 31 | fun getCode(): Int { 32 | return code 33 | } 34 | 35 | fun getMessage(): String { 36 | return msg ?: "" 37 | } 38 | 39 | fun getData(): T? { 40 | return data 41 | } 42 | 43 | /** 44 | * 是否请求成功 45 | */ 46 | fun isRequestSuccess(): Boolean { 47 | return code == 200 48 | } 49 | 50 | /** 51 | * 是否 Token 失效 52 | */ 53 | fun isTokenInvalidation(): Boolean { 54 | return code == 1001 55 | } 56 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/aop/CheckNetCut.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.aop 2 | 3 | import android.app.Application 4 | import android.net.ConnectivityManager 5 | import androidx.core.content.ContextCompat 6 | import com.flyjingfish.android_aop_annotation.ProceedJoinPoint 7 | import com.flyjingfish.android_aop_annotation.base.BasePointCut 8 | import com.hjq.core.manager.ActivityManager 9 | import com.hjq.demo.R 10 | import com.hjq.toast.Toaster 11 | 12 | /** 13 | * author : Android 轮子哥 14 | * github : https://github.com/getActivity/AndroidProject-Kotlin 15 | * time : 2020/01/11 16 | * desc : 网络检测切面 17 | */ 18 | class CheckNetCut : BasePointCut { 19 | 20 | @Suppress("deprecation") 21 | @Throws(Throwable::class) 22 | override fun invoke(joinPoint: ProceedJoinPoint, anno: CheckNet): Any? { 23 | val application: Application = ActivityManager.getApplication() 24 | val manager = ContextCompat.getSystemService(application, ConnectivityManager::class.java) 25 | if (manager != null) { 26 | val info = manager.activeNetworkInfo 27 | if (info == null || !info.isConnected) { 28 | Toaster.show(R.string.common_network_hint) 29 | return null 30 | } 31 | } 32 | return joinPoint.proceed() 33 | } 34 | } -------------------------------------------------------------------------------- /picture/resource/home_found_off_ic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /library/customWidget/src/main/res/drawable/password_on_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/dialog/common/WaitDialog.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.dialog.common 2 | 3 | import android.content.Context 4 | import android.view.View 5 | import android.widget.TextView 6 | import androidx.annotation.StringRes 7 | import com.hjq.base.BaseDialog 8 | import com.hjq.base.ktx.lazyFindViewById 9 | import com.hjq.core.action.AnimAction 10 | import com.hjq.demo.R 11 | 12 | /** 13 | * author : Android 轮子哥 14 | * github : https://github.com/getActivity/AndroidProject-Kotlin 15 | * time : 2018/12/2 16 | * desc : 等待加载对话框 17 | */ 18 | class WaitDialog { 19 | 20 | class Builder(context: Context) : BaseDialog.Builder(context) { 21 | 22 | private val messageView: TextView? by lazyFindViewById(R.id.tv_wait_message) 23 | 24 | init { 25 | setContentView(R.layout.wait_dialog) 26 | setAnimStyle(AnimAction.ANIM_TOAST) 27 | setBackgroundDimEnabled(false) 28 | setCancelable(false) 29 | } 30 | 31 | fun setMessage(@StringRes id: Int): Builder = apply { 32 | setMessage(getString(id)) 33 | } 34 | 35 | fun setMessage(text: CharSequence?): Builder = apply { 36 | messageView?.text = text 37 | messageView?.visibility = if (text == null) View.GONE else View.VISIBLE 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/safe_ic.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw240dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0000sp 4 | 4.6667sp 5 | 5.3333sp 6 | 6.0000sp 7 | 6.6667sp 8 | 7.3333sp 9 | 8.0000sp 10 | 8.6667sp 11 | 9.3333sp 12 | 10.0000sp 13 | 10.6667sp 14 | 11.3333sp 15 | 12.0000sp 16 | 12.6667sp 17 | 13.3333sp 18 | 14.0000sp 19 | 14.6667sp 20 | 15.3333sp 21 | 16.0000sp 22 | 16.6667sp 23 | 18.6667sp 24 | 20.0000sp 25 | 21.3333sp 26 | 22.6667sp 27 | 24.0000sp 28 | 25.3333sp 29 | 26.6667sp 30 | 28.0000sp 31 | 32.0000sp 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjq/demo/ui/popup/PermissionDescriptionPopup.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.demo.ui.popup 2 | 3 | import android.content.Context 4 | import android.view.WindowManager 5 | import android.widget.TextView 6 | import com.hjq.base.BasePopupWindow 7 | import com.hjq.base.ktx.lazyFindViewById 8 | import com.hjq.demo.R 9 | 10 | /** 11 | * author : Android 轮子哥 12 | * github : https://github.com/getActivity/AndroidProject-Kotlin 13 | * time : 2025/06/01 14 | * desc : 权限说明弹窗 15 | */ 16 | class PermissionDescriptionPopup { 17 | 18 | class Builder(context: Context) : BasePopupWindow.Builder(context) { 19 | 20 | private val descriptionView: TextView? by lazyFindViewById(R.id.tv_permission_description_message) 21 | 22 | init { 23 | setContentView(R.layout.permission_description_popup) 24 | setWidth(WindowManager.LayoutParams.MATCH_PARENT) 25 | setHeight(WindowManager.LayoutParams.WRAP_CONTENT) 26 | setAnimStyle(android.R.style.Animation_Dialog) 27 | setBackgroundDimAmount(0.1f) 28 | setTouchable(true) 29 | setOutsideTouchable(true) 30 | } 31 | 32 | /** 33 | * 设置权限说明文案 34 | */ 35 | fun setDescription(text: CharSequence?) = apply { 36 | descriptionView?.text = text 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw320dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5.3333sp 4 | 6.2222sp 5 | 7.1111sp 6 | 8.0000sp 7 | 8.8889sp 8 | 9.7778sp 9 | 10.6667sp 10 | 11.5556sp 11 | 12.4444sp 12 | 13.3333sp 13 | 14.2222sp 14 | 15.1111sp 15 | 16.0000sp 16 | 16.8889sp 17 | 17.7778sp 18 | 18.6667sp 19 | 19.5556sp 20 | 20.4444sp 21 | 21.3333sp 22 | 22.2222sp 23 | 24.8889sp 24 | 26.6667sp 25 | 28.4444sp 26 | 30.2222sp 27 | 32.0000sp 28 | 33.7778sp 29 | 35.5556sp 30 | 37.3333sp 31 | 42.6667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw360dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.0000sp 4 | 7.0000sp 5 | 8.0000sp 6 | 9.0000sp 7 | 10.0000sp 8 | 11.0000sp 9 | 12.0000sp 10 | 13.0000sp 11 | 14.0000sp 12 | 15.0000sp 13 | 16.0000sp 14 | 17.0000sp 15 | 18.0000sp 16 | 19.0000sp 17 | 20.0000sp 18 | 21.0000sp 19 | 22.0000sp 20 | 23.0000sp 21 | 24.0000sp 22 | 25.0000sp 23 | 28.0000sp 24 | 30.0000sp 25 | 32.0000sp 26 | 34.0000sp 27 | 36.0000sp 28 | 38.0000sp 29 | 40.0000sp 30 | 42.0000sp 31 | 48.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw362dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.0377sp 4 | 7.0440sp 5 | 8.0503sp 6 | 9.0566sp 7 | 10.0629sp 8 | 11.0692sp 9 | 12.0755sp 10 | 13.0818sp 11 | 14.0880sp 12 | 15.0943sp 13 | 16.1006sp 14 | 17.1069sp 15 | 18.1132sp 16 | 19.1195sp 17 | 20.1258sp 18 | 21.1321sp 19 | 22.1384sp 20 | 23.1447sp 21 | 24.1509sp 22 | 25.1572sp 23 | 28.1761sp 24 | 30.1887sp 25 | 32.2013sp 26 | 34.2138sp 27 | 36.2264sp 28 | 38.2390sp 29 | 40.2516sp 30 | 42.2641sp 31 | 48.3019sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw384dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.4000sp 4 | 7.4667sp 5 | 8.5333sp 6 | 9.6000sp 7 | 10.6667sp 8 | 11.7333sp 9 | 12.8000sp 10 | 13.8667sp 11 | 14.9333sp 12 | 16.0000sp 13 | 17.0667sp 14 | 18.1333sp 15 | 19.2000sp 16 | 20.2667sp 17 | 21.3333sp 18 | 22.4000sp 19 | 23.4667sp 20 | 24.5333sp 21 | 25.6000sp 22 | 26.6667sp 23 | 29.8667sp 24 | 32.0000sp 25 | 34.1333sp 26 | 36.2667sp 27 | 38.4000sp 28 | 40.5333sp 29 | 42.6667sp 30 | 44.8000sp 31 | 51.2000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw392dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.5455sp 4 | 7.6364sp 5 | 8.7273sp 6 | 9.8182sp 7 | 10.9091sp 8 | 12.0000sp 9 | 13.0909sp 10 | 14.1818sp 11 | 15.2727sp 12 | 16.3636sp 13 | 17.4545sp 14 | 18.5455sp 15 | 19.6364sp 16 | 20.7273sp 17 | 21.8182sp 18 | 22.9091sp 19 | 24.0000sp 20 | 25.0909sp 21 | 26.1818sp 22 | 27.2727sp 23 | 30.5454sp 24 | 32.7273sp 25 | 34.9091sp 26 | 37.0909sp 27 | 39.2727sp 28 | 41.4545sp 29 | 43.6364sp 30 | 45.8182sp 31 | 52.3636sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw400dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.6667sp 4 | 7.7778sp 5 | 8.8889sp 6 | 10.0000sp 7 | 11.1111sp 8 | 12.2222sp 9 | 13.3333sp 10 | 14.4444sp 11 | 15.5556sp 12 | 16.6667sp 13 | 17.7778sp 14 | 18.8889sp 15 | 20.0000sp 16 | 21.1111sp 17 | 22.2222sp 18 | 23.3333sp 19 | 24.4444sp 20 | 25.5556sp 21 | 26.6667sp 22 | 27.7778sp 23 | 31.1111sp 24 | 33.3333sp 25 | 35.5556sp 26 | 37.7778sp 27 | 40.0000sp 28 | 42.2222sp 29 | 44.4444sp 30 | 46.6667sp 31 | 53.3333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw410dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.8333sp 4 | 7.9722sp 5 | 9.1111sp 6 | 10.2500sp 7 | 11.3889sp 8 | 12.5278sp 9 | 13.6667sp 10 | 14.8056sp 11 | 15.9444sp 12 | 17.0833sp 13 | 18.2222sp 14 | 19.3611sp 15 | 20.5000sp 16 | 21.6389sp 17 | 22.7778sp 18 | 23.9167sp 19 | 25.0556sp 20 | 26.1944sp 21 | 27.3333sp 22 | 28.4722sp 23 | 31.8889sp 24 | 34.1667sp 25 | 36.4444sp 26 | 38.7222sp 27 | 41.0000sp 28 | 43.2778sp 29 | 45.5556sp 30 | 47.8333sp 31 | 54.6667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw411dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6.8571sp 4 | 8.0000sp 5 | 9.1429sp 6 | 10.2857sp 7 | 11.4286sp 8 | 12.5714sp 9 | 13.7143sp 10 | 14.8571sp 11 | 16.0000sp 12 | 17.1429sp 13 | 18.2857sp 14 | 19.4286sp 15 | 20.5714sp 16 | 21.7143sp 17 | 22.8571sp 18 | 24.0000sp 19 | 25.1429sp 20 | 26.2857sp 21 | 27.4286sp 22 | 28.5714sp 23 | 32.0000sp 24 | 34.2857sp 25 | 36.5714sp 26 | 38.8571sp 27 | 41.1428sp 28 | 43.4286sp 29 | 45.7143sp 30 | 48.0000sp 31 | 54.8571sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw432dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7.2000sp 4 | 8.4000sp 5 | 9.6000sp 6 | 10.8000sp 7 | 12.0000sp 8 | 13.2000sp 9 | 14.4000sp 10 | 15.6000sp 11 | 16.8000sp 12 | 18.0000sp 13 | 19.2000sp 14 | 20.4000sp 15 | 21.6000sp 16 | 22.8000sp 17 | 24.0000sp 18 | 25.2000sp 19 | 26.4000sp 20 | 27.6000sp 21 | 28.8000sp 22 | 30.0000sp 23 | 33.6000sp 24 | 36.0000sp 25 | 38.4000sp 26 | 40.8000sp 27 | 43.2000sp 28 | 45.6000sp 29 | 48.0000sp 30 | 50.4000sp 31 | 57.6000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw451dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7.5294sp 4 | 8.7843sp 5 | 10.0392sp 6 | 11.2941sp 7 | 12.5490sp 8 | 13.8039sp 9 | 15.0588sp 10 | 16.3137sp 11 | 17.5686sp 12 | 18.8235sp 13 | 20.0784sp 14 | 21.3333sp 15 | 22.5882sp 16 | 23.8431sp 17 | 25.0980sp 18 | 26.3529sp 19 | 27.6078sp 20 | 28.8627sp 21 | 30.1176sp 22 | 31.3725sp 23 | 35.1373sp 24 | 37.6471sp 25 | 40.1569sp 26 | 42.6667sp 27 | 45.1765sp 28 | 47.6863sp 29 | 50.1961sp 30 | 52.7059sp 31 | 60.2353sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw480dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8.0000sp 4 | 9.3333sp 5 | 10.6667sp 6 | 12.0000sp 7 | 13.3333sp 8 | 14.6667sp 9 | 16.0000sp 10 | 17.3333sp 11 | 18.6667sp 12 | 20.0000sp 13 | 21.3333sp 14 | 22.6667sp 15 | 24.0000sp 16 | 25.3333sp 17 | 26.6667sp 18 | 28.0000sp 19 | 29.3333sp 20 | 30.6667sp 21 | 32.0000sp 22 | 33.3333sp 23 | 37.3333sp 24 | 40.0000sp 25 | 42.6667sp 26 | 45.3333sp 27 | 48.0000sp 28 | 50.6667sp 29 | 53.3333sp 30 | 56.0000sp 31 | 64.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw533dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8.8833sp 4 | 10.3639sp 5 | 11.8444sp 6 | 13.3250sp 7 | 14.8056sp 8 | 16.2861sp 9 | 17.7667sp 10 | 19.2472sp 11 | 20.7278sp 12 | 22.2083sp 13 | 23.6889sp 14 | 25.1694sp 15 | 26.6500sp 16 | 28.1306sp 17 | 29.6111sp 18 | 31.0917sp 19 | 32.5722sp 20 | 34.0528sp 21 | 35.5333sp 22 | 37.0139sp 23 | 41.4556sp 24 | 44.4167sp 25 | 47.3778sp 26 | 50.3389sp 27 | 53.3000sp 28 | 56.2611sp 29 | 59.2222sp 30 | 62.1833sp 31 | 71.0667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw540dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9.0000sp 4 | 10.5000sp 5 | 12.0000sp 6 | 13.5000sp 7 | 15.0000sp 8 | 16.5000sp 9 | 18.0000sp 10 | 19.5000sp 11 | 21.0000sp 12 | 22.5000sp 13 | 24.0000sp 14 | 25.5000sp 15 | 27.0000sp 16 | 28.5000sp 17 | 30.0000sp 18 | 31.5000sp 19 | 33.0000sp 20 | 34.5000sp 21 | 36.0000sp 22 | 37.5000sp 23 | 42.0000sp 24 | 45.0000sp 25 | 48.0000sp 26 | 51.0000sp 27 | 54.0000sp 28 | 57.0000sp 29 | 60.0000sp 30 | 63.0000sp 31 | 72.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw592dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9.8667sp 4 | 11.5111sp 5 | 13.1556sp 6 | 14.8000sp 7 | 16.4444sp 8 | 18.0889sp 9 | 19.7333sp 10 | 21.3778sp 11 | 23.0222sp 12 | 24.6667sp 13 | 26.3111sp 14 | 27.9556sp 15 | 29.6000sp 16 | 31.2444sp 17 | 32.8889sp 18 | 34.5333sp 19 | 36.1778sp 20 | 37.8222sp 21 | 39.4667sp 22 | 41.1111sp 23 | 46.0444sp 24 | 49.3333sp 25 | 52.6222sp 26 | 55.9111sp 27 | 59.2000sp 28 | 62.4889sp 29 | 65.7778sp 30 | 69.0667sp 31 | 78.9333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw600dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10.0000sp 4 | 11.6667sp 5 | 13.3333sp 6 | 15.0000sp 7 | 16.6667sp 8 | 18.3333sp 9 | 20.0000sp 10 | 21.6667sp 11 | 23.3333sp 12 | 25.0000sp 13 | 26.6667sp 14 | 28.3333sp 15 | 30.0000sp 16 | 31.6667sp 17 | 33.3333sp 18 | 35.0000sp 19 | 36.6667sp 20 | 38.3333sp 21 | 40.0000sp 22 | 41.6667sp 23 | 46.6667sp 24 | 50.0000sp 25 | 53.3333sp 26 | 56.6667sp 27 | 60.0000sp 28 | 63.3333sp 29 | 66.6667sp 30 | 70.0000sp 31 | 80.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw640dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10.6667sp 4 | 12.4444sp 5 | 14.2222sp 6 | 16.0000sp 7 | 17.7778sp 8 | 19.5556sp 9 | 21.3333sp 10 | 23.1111sp 11 | 24.8889sp 12 | 26.6667sp 13 | 28.4444sp 14 | 30.2222sp 15 | 32.0000sp 16 | 33.7778sp 17 | 35.5556sp 18 | 37.3333sp 19 | 39.1111sp 20 | 40.8889sp 21 | 42.6667sp 22 | 44.4444sp 23 | 49.7778sp 24 | 53.3333sp 25 | 56.8889sp 26 | 60.4444sp 27 | 64.0000sp 28 | 67.5556sp 29 | 71.1111sp 30 | 74.6667sp 31 | 85.3333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw662dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11.0333sp 4 | 12.8722sp 5 | 14.7111sp 6 | 16.5500sp 7 | 18.3889sp 8 | 20.2278sp 9 | 22.0667sp 10 | 23.9056sp 11 | 25.7444sp 12 | 27.5833sp 13 | 29.4222sp 14 | 31.2611sp 15 | 33.1000sp 16 | 34.9389sp 17 | 36.7778sp 18 | 38.6167sp 19 | 40.4556sp 20 | 42.2944sp 21 | 44.1333sp 22 | 45.9722sp 23 | 51.4889sp 24 | 55.1667sp 25 | 58.8444sp 26 | 62.5222sp 27 | 66.2000sp 28 | 69.8778sp 29 | 73.5556sp 30 | 77.2333sp 31 | 88.2667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw720dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12.0000sp 4 | 14.0000sp 5 | 16.0000sp 6 | 18.0000sp 7 | 20.0000sp 8 | 22.0000sp 9 | 24.0000sp 10 | 26.0000sp 11 | 28.0000sp 12 | 30.0000sp 13 | 32.0000sp 14 | 34.0000sp 15 | 36.0000sp 16 | 38.0000sp 17 | 40.0000sp 18 | 42.0000sp 19 | 44.0000sp 20 | 46.0000sp 21 | 48.0000sp 22 | 50.0000sp 23 | 56.0000sp 24 | 60.0000sp 25 | 64.0000sp 26 | 68.0000sp 27 | 72.0000sp 28 | 76.0000sp 29 | 80.0000sp 30 | 84.0000sp 31 | 96.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw768dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12.8000sp 4 | 14.9333sp 5 | 17.0667sp 6 | 19.2000sp 7 | 21.3333sp 8 | 23.4667sp 9 | 25.6000sp 10 | 27.7333sp 11 | 29.8667sp 12 | 32.0000sp 13 | 34.1333sp 14 | 36.2667sp 15 | 38.4000sp 16 | 40.5333sp 17 | 42.6667sp 18 | 44.8000sp 19 | 46.9333sp 20 | 49.0667sp 21 | 51.2000sp 22 | 53.3333sp 23 | 59.7333sp 24 | 64.0000sp 25 | 68.2667sp 26 | 72.5333sp 27 | 76.8000sp 28 | 81.0667sp 29 | 85.3333sp 30 | 89.6000sp 31 | 102.4000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw800dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13.3333sp 4 | 15.5556sp 5 | 17.7778sp 6 | 20.0000sp 7 | 22.2222sp 8 | 24.4444sp 9 | 26.6667sp 10 | 28.8889sp 11 | 31.1111sp 12 | 33.3333sp 13 | 35.5556sp 14 | 37.7778sp 15 | 40.0000sp 16 | 42.2222sp 17 | 44.4444sp 18 | 46.6667sp 19 | 48.8889sp 20 | 51.1111sp 21 | 53.3333sp 22 | 55.5556sp 23 | 62.2222sp 24 | 66.6667sp 25 | 71.1111sp 26 | 75.5556sp 27 | 80.0000sp 28 | 84.4444sp 29 | 88.8889sp 30 | 93.3333sp 31 | 106.6667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw811dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13.5167sp 4 | 15.7694sp 5 | 18.0222sp 6 | 20.2750sp 7 | 22.5278sp 8 | 24.7806sp 9 | 27.0333sp 10 | 29.2861sp 11 | 31.5389sp 12 | 33.7917sp 13 | 36.0444sp 14 | 38.2972sp 15 | 40.5500sp 16 | 42.8028sp 17 | 45.0556sp 18 | 47.3083sp 19 | 49.5611sp 20 | 51.8139sp 21 | 54.0667sp 22 | 56.3194sp 23 | 63.0778sp 24 | 67.5833sp 25 | 72.0889sp 26 | 76.5944sp 27 | 81.1000sp 28 | 85.6056sp 29 | 90.1111sp 30 | 94.6167sp 31 | 108.1333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw820dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13.6667sp 4 | 15.9444sp 5 | 18.2222sp 6 | 20.5000sp 7 | 22.7778sp 8 | 25.0556sp 9 | 27.3333sp 10 | 29.6111sp 11 | 31.8889sp 12 | 34.1667sp 13 | 36.4444sp 14 | 38.7222sp 15 | 41.0000sp 16 | 43.2778sp 17 | 45.5556sp 18 | 47.8333sp 19 | 50.1111sp 20 | 52.3889sp 21 | 54.6667sp 22 | 56.9444sp 23 | 63.7778sp 24 | 68.3333sp 25 | 72.8889sp 26 | 77.4444sp 27 | 82.0000sp 28 | 86.5556sp 29 | 91.1111sp 30 | 95.6667sp 31 | 109.3333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6sp 5 | 7sp 6 | 8sp 7 | 9sp 8 | 10sp 9 | 11sp 10 | 12sp 11 | 13sp 12 | 14sp 13 | 15sp 14 | 16sp 15 | 17sp 16 | 18sp 17 | 19sp 18 | 20sp 19 | 21sp 20 | 22sp 21 | 23sp 22 | 24sp 23 | 25sp 24 | 28sp 25 | 30sp 26 | 32sp 27 | 34sp 28 | 36sp 29 | 38sp 30 | 40sp 31 | 42sp 32 | 48sp 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res-common/drawable/button_circle_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw1024dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17.0667sp 4 | 19.9111sp 5 | 22.7556sp 6 | 25.6000sp 7 | 28.4444sp 8 | 31.2889sp 9 | 34.1333sp 10 | 36.9778sp 11 | 39.8222sp 12 | 42.6667sp 13 | 45.5111sp 14 | 48.3556sp 15 | 51.2000sp 16 | 54.0444sp 17 | 56.8889sp 18 | 59.7333sp 19 | 62.5778sp 20 | 65.4222sp 21 | 68.2667sp 22 | 71.1111sp 23 | 79.6444sp 24 | 85.3333sp 25 | 91.0222sp 26 | 96.7111sp 27 | 102.4000sp 28 | 108.0889sp 29 | 113.7778sp 30 | 119.4667sp 31 | 136.5333sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw960dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16.0000sp 4 | 18.6667sp 5 | 21.3333sp 6 | 24.0000sp 7 | 26.6667sp 8 | 29.3333sp 9 | 32.0000sp 10 | 34.6667sp 11 | 37.3333sp 12 | 40.0000sp 13 | 42.6667sp 14 | 45.3333sp 15 | 48.0000sp 16 | 50.6667sp 17 | 53.3333sp 18 | 56.0000sp 19 | 58.6667sp 20 | 61.3333sp 21 | 64.0000sp 22 | 66.6667sp 23 | 74.6667sp 24 | 80.0000sp 25 | 85.3333sp 26 | 90.6667sp 27 | 96.0000sp 28 | 101.3333sp 29 | 106.6667sp 30 | 112.0000sp 31 | 128.0000sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw961dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16.0167sp 4 | 18.6861sp 5 | 21.3556sp 6 | 24.0250sp 7 | 26.6944sp 8 | 29.3639sp 9 | 32.0333sp 10 | 34.7028sp 11 | 37.3722sp 12 | 40.0417sp 13 | 42.7111sp 14 | 45.3806sp 15 | 48.0500sp 16 | 50.7194sp 17 | 53.3889sp 18 | 56.0583sp 19 | 58.7278sp 20 | 61.3972sp 21 | 64.0667sp 22 | 66.7361sp 23 | 74.7444sp 24 | 80.0833sp 25 | 85.4222sp 26 | 90.7611sp 27 | 96.1000sp 28 | 101.4389sp 29 | 106.7778sp 30 | 112.1167sp 31 | 128.1333sp 32 | 33 | -------------------------------------------------------------------------------- /library/customWidget/src/main/java/com/hjq/custom/widget/view/ScaleImageView.kt: -------------------------------------------------------------------------------- 1 | package com.hjq.custom.widget.view 2 | 3 | import android.content.Context 4 | import android.content.res.TypedArray 5 | import android.util.AttributeSet 6 | import androidx.appcompat.widget.AppCompatImageView 7 | import com.hjq.custom.widget.R 8 | 9 | /** 10 | * author : Android 轮子哥 11 | * github : https://github.com/getActivity/AndroidProject-Kotlin 12 | * time : 2019/08/02 13 | * desc : 长按缩放松手恢复的 ImageView 14 | */ 15 | class ScaleImageView @JvmOverloads constructor( 16 | context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : 17 | AppCompatImageView(context, attrs, defStyleAttr) { 18 | 19 | private var scaleSize: Float = 1.2f 20 | 21 | init { 22 | val array: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.ScaleImageView) 23 | setScaleSize(array.getFloat(R.styleable.ScaleImageView_scaleRatio, scaleSize)) 24 | array.recycle() 25 | } 26 | 27 | override fun dispatchSetPressed(pressed: Boolean) { 28 | // 判断当前手指是否按下了 29 | if (pressed) { 30 | scaleX = scaleSize 31 | scaleY = scaleSize 32 | } else { 33 | scaleX = 1f 34 | scaleY = 1f 35 | } 36 | } 37 | 38 | fun setScaleSize(size: Float) { 39 | scaleSize = size 40 | } 41 | } -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw1280dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21.3333sp 4 | 24.8889sp 5 | 28.4444sp 6 | 32.0000sp 7 | 35.5556sp 8 | 39.1111sp 9 | 42.6667sp 10 | 46.2222sp 11 | 49.7778sp 12 | 53.3333sp 13 | 56.8889sp 14 | 60.4444sp 15 | 64.0000sp 16 | 67.5556sp 17 | 71.1111sp 18 | 74.6667sp 19 | 78.2222sp 20 | 81.7778sp 21 | 85.3333sp 22 | 88.8889sp 23 | 99.5556sp 24 | 106.6667sp 25 | 113.7778sp 26 | 120.8889sp 27 | 128.0000sp 28 | 135.1111sp 29 | 142.2222sp 30 | 149.3333sp 31 | 170.6667sp 32 | 33 | -------------------------------------------------------------------------------- /library/smallestWidth/src/main/res/values-sw1365dp/dimens_sp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22.7500sp 4 | 26.5417sp 5 | 30.3333sp 6 | 34.1250sp 7 | 37.9167sp 8 | 41.7083sp 9 | 45.5000sp 10 | 49.2917sp 11 | 53.0833sp 12 | 56.8750sp 13 | 60.6667sp 14 | 64.4583sp 15 | 68.2500sp 16 | 72.0417sp 17 | 75.8333sp 18 | 79.6250sp 19 | 83.4167sp 20 | 87.2083sp 21 | 91.0000sp 22 | 94.7917sp 23 | 106.1667sp 24 | 113.7500sp 25 | 121.3333sp 26 | 128.9167sp 27 | 136.5000sp 28 | 144.0833sp 29 | 151.6667sp 30 | 159.2500sp 31 | 182.0000sp 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res-common/layout/tab_item_design.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 20 | 21 | 29 | 30 | --------------------------------------------------------------------------------