├── .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 |
--------------------------------------------------------------------------------