├── .gitignore ├── 07_kotlin_app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── example │ │ └── app │ │ ├── MainActivity.java │ │ ├── entity │ │ └── User.java │ │ └── widget │ │ └── CodeView.java │ └── res │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ └── ic_launcher_background.xml │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ └── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png ├── 07_kotlin_base ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── example │ │ └── core │ │ ├── BaseApplication.java │ │ ├── BaseView.java │ │ ├── BaseViewHolder.java │ │ ├── http │ │ ├── EntityCallback.java │ │ └── HttpClient.java │ │ └── utils │ │ ├── CacheUtils.java │ │ └── Utils.java │ └── res │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── 07_kotlin_lesson ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── example │ │ └── lesson │ │ ├── LessonActivity.java │ │ ├── LessonAdapter.java │ │ ├── LessonPresenter.java │ │ └── entity │ │ └── Lesson.java │ └── res │ ├── layout │ ├── activity_lesson.xml │ └── item_lesson.xml │ ├── menu │ └── menu_lesson.xml │ └── values │ ├── colors.xml │ └── styles.xml ├── 09_drawing ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a09_drawing │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a09_drawing │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── AvatarView.java │ │ │ ├── DashBoard.java │ │ │ └── PieChart.java │ └── res │ │ ├── drawable-v24 │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a09_drawing │ └── ExampleUnitTest.java ├── 10_text_and_transformation ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a10_text_and_transformation │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── Quicksand-Regular.ttf │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a10_text_and_transformation │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── CameraView.java │ │ │ ├── ImageTextView.java │ │ │ └── SportView.java │ └── res │ │ ├── drawable-v24 │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a10_text_and_transformation │ └── ExampleUnitTest.java ├── 11_animation ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a11_animation │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a11_animation │ │ │ ├── MainActivity.java │ │ │ ├── ProvinceUtil.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── CircleView.java │ │ │ ├── FancyView.java │ │ │ ├── PointView.java │ │ │ └── ProvinceView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a11_animation │ └── ExampleUnitTest.java ├── 12_bitmap_drawable ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a12_bitmap_drawable │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a12_bitmap_drawable │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ ├── drawable │ │ │ ├── CandleDrawable.java │ │ │ └── MeshDrawable.java │ │ │ └── view │ │ │ ├── BigCandleView.java │ │ │ ├── DrawableView.java │ │ │ ├── MaterialEditText.java │ │ │ └── SmallCandleView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a12_bitmap_drawable │ └── ExampleUnitTest.java ├── 13_layout ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a13_layout │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a13_layout │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── CircleView.java │ │ │ ├── ColoredTextView.java │ │ │ ├── OneHundredView.java │ │ │ ├── SquareImageView.java │ │ │ └── TagLayout.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a13_layout │ └── ExampleUnitTest.java ├── 14_touch ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a14_touch │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a14_touch │ │ │ ├── MainActivity.java │ │ │ └── view │ │ │ ├── TouchLayout.java │ │ │ └── TouchView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a14_touch │ └── ExampleUnitTest.java ├── 15_scalableimageview ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a15_scalableimageview │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a15_scalableimageview │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ └── ScalableImageView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a15_scalableimageview │ └── ExampleUnitTest.java ├── 16_multi_touch ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a16_multi_touch │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a16_multi_touch │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── MultiTouchView1.java │ │ │ ├── MultiTouchView2.java │ │ │ └── MultiTouchView3.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar_rengwuxian.png │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a16_multi_touch │ └── ExampleUnitTest.java ├── 17_constraintlayout ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a19_constraintlayout │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a19_constraintlayout │ │ │ ├── CircularPositioning.kt │ │ │ ├── CircularReveal.kt │ │ │ ├── CircularRevealHelper.kt │ │ │ ├── ConstraintLayoutSample.kt │ │ │ ├── ConstraintSetActivity.kt │ │ │ ├── DimensionRatio.kt │ │ │ ├── FlowActivity.kt │ │ │ ├── GuideLineActivity.kt │ │ │ ├── Linear.kt │ │ │ ├── LinearActivity.kt │ │ │ ├── MainActivity.kt │ │ │ └── PlaceHolder.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── earth.png │ │ ├── ic_favorite_black_24dp.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_mail_black_24dp.xml │ │ ├── ic_play_circle_filled_black_24dp.xml │ │ ├── ic_save_black_24dp.xml │ │ ├── moon.png │ │ ├── qq.png │ │ ├── qzone.png │ │ ├── sun.png │ │ ├── twitter.png │ │ ├── wechat.png │ │ ├── wechat_friend.png │ │ └── weibo.png │ │ ├── layout │ │ ├── activity_circular_positioning.xml │ │ ├── activity_circular_reveal.xml │ │ ├── activity_constraint_end.xml │ │ ├── activity_constraint_layout_sample.xml │ │ ├── activity_constraint_start.xml │ │ ├── activity_dimension_ratio.xml │ │ ├── activity_flow.xml │ │ ├── activity_guide_line.xml │ │ ├── activity_linear.xml │ │ ├── activity_main.xml │ │ └── activity_place_holder.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a19_constraintlayout │ └── ExampleUnitTest.kt ├── 18_motionlayout ├── .gitignore ├── CycleEditor.jar ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── motionlayout │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── motionlayout │ │ │ ├── ConstraintSet.kt │ │ │ ├── Go.kt │ │ │ ├── MainActivity.kt │ │ │ ├── ObjectAnimator2Activity.kt │ │ │ ├── ObjectAnimatorActivity.kt │ │ │ ├── SampleActivity.kt │ │ │ ├── WithCoordinator.kt │ │ │ ├── WithDrawer.kt │ │ │ └── util │ │ │ └── Float.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar.jpg │ │ ├── film_cover.webp │ │ ├── ic_bookmark_24dp.xml │ │ ├── ic_heart_24dp.xml │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_constraint_end.xml │ │ ├── activity_constraint_start.xml │ │ ├── activity_go.xml │ │ ├── activity_main.xml │ │ ├── activity_object_animator.xml │ │ ├── activity_object_animator2.xml │ │ ├── activity_sample01.xml │ │ ├── activity_with_coordinator.xml │ │ ├── activity_with_drawer.xml │ │ ├── go_end.xml │ │ └── go_start.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ ├── coordinator.xml │ │ ├── drawer.xml │ │ └── sample01.xml │ └── test │ └── java │ └── com │ └── example │ └── motionlayout │ └── ExampleUnitTest.kt ├── 18_motionlayout_example ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── youtube │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── youtube │ │ │ ├── HenCoderActivity.kt │ │ │ ├── MainActivity.kt │ │ │ ├── MotionLayoutActivity.kt │ │ │ └── YoutubeActivity.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── cat_1.jpeg │ │ ├── film_cover.webp │ │ ├── ic_bookmark_24dp.xml │ │ ├── ic_clear_gray_32dp.xml │ │ ├── ic_dashboard_black_24dp.xml │ │ ├── ic_home_black_24dp.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_notifications_black_24dp.xml │ │ └── ic_play_arrow_gray_32dp.xml │ │ ├── layout │ │ ├── activity_hen_coder.xml │ │ ├── activity_main.xml │ │ ├── activity_motion_layout.xml │ │ └── activity_youtube.xml │ │ ├── menu │ │ └── bottom_nav_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ ├── motion_scene_hencoder.xml │ │ ├── scene_motion_layout.xml │ │ └── scene_youtube.xml │ └── test │ └── java │ └── com │ └── example │ └── youtube │ └── ExampleUnitTest.kt ├── 19_touch_viewgroup ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a19_touch_viewgroup │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a19_touch_viewgroup │ │ │ ├── MainActivity.java │ │ │ └── view │ │ │ └── TwoPager.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a19_touch_viewgroup │ └── ExampleUnitTest.java ├── 20_drag_nestedscroll ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a20_drag_nestedscroll │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a20_drag_nestedscroll │ │ │ ├── MainActivity.java │ │ │ ├── Utils.java │ │ │ └── view │ │ │ ├── drag │ │ │ ├── DragHelperGridView.java │ │ │ ├── DragListenerGridView.java │ │ │ ├── DragToCollectLayout.java │ │ │ └── DragUpDownLayout.java │ │ │ └── nested_scroll │ │ │ └── NestedScalableImageView.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── avatar_rengwuxian.png │ │ ├── google_logo.jpg │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── drag_helper_grid_view.xml │ │ ├── drag_listener_grid_view.xml │ │ ├── drag_to_collect.xml │ │ ├── drag_up_down.xml │ │ ├── nested_scalable_image_view.xml │ │ └── nested_scroll_view.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a20_drag_nestedscroll │ └── ExampleUnitTest.java ├── 21_thread_synchronization ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hencoder │ └── a20_thread_synchronization │ ├── Main.java │ ├── ReadWriteLockDemo.java │ ├── SingleMan.java │ ├── Synchronized1Demo.java │ ├── Synchronized2Demo.java │ ├── Synchronized3Demo.java │ └── TestDemo.java ├── 22_thread_interaction ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hencoder │ └── a22_thread_interaction │ ├── CustomizableThreadDemo.java │ ├── Main.java │ ├── TestDemo.java │ ├── ThreadInteractionDemo.java │ └── WaitDemo.java ├── 23_rxjava ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a23_rxjava │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a23_rxjava │ │ │ ├── MainActivity.java │ │ │ ├── model │ │ │ └── Repo.java │ │ │ └── network │ │ │ └── Api.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a23_rxjava │ └── ExampleUnitTest.java ├── 24_io ├── .gitignore ├── build.gradle ├── src │ └── main │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── a24_io │ │ └── Main.java ├── text.txt └── text_copy.txt ├── 25_gradle ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ ├── src │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── hencoder │ │ │ │ └── gradledemo │ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── debug │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── hencoder │ │ │ │ └── gradledemo │ │ │ │ └── Utils.java │ │ ├── internal │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── hencoder │ │ │ │ └── gradledemo │ │ │ │ └── Utils.java │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── hencoder │ │ │ │ │ └── gradledemo │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ └── ic_launcher_background.xml │ │ │ │ ├── layout │ │ │ │ └── activity_main.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ ├── release │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── hencoder │ │ │ │ └── gradledemo │ │ │ │ └── Utils.java │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── gradledemo │ │ │ └── ExampleUnitTest.java │ └── version.properties ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library1 │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── library1 │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── library1 │ │ └── ExampleUnitTest.java ├── library2 │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── library2 │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── library2 │ │ └── ExampleUnitTest.java └── settings.gradle ├── 26_gradle_plugin ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── a26_gradle_plugin │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── hencoder │ │ │ │ └── a26_gradle_plugin │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── a26_gradle_plugin │ │ └── ExampleUnitTest.java ├── build.gradle ├── buildSrc │ ├── .gitignore │ ├── build.gradle │ └── src │ │ └── main │ │ ├── groovy │ │ └── com │ │ │ └── hencoder │ │ │ └── plugin │ │ │ ├── HenCoder.groovy │ │ │ ├── HenCoderExtension.groovy │ │ │ └── HenCoderTransform.groovy │ │ └── resources │ │ └── META-INF │ │ └── gradle-plugins │ │ └── com.hencoder.plugindemo.properties ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── 30_arch ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a30_arch │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a30_arch │ │ │ ├── MainActivity.java │ │ │ ├── data │ │ │ └── DataCenter.java │ │ │ ├── mvc │ │ │ ├── DataView.java │ │ │ └── MvcActivity.java │ │ │ ├── mvp │ │ │ ├── MvpActivity.java │ │ │ └── Presenter.java │ │ │ └── mvvm │ │ │ ├── MvvmActivity.java │ │ │ ├── ViewBinder.java │ │ │ └── ViewModel.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ └── activity_mvc.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a30_arch │ └── ExampleUnitTest.java ├── 31_pluginnable ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a31_pluginnable │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── apk │ │ │ └── 31_pluginnable_plugin-debug.apk │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a31_pluginnable │ │ │ ├── MainActivity.java │ │ │ ├── ProxyActivity.java │ │ │ └── utils │ │ │ └── Utils.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a31_pluginnable │ └── ExampleUnitTest.java ├── 31_pluginnable_plugin ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a31_pluginnable_plugin │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a31_pluginnable_plugin │ │ │ ├── SecondActivity.java │ │ │ └── Utils.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a31_pluginnable_plugin │ └── ExampleUnitTest.java ├── 32_hotfix ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a32_hotfix │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── apk │ │ │ ├── 32_hotfix-debug.apk │ │ │ └── hotfix.dex │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a32_hotfix │ │ │ ├── HotfixApplication.java │ │ │ ├── MainActivity.java │ │ │ └── Title.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a32_hotfix │ └── ExampleUnitTest.java ├── 33_annotation_processing ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a33_annotation_processing │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a33_annotation_processing │ │ │ ├── InnerBinding.java │ │ │ └── MainActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_annotation_processing │ └── ExampleUnitTest.java ├── 33_lib ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a33_lib │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a33_lib │ │ │ └── Binding.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_lib │ └── ExampleUnitTest.java ├── 33_lib_annotations ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hencoder │ └── a33_lib_annotations │ └── BindView.java ├── 33_lib_processor ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── hencoder │ │ └── a33_lib_processor │ │ └── BindingProcessor.java │ └── resources │ └── META-INF │ └── services │ └── javax.annotation.processing.Processor ├── 33_lib_reflection ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a33_lib_reflection │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a33_lib_reflection │ │ │ ├── BindView.java │ │ │ └── Binding.java │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_lib_reflection │ └── ExampleUnitTest.java ├── 34_generics ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hencoder │ │ └── a34_generics │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hencoder │ │ │ └── a34_generics │ │ │ ├── HenCoderList.java │ │ │ ├── HenCoderMap.java │ │ │ ├── HenCoderShopList.java │ │ │ ├── MainActivity.java │ │ │ ├── food │ │ │ ├── Alligator.java │ │ │ ├── Animal.java │ │ │ ├── Eater.java │ │ │ ├── Food.java │ │ │ ├── HenCoderShopList.java │ │ │ └── Human.java │ │ │ ├── fruit │ │ │ ├── Apple.java │ │ │ ├── Banana.java │ │ │ ├── Fruit.java │ │ │ └── Watermelon.java │ │ │ ├── kotlin │ │ │ ├── Huggable.kt │ │ │ ├── KShop.kt │ │ │ └── KotlinTest.kt │ │ │ ├── shop │ │ │ ├── AppleShop.java │ │ │ ├── EaterShop.java │ │ │ ├── FruitShop.java │ │ │ ├── NormalFruitShop.java │ │ │ ├── NormalShop.java │ │ │ ├── RepairableShop.java │ │ │ ├── Shop.java │ │ │ ├── SimShop.java │ │ │ └── UnicomSimShop.java │ │ │ └── sim │ │ │ ├── ChinaMobileSim.java │ │ │ ├── ChinaTelecomSim.java │ │ │ ├── ChinaUnicomSim.java │ │ │ └── Sim.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a34_generics │ └── ExampleUnitTest.java ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .idea/ 15 | /17_constraintlayout/images -------------------------------------------------------------------------------- /07_kotlin_app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'kotlin-android-extensions' 3 | apply plugin: 'kotlin-android' 4 | 5 | android { 6 | compileSdkVersion 28 7 | defaultConfig { 8 | applicationId "com.example.hencoder" 9 | minSdkVersion 24 10 | targetSdkVersion 28 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | } 15 | 16 | dependencies { 17 | implementation fileTree(dir: 'libs', include: ['*.jar']) 18 | implementation project(':07_kotlin_lesson') 19 | implementation project(':07_kotlin_base') 20 | } -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_base/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/java/com/example/core/BaseApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.core; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | public class BaseApplication extends Application { 9 | 10 | private static Context currentApplication; 11 | 12 | @NonNull 13 | public static Context currentApplication() { 14 | return currentApplication; 15 | } 16 | 17 | @Override 18 | protected void attachBaseContext(Context base) { 19 | super.attachBaseContext(base); 20 | currentApplication = this; 21 | } 22 | } -------------------------------------------------------------------------------- /07_kotlin_base/src/main/java/com/example/core/BaseView.java: -------------------------------------------------------------------------------- 1 | package com.example.core; 2 | 3 | public interface BaseView { 4 | T getPresenter(); 5 | } 6 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/java/com/example/core/http/EntityCallback.java: -------------------------------------------------------------------------------- 1 | package com.example.core.http; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.Nullable; 5 | 6 | public interface EntityCallback { 7 | void onSuccess(@NonNull T entity); 8 | 9 | void onFailure(@Nullable String message); 10 | } 11 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | HenCoder 3 | 查看全部课程 4 | 只看回放课程 5 | 6 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /07_kotlin_lesson/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_lesson/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android-extensions' 3 | apply plugin: 'kotlin-android' 4 | 5 | android { 6 | compileSdkVersion 28 7 | defaultConfig { 8 | minSdkVersion 24 9 | targetSdkVersion 28 10 | } 11 | } 12 | 13 | dependencies { 14 | implementation project(':07_kotlin_base') 15 | } 16 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/menu/menu_lesson.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #8F9DEE 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /09_drawing/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /09_drawing/src/main/java/com/hencoder/a09_drawing/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a09_drawing; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /09_drawing/src/main/java/com/hencoder/a09_drawing/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a09_drawing; 2 | 3 | import android.content.res.Resources; 4 | import android.util.TypedValue; 5 | 6 | public class Utils { 7 | public static float dp2px(float dp) { 8 | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics()); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/drawable-v24/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/drawable-v24/avatar_rengwuxian.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 09_drawing 3 | 4 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /09_drawing/src/test/java/com/hencoder/a09_drawing/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a09_drawing; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /10_text_and_transformation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/assets/Quicksand-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/assets/Quicksand-Regular.ttf -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/java/com/hencoder/a10_text_and_transformation/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a10_text_and_transformation; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/drawable-v24/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/drawable-v24/avatar_rengwuxian.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 10_text_and_transformation 3 | 4 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/test/java/com/hencoder/a10_text_and_transformation/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a10_text_and_transformation; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /11_animation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /11_animation/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /11_animation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 11_animation 3 | 4 | -------------------------------------------------------------------------------- /11_animation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /11_animation/src/test/java/com/hencoder/a11_animation/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a11_animation; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /12_bitmap_drawable/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/java/com/hencoder/a12_bitmap_drawable/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a12_bitmap_drawable; 2 | 3 | import android.content.res.Resources; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapFactory; 6 | import android.util.TypedValue; 7 | 8 | public class Utils { 9 | public static float dp2px(float dp) { 10 | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/java/com/hencoder/a12_bitmap_drawable/view/BigCandleView.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a12_bitmap_drawable.view; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.View; 6 | 7 | import androidx.annotation.Nullable; 8 | 9 | public class BigCandleView extends View { 10 | public BigCandleView(Context context, @Nullable AttributeSet attrs) { 11 | super(context, attrs); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 12_bitmap_drawable 3 | 4 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/test/java/com/hencoder/a12_bitmap_drawable/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a12_bitmap_drawable; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /13_layout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /13_layout/src/main/java/com/hencoder/a13_layout/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a13_layout; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /13_layout/src/main/java/com/hencoder/a13_layout/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a13_layout; 2 | 3 | import android.content.res.Resources; 4 | import android.util.TypedValue; 5 | 6 | public class Utils { 7 | public static float dpToPixel(float dp) { 8 | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, 9 | Resources.getSystem().getDisplayMetrics()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /13_layout/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /13_layout/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 13_layout 3 | 4 | -------------------------------------------------------------------------------- /13_layout/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /13_layout/src/test/java/com/hencoder/a13_layout/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a13_layout; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /14_touch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /14_touch/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /14_touch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 14_touch 3 | 4 | -------------------------------------------------------------------------------- /14_touch/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /14_touch/src/test/java/com/hencoder/a14_touch/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a14_touch; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /15_scalableimageview/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/java/com/hencoder/a15_scalableimageview/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a15_scalableimageview; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ScalableImageView 3 | 4 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /15_scalableimageview/src/test/java/com/hencoder/a15_scalableimageview/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a15_scalableimageview; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /16_multi_touch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/java/com/hencoder/a16_multi_touch/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a16_multi_touch; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16_multi_touch 3 | 4 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /16_multi_touch/src/test/java/com/hencoder/a16_multi_touch/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a16_multi_touch; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /17_constraintlayout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/CircularReveal.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class CircularReveal : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_circular_reveal) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/ConstraintLayoutSample.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class ConstraintLayoutSample : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_constraint_layout_sample) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/DimensionRatio.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class DimensionRatio : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_dimension_ratio) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/GuideLineActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class GuideLineActivity : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_guide_line) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/LinearActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class LinearActivity : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_linear) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/earth.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_favorite_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_mail_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_play_circle_filled_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_save_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/moon.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/qq.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/qzone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/qzone.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/sun.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/twitter.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/wechat.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/wechat_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/wechat_friend.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/weibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/drawable/weibo.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19_constraintlayout 3 | 4 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /17_constraintlayout/src/test/java/com/hencoder/a19_constraintlayout/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /18_motionlayout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /18_motionlayout/CycleEditor.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/CycleEditor.jar -------------------------------------------------------------------------------- /18_motionlayout/src/main/java/com/example/motionlayout/SampleActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.motionlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class SampleActivity : AppCompatActivity() { 7 | 8 | override fun onCreate(savedInstanceState: Bundle?) { 9 | super.onCreate(savedInstanceState) 10 | setContentView(R.layout.activity_sample01) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/java/com/example/motionlayout/util/Float.kt: -------------------------------------------------------------------------------- 1 | package com.example.motionlayout.util 2 | 3 | import android.content.res.Resources 4 | import android.util.TypedValue 5 | 6 | fun Float.dp() = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().displayMetrics) -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/drawable/avatar.jpg -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/film_cover.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/drawable/film_cover.webp -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/ic_bookmark_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/ic_heart_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/layout/activity_go.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | #FFD600 7 | 8 | -------------------------------------------------------------------------------- /18_motionlayout/src/test/java/com/example/motionlayout/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.example.motionlayout 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /18_motionlayout_example/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/java/com/example/youtube/YoutubeActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.youtube 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | 6 | class YoutubeActivity : AppCompatActivity() { 7 | 8 | // 过渡动画 9 | /** 10 | * View 动画 API 1 11 | * 属性动画 API 11 12 | * 过渡动画 API 18 13 | */ 14 | override fun onCreate(savedInstanceState: Bundle?) { 15 | super.onCreate(savedInstanceState) 16 | setContentView(R.layout.activity_youtube) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/cat_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/drawable/cat_1.jpeg -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/film_cover.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/drawable/film_cover.webp -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_bookmark_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_clear_gray_32dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_dashboard_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_play_arrow_gray_32dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | #CCCCCC 7 | 8 | #FFD600 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/test/java/com/example/youtube/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.example.youtube 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /19_touch_viewgroup/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/java/com/hencoder/a19_touch_viewgroup/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_touch_viewgroup; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19_touch_viewgroup 3 | 4 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/test/java/com/hencoder/a19_touch_viewgroup/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_touch_viewgroup; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /20_drag_nestedscroll/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/java/com/hencoder/a20_drag_nestedscroll/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a20_drag_nestedscroll; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.nested_scalable_image_view); 13 | } 14 | } -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/drawable/google_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/drawable/google_logo.jpg -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/layout/drag_up_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 20_drag_nestedscroll 3 | 4 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/test/java/com/hencoder/a20_drag_nestedscroll/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a20_drag_nestedscroll; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /21_thread_synchronization/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /21_thread_synchronization/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | } 6 | 7 | sourceCompatibility = "7" 8 | targetCompatibility = "7" 9 | -------------------------------------------------------------------------------- /21_thread_synchronization/src/main/java/com/hencoder/a20_thread_synchronization/SingleMan.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a20_thread_synchronization; 2 | 3 | class SingleMan { 4 | private static volatile SingleMan sInstance; 5 | 6 | private SingleMan() { 7 | } 8 | 9 | static SingleMan newInstance() { 10 | if (sInstance == null) { 11 | synchronized (SingleMan.class) { 12 | if (sInstance == null) { 13 | sInstance = new SingleMan(); 14 | } 15 | } 16 | } 17 | return sInstance; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /21_thread_synchronization/src/main/java/com/hencoder/a20_thread_synchronization/TestDemo.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a20_thread_synchronization; 2 | 3 | public interface TestDemo { 4 | void runTest(); 5 | } 6 | -------------------------------------------------------------------------------- /22_thread_interaction/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /22_thread_interaction/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | } 6 | 7 | sourceCompatibility = "7" 8 | targetCompatibility = "7" 9 | -------------------------------------------------------------------------------- /22_thread_interaction/src/main/java/com/hencoder/a22_thread_interaction/TestDemo.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a22_thread_interaction; 2 | 3 | public interface TestDemo { 4 | void runTest(); 5 | } 6 | -------------------------------------------------------------------------------- /22_thread_interaction/src/main/java/com/hencoder/a22_thread_interaction/ThreadInteractionDemo.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a22_thread_interaction; 2 | 3 | public class ThreadInteractionDemo implements TestDemo { 4 | 5 | @Override 6 | public void runTest() { 7 | Thread thread = new Thread() { 8 | @Override 9 | public void run() { 10 | for (int i = 0; i < 1_000_000; i++) { 11 | System.out.println("number: " + i); 12 | } 13 | } 14 | }; 15 | thread.start(); 16 | } 17 | } -------------------------------------------------------------------------------- /23_rxjava/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /23_rxjava/src/main/java/com/hencoder/a23_rxjava/network/Api.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a23_rxjava.network; 2 | 3 | import com.hencoder.a23_rxjava.model.Repo; 4 | 5 | import java.util.List; 6 | 7 | import io.reactivex.Single; 8 | import retrofit2.http.GET; 9 | import retrofit2.http.Path; 10 | 11 | public interface Api { 12 | 13 | @GET("users/{username}/repos") 14 | Single> getRepos(@Path("username") String username); 15 | } 16 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 23_rxjava 3 | 4 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /23_rxjava/src/test/java/com/hencoder/a23_rxjava/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a23_rxjava; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /24_io/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /24_io/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | implementation 'com.squareup.okio:okio:2.2.2' 6 | } 7 | 8 | sourceCompatibility = "7" 9 | targetCompatibility = "7" -------------------------------------------------------------------------------- /24_io/text.txt: -------------------------------------------------------------------------------- 1 | 12334 2 | 3 3 | 454 -------------------------------------------------------------------------------- /24_io/text_copy.txt: -------------------------------------------------------------------------------- 1 | abcdd赛况范 -------------------------------------------------------------------------------- /25_gradle/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches/build_file_checksums.ser 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | .DS_Store 9 | /build 10 | /captures 11 | .externalNativeBuild 12 | -------------------------------------------------------------------------------- /25_gradle/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/app/src/debug/java/com/hencoder/gradledemo/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.gradledemo; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Color; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | public class Utils { 9 | public static void drawBadge(Activity activity) { 10 | ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); 11 | View badge = new View(activity); 12 | badge.setBackgroundColor(Color.GREEN); 13 | decorView.addView(badge, 200, 100); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /25_gradle/app/src/internal/java/com/hencoder/gradledemo/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.gradledemo; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Color; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | public class Utils { 9 | public static void drawBadge(Activity activity) { 10 | ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); 11 | View badge = new View(activity); 12 | badge.setBackgroundColor(Color.YELLOW); 13 | decorView.addView(badge, 200, 100); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/java/com/hencoder/gradledemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.gradledemo; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class MainActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | 14 | Utils.drawBadge(this); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | GradleDemo 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /25_gradle/app/src/release/java/com/hencoder/gradledemo/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.gradledemo; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Color; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | public class Utils { 9 | public static void drawBadge(Activity activity) { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /25_gradle/app/src/test/java/com/hencoder/gradledemo/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.gradledemo; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /25_gradle/app/version.properties: -------------------------------------------------------------------------------- 1 | #Tue Jun 04 22:19:43 CST 2019 2 | VERSION_NAME=1.0.0 3 | VERSION_CODE=2332 4 | -------------------------------------------------------------------------------- /25_gradle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/25_gradle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /25_gradle/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Jun 04 20:13:22 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /25_gradle/library1/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/library1/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /25_gradle/library1/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | library1 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/library1/src/test/java/com/hencoder/library1/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.library1; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /25_gradle/library2/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/library2/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /25_gradle/library2/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | library2 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/library2/src/test/java/com/hencoder/library2/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.library2; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /25_gradle/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':library1', ':library2' 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 26_gradle_plugin 3 | 4 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/test/java/com/hencoder/a26_gradle_plugin/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a26_gradle_plugin; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | google() 3 | jcenter() 4 | 5 | } 6 | dependencies { 7 | implementation 'com.android.tools.build:gradle:3.5.0-beta04' 8 | } -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/src/main/groovy/com/hencoder/plugin/HenCoderExtension.groovy: -------------------------------------------------------------------------------- 1 | package com.hencoder.plugin; 2 | 3 | class HenCoderExtension { 4 | String name = 'Zhukai' 5 | } 6 | -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/src/main/resources/META-INF/gradle-plugins/com.hencoder.plugindemo.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.hencoder.plugin.HenCoder -------------------------------------------------------------------------------- /26_gradle_plugin/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/26_gradle_plugin/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /26_gradle_plugin/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Jun 06 19:40:01 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | -------------------------------------------------------------------------------- /26_gradle_plugin/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name='26_gradle_plugin' 3 | -------------------------------------------------------------------------------- /30_arch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /30_arch/src/main/java/com/hencoder/a30_arch/data/DataCenter.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a30_arch.data; 2 | 3 | public class DataCenter { 4 | public static String[] getData() { 5 | return new String[] {"Hi", "Author"}; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /30_arch/src/main/java/com/hencoder/a30_arch/mvp/Presenter.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a30_arch.mvp; 2 | 3 | import com.hencoder.a30_arch.data.DataCenter; 4 | 5 | public class Presenter { 6 | IView iView; 7 | 8 | Presenter(IView iView) { 9 | this.iView = iView; 10 | } 11 | 12 | public void load() { 13 | String[] data = DataCenter.getData(); 14 | iView.showData(data[0], data[1]); 15 | } 16 | 17 | interface IView { 18 | void showData(String datum0, String datum1); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /30_arch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 30_arch 3 | 4 | -------------------------------------------------------------------------------- /30_arch/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /30_arch/src/test/java/com/hencoder/a30_arch/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a30_arch; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /31_pluginnable/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/assets/apk/31_pluginnable_plugin-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/assets/apk/31_pluginnable_plugin-debug.apk -------------------------------------------------------------------------------- /31_pluginnable/src/main/java/com/hencoder/a31_pluginnable/utils/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a31_pluginnable.utils; 2 | 3 | class Utils { 4 | Utils() { 5 | } 6 | 7 | void shout() { 8 | System.out.println("I'm shouting!!"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 31_pluginnable 3 | 4 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /31_pluginnable/src/test/java/com/hencoder/a31_pluginnable/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a31_pluginnable; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /31_pluginnable_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/java/com/hencoder/a31_pluginnable_plugin/SecondActivity.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a31_pluginnable_plugin; 2 | 3 | import androidx.appcompat.app.AppCompatActivity; 4 | 5 | import android.os.Bundle; 6 | 7 | public class SecondActivity extends AppCompatActivity { 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.activity_main); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/java/com/hencoder/a31_pluginnable_plugin/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a31_pluginnable_plugin; 2 | 3 | public class Utils { 4 | public Utils() { 5 | } 6 | 7 | public void shout() { 8 | System.out.println("I'm shouting from a plugin!!"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 31_pluginnable_plugin 3 | 4 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/test/java/com/hencoder/a31_pluginnable_plugin/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a31_pluginnable_plugin; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /32_hotfix/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /32_hotfix/src/main/assets/apk/32_hotfix-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/assets/apk/32_hotfix-debug.apk -------------------------------------------------------------------------------- /32_hotfix/src/main/assets/apk/hotfix.dex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/assets/apk/hotfix.dex -------------------------------------------------------------------------------- /32_hotfix/src/main/java/com/hencoder/a32_hotfix/Title.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a32_hotfix; 2 | 3 | public class Title { 4 | public String getTitle() { 5 | return "I'm an auto fix!"; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 32_hotfix 3 | 4 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /32_hotfix/src/test/java/com/hencoder/a32_hotfix/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a32_hotfix; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /33_annotation_processing/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/java/com/hencoder/a33_annotation_processing/InnerBinding.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_annotation_processing; 2 | 3 | public class InnerBinding { 4 | public static void bind(MainActivity activity) { 5 | activity.textView = activity.findViewById(R.id.textView); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_annotation_processing 3 | 4 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /33_annotation_processing/src/test/java/com/hencoder/a33_annotation_processing/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_annotation_processing; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /33_lib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_lib/consumer-rules.pro -------------------------------------------------------------------------------- /33_lib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /33_lib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_lib 3 | 4 | -------------------------------------------------------------------------------- /33_lib/src/test/java/com/hencoder/a33_lib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_lib; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /33_lib_annotations/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_annotations/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | } 6 | 7 | sourceCompatibility = "7" 8 | targetCompatibility = "7" 9 | -------------------------------------------------------------------------------- /33_lib_annotations/src/main/java/com/hencoder/a33_lib_annotations/BindView.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_lib_annotations; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.SOURCE) 9 | @Target(ElementType.FIELD) 10 | public @interface BindView { 11 | int value(); 12 | } 13 | -------------------------------------------------------------------------------- /33_lib_processor/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_processor/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | implementation project(':33_lib_annotations') 6 | implementation 'com.squareup:javapoet:1.11.1' 7 | } 8 | 9 | sourceCompatibility = "7" 10 | targetCompatibility = "7" 11 | -------------------------------------------------------------------------------- /33_lib_processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | com.hencoder.a33_lib_processor.BindingProcessor -------------------------------------------------------------------------------- /33_lib_reflection/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_reflection/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/33_lib_reflection/consumer-rules.pro -------------------------------------------------------------------------------- /33_lib_reflection/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /33_lib_reflection/src/main/java/com/hencoder/a33_lib_reflection/BindView.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_lib_reflection; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.FIELD) 10 | public @interface BindView { 11 | int value(); 12 | } 13 | -------------------------------------------------------------------------------- /33_lib_reflection/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_lib_reflection 3 | 4 | -------------------------------------------------------------------------------- /33_lib_reflection/src/test/java/com/hencoder/a33_lib_reflection/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a33_lib_reflection; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /34_generics/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/HenCoderList.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics; 2 | 3 | import java.util.Arrays; 4 | 5 | public class HenCoderList { 6 | Object[] instances = new Object[0]; 7 | 8 | public T get(int index) { 9 | return (T) instances[index]; 10 | } 11 | 12 | public void add(T instance) { 13 | instances = Arrays.copyOf(instances, instances.length + 1); 14 | instances[instances.length - 1] = instance; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/HenCoderMap.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics; 2 | 3 | public class HenCoderMap { 4 | 5 | public void put(K key, V value) { 6 | } 7 | 8 | public V get(K key) { 9 | return null; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/HenCoderShopList.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics; 2 | 3 | import com.hencoder.a34_generics.fruit.Apple; 4 | import com.hencoder.a34_generics.shop.Shop; 5 | 6 | public class HenCoderShopList extends HenCoderList> { 7 | } 8 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/Alligator.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | public class Alligator extends Animal { 4 | @Override 5 | public void eaten() { 6 | System.out.println("!"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/Animal.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | public class Animal implements Food { 4 | @Override 5 | public void eaten() { 6 | System.out.println("aaaa"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/Eater.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | public class Eater { 4 | public void eat(T food) { 5 | food.eaten(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/Food.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | public interface Food { 4 | void eaten(); 5 | } 6 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/HenCoderShopList.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | import com.hencoder.a34_generics.HenCoderList; 4 | import com.hencoder.a34_generics.shop.Shop; 5 | 6 | public class HenCoderShopList extends HenCoderList> { 7 | } 8 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/food/Human.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.food; 2 | 3 | public class Human extends Animal { 4 | @Override 5 | public void eaten() { 6 | System.out.println("我被吃了!"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/fruit/Apple.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.fruit; 2 | 3 | import java.util.List; 4 | 5 | public class Apple implements Fruit { 6 | @Override 7 | public float getWeight() { 8 | return 1; 9 | } 10 | 11 | public void addMeToList(List list) { 12 | list.add(this); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/fruit/Banana.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.fruit; 2 | 3 | public class Banana implements Fruit { 4 | @Override 5 | public float getWeight() { 6 | return 2; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/fruit/Fruit.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.fruit; 2 | 3 | public interface Fruit { 4 | float getWeight(); 5 | } 6 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/fruit/Watermelon.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.fruit; 2 | 3 | import java.util.List; 4 | 5 | public class Watermelon implements Fruit { 6 | @Override 7 | public float getWeight() { 8 | return 1; 9 | } 10 | 11 | public boolean hasSeed() { 12 | return true; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/kotlin/Huggable.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.kotlin 2 | 3 | interface Huggable { 4 | fun hug(person: T) 5 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/kotlin/KShop.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.kotlin 2 | 3 | import com.hencoder.a34_generics.fruit.Apple 4 | 5 | interface KShop { 6 | fun buy(): T 7 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/kotlin/KotlinTest.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.kotlin 2 | 3 | import com.hencoder.a34_generics.fruit.Apple 4 | import com.hencoder.a34_generics.fruit.Fruit 5 | 6 | class KotlinTest { 7 | fun main() { 8 | var fruits: Array = Array(10, {Apple()}) 9 | var apples: Array = Array(10, {Fruit()}) 10 | } 11 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/AppleShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.fruit.Apple; 4 | 5 | public class AppleShop implements Shop { 6 | @Override 7 | public Apple buy() { 8 | return null; 9 | } 10 | 11 | @Override 12 | public float refund(Apple item) { 13 | return 0; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/EaterShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.food.Eater; 4 | import com.hencoder.a34_generics.food.Food; 5 | import com.hencoder.a34_generics.sim.Sim; 6 | 7 | import java.util.List; 8 | 9 | public interface EaterShop> extends Shop { 10 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/FruitShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.fruit.Fruit; 4 | 5 | public interface FruitShop extends Shop { 6 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/NormalFruitShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.fruit.Fruit; 4 | 5 | public interface NormalFruitShop extends NormalShop { 6 | Fruit buy(); 7 | 8 | float refund(Fruit item); 9 | } 10 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/NormalShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | public interface NormalShop { 4 | Object buy(); 5 | float refund(Object item); 6 | } 7 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/RepairableShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | public interface RepairableShop { 4 | T buy(); 5 | float refund(T item); 6 | } 7 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/Shop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.sim.Sim; 4 | 5 | import java.util.List; 6 | 7 | public interface Shop { 8 | T buy(); 9 | float refund(T item); 10 | 11 | // void someMethod(E item); 12 | // void addToList(R item, List list); 13 | // Shop 14 | // Apple buy(); 15 | // float refund(Apple item); 16 | } 17 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/SimShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.sim.Sim; 4 | 5 | public interface SimShop extends Shop { 6 | S buySim(String name, String id); 7 | } 8 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/sim/ChinaMobileSim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public class ChinaMobileSim implements Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/sim/ChinaTelecomSim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public class ChinaTelecomSim implements Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/sim/ChinaUnicomSim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public class ChinaUnicomSim implements Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/sim/Sim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public interface Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /34_generics/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 34_generics 3 | 4 | -------------------------------------------------------------------------------- /34_generics/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /34_generics/src/test/java/com/hencoder/a34_generics/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HenCoderPlus 三期 Demo 2 | [HenCoder Plus](http://plus.hencoder.com) 第三期的课上代码分享 3 | 4 | > 提示:这是 [HenCoder Plus](http://plus.hencoder.com) 系列课程的课上代码分享,方便学员在写作业代码的过程中回顾查看。原则上并不限制任何学员以外的人查看,但项目内的代码很可能不适合直接阅读学习。如果你想学习,可以去 [hencoder.com](http://hencoder.com) 看更轻松的分享。 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/c91a284b3a84b57b75ac2af8aa3a0e51e3395f23/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri May 24 10:33:35 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 7 | --------------------------------------------------------------------------------