├── 24_io ├── .gitignore ├── text_copy.txt ├── text.txt └── build.gradle ├── 33_lib ├── .gitignore ├── consumer-rules.pro └── src │ ├── main │ ├── res │ │ └── values │ │ │ └── strings.xml │ └── AndroidManifest.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_lib │ └── ExampleUnitTest.java ├── 09_drawing ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ ├── drawable-v24 │ │ │ └── avatar_rengwuxian.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a09_drawing │ │ ├── Utils.java │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a09_drawing │ └── ExampleUnitTest.java ├── 13_layout ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ ├── drawable │ │ │ └── avatar_rengwuxian.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a13_layout │ │ ├── Utils.java │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a13_layout │ └── ExampleUnitTest.java ├── 14_touch ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a14_touch │ │ └── view │ │ └── TouchView.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a14_touch │ └── ExampleUnitTest.java ├── 23_rxjava ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a23_rxjava │ │ └── network │ │ └── Api.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a23_rxjava │ └── ExampleUnitTest.java ├── 30_arch ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a30_arch │ │ ├── data │ │ └── DataCenter.java │ │ └── mvp │ │ └── Presenter.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a30_arch │ └── ExampleUnitTest.java ├── 32_hotfix ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ ├── assets │ │ └── apk │ │ │ ├── hotfix.dex │ │ │ └── 32_hotfix-debug.apk │ └── java │ │ └── com │ │ └── hencoder │ │ └── a32_hotfix │ │ └── Title.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a32_hotfix │ └── ExampleUnitTest.java ├── 34_generics ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a34_generics │ │ ├── sim │ │ ├── Sim.java │ │ ├── ChinaMobileSim.java │ │ ├── ChinaUnicomSim.java │ │ └── ChinaTelecomSim.java │ │ ├── food │ │ ├── Food.java │ │ ├── Eater.java │ │ ├── Animal.java │ │ ├── Human.java │ │ ├── Alligator.java │ │ └── HenCoderShopList.java │ │ ├── fruit │ │ ├── Fruit.java │ │ ├── Banana.java │ │ ├── Watermelon.java │ │ └── Apple.java │ │ ├── kotlin │ │ ├── Huggable.kt │ │ ├── KShop.kt │ │ └── KotlinTest.kt │ │ ├── shop │ │ ├── NormalShop.java │ │ ├── RepairableShop.java │ │ ├── FruitShop.java │ │ ├── SimShop.java │ │ ├── NormalFruitShop.java │ │ ├── EaterShop.java │ │ ├── AppleShop.java │ │ ├── Shop.java │ │ └── UnicomSimShop.java │ │ ├── HenCoderMap.java │ │ ├── HenCoderShopList.java │ │ └── HenCoderList.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a34_generics │ └── ExampleUnitTest.java ├── 07_kotlin_app ├── .gitignore ├── src │ └── main │ │ └── res │ │ ├── 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 └── build.gradle ├── 07_kotlin_base ├── .gitignore ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── core │ │ │ ├── BaseView.java │ │ │ ├── http │ │ │ └── EntityCallback.java │ │ │ └── BaseApplication.java │ │ └── res │ │ └── values │ │ ├── strings.xml │ │ ├── colors.xml │ │ └── styles.xml └── build.gradle ├── 07_kotlin_lesson ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ └── menu │ │ │ └── menu_lesson.xml │ │ └── AndroidManifest.xml └── build.gradle ├── 11_animation ├── .gitignore └── src │ ├── main │ └── res │ │ ├── values │ │ ├── strings.xml │ │ ├── colors.xml │ │ └── styles.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 │ │ ├── drawable │ │ └── avatar_rengwuxian.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ └── test │ └── java │ └── com │ └── hencoder │ └── a11_animation │ └── ExampleUnitTest.java ├── 16_multi_touch ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ ├── drawable │ │ │ └── avatar_rengwuxian.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a16_multi_touch │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a16_multi_touch │ └── ExampleUnitTest.java ├── 18_motionlayout ├── .gitignore ├── CycleEditor.jar └── src │ ├── main │ ├── res │ │ ├── drawable │ │ │ ├── avatar.jpg │ │ │ ├── film_cover.webp │ │ │ ├── ic_bookmark_24dp.xml │ │ │ └── ic_heart_24dp.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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ ├── activity_go.xml │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── example │ │ └── motionlayout │ │ ├── util │ │ └── Float.kt │ │ └── SampleActivity.kt │ └── test │ └── java │ └── com │ └── example │ └── motionlayout │ └── ExampleUnitTest.kt ├── 25_gradle ├── app │ ├── .gitignore │ ├── version.properties │ └── src │ │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.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 │ │ │ └── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── gradledemo │ │ │ └── MainActivity.java │ │ ├── release │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── gradledemo │ │ │ └── Utils.java │ │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── gradledemo │ │ │ └── ExampleUnitTest.java │ │ ├── debug │ │ └── java │ │ │ └── com │ │ │ └── hencoder │ │ │ └── gradledemo │ │ │ └── Utils.java │ │ └── internal │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── gradledemo │ │ └── Utils.java ├── library1 │ ├── .gitignore │ └── src │ │ ├── main │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ └── AndroidManifest.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── library1 │ │ └── ExampleUnitTest.java ├── library2 │ ├── .gitignore │ └── src │ │ ├── main │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ └── AndroidManifest.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── library2 │ │ └── ExampleUnitTest.java ├── settings.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── .gitignore └── build.gradle ├── 31_pluginnable ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ ├── assets │ │ └── apk │ │ │ └── 31_pluginnable_plugin-debug.apk │ └── java │ │ └── com │ │ └── hencoder │ │ └── a31_pluginnable │ │ └── utils │ │ └── Utils.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a31_pluginnable │ └── ExampleUnitTest.java ├── 33_lib_processor ├── .gitignore ├── src │ └── main │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── javax.annotation.processing.Processor └── build.gradle ├── 33_lib_reflection ├── consumer-rules.pro ├── .gitignore └── src │ ├── main │ ├── res │ │ └── values │ │ │ └── strings.xml │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a33_lib_reflection │ │ └── BindView.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_lib_reflection │ └── ExampleUnitTest.java ├── 12_bitmap_drawable ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ ├── attrs.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a12_bitmap_drawable │ │ ├── view │ │ └── BigCandleView.java │ │ └── Utils.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a12_bitmap_drawable │ └── ExampleUnitTest.java ├── 15_scalableimageview ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── drawable │ │ │ └── avatar_rengwuxian.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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a15_scalableimageview │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a15_scalableimageview │ └── ExampleUnitTest.java ├── 17_constraintlayout ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── drawable │ │ │ ├── qq.png │ │ │ ├── sun.png │ │ │ ├── earth.png │ │ │ ├── moon.png │ │ │ ├── qzone.png │ │ │ ├── weibo.png │ │ │ ├── twitter.png │ │ │ ├── wechat.png │ │ │ ├── wechat_friend.png │ │ │ ├── ic_mail_black_24dp.xml │ │ │ ├── ic_play_circle_filled_black_24dp.xml │ │ │ ├── ic_save_black_24dp.xml │ │ │ └── ic_favorite_black_24dp.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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a19_constraintlayout │ │ ├── LinearActivity.kt │ │ ├── CircularReveal.kt │ │ ├── DimensionRatio.kt │ │ ├── GuideLineActivity.kt │ │ ├── ConstraintLayoutSample.kt │ │ └── FlowActivity.kt │ └── test │ └── java │ └── com │ └── hencoder │ └── a19_constraintlayout │ └── ExampleUnitTest.kt ├── 19_touch_viewgroup ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a19_touch_viewgroup │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a19_touch_viewgroup │ └── ExampleUnitTest.java ├── 20_drag_nestedscroll ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── drawable │ │ │ ├── google_logo.jpg │ │ │ └── avatar_rengwuxian.png │ │ ├── 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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── drag_up_down.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a20_drag_nestedscroll │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a20_drag_nestedscroll │ └── ExampleUnitTest.java ├── 22_thread_interaction ├── .gitignore ├── src │ └── main │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── a22_thread_interaction │ │ ├── TestDemo.java │ │ ├── ThreadInteractionDemo.java │ │ ├── Main.java │ │ └── CustomizableThreadDemo.java └── build.gradle ├── 26_gradle_plugin ├── app │ ├── .gitignore │ └── src │ │ ├── main │ │ └── res │ │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── a26_gradle_plugin │ │ └── ExampleUnitTest.java ├── buildSrc │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ └── META-INF │ │ │ │ └── gradle-plugins │ │ │ │ └── com.hencoder.plugindemo.properties │ │ │ └── groovy │ │ │ └── com │ │ │ └── hencoder │ │ │ └── plugin │ │ │ ├── HenCoderExtension.groovy │ │ │ └── HenCoder.groovy │ └── build.gradle ├── settings.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── .gitignore └── build.gradle ├── 31_pluginnable_plugin ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a31_pluginnable_plugin │ │ ├── Utils.java │ │ └── SecondActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a31_pluginnable_plugin │ └── ExampleUnitTest.java ├── 33_lib_annotations ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hencoder │ └── a33_lib_annotations │ └── BindView.java ├── 10_text_and_transformation ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ ├── drawable-v24 │ │ │ └── avatar_rengwuxian.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ └── activity_main.xml │ ├── assets │ │ └── Quicksand-Regular.ttf │ └── java │ │ └── com │ │ └── hencoder │ │ └── a10_text_and_transformation │ │ └── MainActivity.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a10_text_and_transformation │ └── ExampleUnitTest.java ├── 18_motionlayout_example ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── drawable │ │ │ ├── cat_1.jpeg │ │ │ ├── film_cover.webp │ │ │ ├── ic_play_arrow_gray_32dp.xml │ │ │ ├── ic_home_black_24dp.xml │ │ │ ├── ic_clear_gray_32dp.xml │ │ │ ├── ic_dashboard_black_24dp.xml │ │ │ ├── ic_bookmark_24dp.xml │ │ │ └── ic_notifications_black_24dp.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 │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ └── java │ │ └── com │ │ └── example │ │ └── youtube │ │ ├── YoutubeActivity.kt │ │ └── MainActivity.kt │ └── test │ └── java │ └── com │ └── example │ └── youtube │ └── ExampleUnitTest.kt ├── 21_thread_synchronization ├── .gitignore ├── src │ └── main │ │ └── java │ │ └── com │ │ └── hencoder │ │ └── a20_thread_synchronization │ │ ├── TestDemo.java │ │ └── SingleMan.java └── build.gradle ├── 33_annotation_processing ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.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 │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ └── java │ │ └── com │ │ └── hencoder │ │ └── a33_annotation_processing │ │ └── InnerBinding.java │ └── test │ └── java │ └── com │ └── hencoder │ └── a33_annotation_processing │ └── ExampleUnitTest.java ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── README.md └── .gitignore /24_io/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /24_io/text_copy.txt: -------------------------------------------------------------------------------- 1 | abcdd赛况范 -------------------------------------------------------------------------------- /33_lib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09_drawing/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /13_layout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /14_touch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /23_rxjava/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /24_io/text.txt: -------------------------------------------------------------------------------- 1 | 12334 2 | 3 3 | 454 -------------------------------------------------------------------------------- /30_arch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /32_hotfix/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /34_generics/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_base/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /07_kotlin_lesson/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /11_animation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /16_multi_touch/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /18_motionlayout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /31_pluginnable/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_processor/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_reflection/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /12_bitmap_drawable/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /15_scalableimageview/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /17_constraintlayout/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /19_touch_viewgroup/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /22_thread_interaction/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/library1/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/library2/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_annotations/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_lib_reflection/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /10_text_and_transformation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /18_motionlayout_example/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /21_thread_synchronization/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /33_annotation_processing/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /25_gradle/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':library1', ':library2' 2 | -------------------------------------------------------------------------------- /26_gradle_plugin/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | rootProject.name='26_gradle_plugin' 3 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /14_touch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 14_touch 3 | 4 | -------------------------------------------------------------------------------- /18_motionlayout/CycleEditor.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/CycleEditor.jar -------------------------------------------------------------------------------- /30_arch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 30_arch 3 | 4 | -------------------------------------------------------------------------------- /33_lib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_lib 3 | 4 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 09_drawing 3 | 4 | -------------------------------------------------------------------------------- /13_layout/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 13_layout 3 | 4 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 23_rxjava 3 | 4 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 32_hotfix 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /11_animation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 11_animation 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | GradleDemo 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/library1/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | library1 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/library2/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | library2 3 | 4 | -------------------------------------------------------------------------------- /34_generics/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 34_generics 3 | 4 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16_multi_touch 3 | 4 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 31_pluginnable 3 | 4 | -------------------------------------------------------------------------------- /33_lib_processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | com.hencoder.a33_lib_processor.BindingProcessor -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 12_bitmap_drawable 3 | 4 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19_touch_viewgroup 3 | 4 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 26_gradle_plugin 3 | 4 | -------------------------------------------------------------------------------- /32_hotfix/src/main/assets/apk/hotfix.dex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/assets/apk/hotfix.dex -------------------------------------------------------------------------------- /33_lib_reflection/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_lib_reflection 3 | 4 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ScalableImageView 3 | 4 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19_constraintlayout 3 | 4 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 20_drag_nestedscroll 3 | 4 | -------------------------------------------------------------------------------- /25_gradle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/src/main/resources/META-INF/gradle-plugins/com.hencoder.plugindemo.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.hencoder.plugin.HenCoder -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 31_pluginnable_plugin 3 | 4 | -------------------------------------------------------------------------------- /33_lib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/qq.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/sun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/sun.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/drawable/avatar.jpg -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/assets/apk/32_hotfix-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/assets/apk/32_hotfix-debug.apk -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 33_annotation_processing 3 | 4 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 10_text_and_transformation 3 | 4 | -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/earth.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/moon.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/qzone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/qzone.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/weibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/weibo.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/library1/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /25_gradle/library2/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /26_gradle_plugin/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/twitter.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/wechat.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/film_cover.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/drawable/film_cover.webp -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/cat_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/drawable/cat_1.jpeg -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/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/HEAD/25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/30_arch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_lib_reflection/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /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/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/drawable-v24/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/drawable-v24/avatar_rengwuxian.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/13_layout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/14_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/wechat_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/drawable/wechat_friend.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/drawable/google_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/drawable/google_logo.jpg -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/23_rxjava/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/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/HEAD/30_arch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/32_hotfix/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /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/ChinaUnicomSim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public class ChinaUnicomSim implements Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/09_drawing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/film_cover.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/drawable/film_cover.webp -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /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/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/sim/ChinaTelecomSim.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.sim; 2 | 3 | public class ChinaTelecomSim implements Sim { 4 | } 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/34_generics/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/07_kotlin_app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/assets/Quicksand-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/assets/Quicksand-Regular.ttf -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/11_animation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/16_multi_touch/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/drawable/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/drawable/avatar_rengwuxian.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/25_gradle/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/assets/apk/31_pluginnable_plugin-debug.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable/src/main/assets/apk/31_pluginnable_plugin-debug.apk -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/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/HEAD/12_bitmap_drawable/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/12_bitmap_drawable/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/15_scalableimageview/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/17_constraintlayout/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/19_touch_viewgroup/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/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/HEAD/33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/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/HEAD/15_scalableimageview/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/20_drag_nestedscroll/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/26_gradle_plugin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/31_pluginnable_plugin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/drawable-v24/avatar_rengwuxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/drawable-v24/avatar_rengwuxian.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/18_motionlayout_example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/33_annotation_processing/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rengwuxian/HenCoderPlus3/HEAD/10_text_and_transformation/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | HenCoder 3 | 查看全部课程 4 | 只看回放课程 5 | 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #8F9DEE 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /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" -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /13_layout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /14_touch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /30_arch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /11_animation/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /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/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /34_generics/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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) -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /.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 -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | #FFD600 7 | 8 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /13_layout/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /23_rxjava/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.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /30_arch/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /11_animation/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /12_bitmap_drawable/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 | -------------------------------------------------------------------------------- /14_touch/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout/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.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /31_pluginnable/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 | -------------------------------------------------------------------------------- /34_generics/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /15_scalableimageview/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 | -------------------------------------------------------------------------------- /17_constraintlayout/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_example/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.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/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 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/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_plugin/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.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/mipmap-anydpi-v26/ic_launcher_round.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 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /33_annotation_processing/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 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_play_arrow_gray_32dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 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 | -------------------------------------------------------------------------------- /16_multi_touch/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | #CCCCCC 7 | 8 | #FFD600 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/layout/activity_go.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/menu/menu_lesson.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_mail_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_clear_gray_32dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_dashboard_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /14_touch/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /30_arch/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /09_drawing/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /11_animation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /13_layout/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /23_rxjava/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /25_gradle/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /32_hotfix/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /34_generics/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /07_kotlin_base/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /07_kotlin_lesson/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /12_bitmap_drawable/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /19_touch_viewgroup/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /31_pluginnable/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /26_gradle_plugin/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /31_pluginnable_plugin/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/ic_bookmark_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /33_annotation_processing/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_play_circle_filled_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /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/src/main/res/drawable/ic_bookmark_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /09_drawing/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 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 | } -------------------------------------------------------------------------------- /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/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/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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_save_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /10_text_and_transformation/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /17_constraintlayout/src/main/res/drawable/ic_favorite_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/drawable/ic_heart_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /20_drag_nestedscroll/src/main/res/layout/drag_up_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /14_touch/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /15_scalableimageview/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /34_generics/src/main/java/com/hencoder/a34_generics/shop/UnicomSimShop.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a34_generics.shop; 2 | 3 | import com.hencoder.a34_generics.fruit.Apple; 4 | import com.hencoder.a34_generics.sim.ChinaUnicomSim; 5 | 6 | public class UnicomSimShop implements SimShop { 7 | @Override 8 | public ChinaUnicomSim buySim(String name, String id) { 9 | return new ChinaUnicomSim(); 10 | } 11 | 12 | @Override 13 | public Apple buy() { 14 | return new Apple(); 15 | } 16 | 17 | @Override 18 | public float refund(Apple item) { 19 | return 10; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /17_constraintlayout/src/main/java/com/hencoder/a19_constraintlayout/FlowActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hencoder.a19_constraintlayout 2 | 3 | import androidx.appcompat.app.AppCompatActivity 4 | import android.os.Bundle 5 | import android.view.View 6 | import androidx.constraintlayout.helper.widget.Flow 7 | import androidx.constraintlayout.helper.widget.Flow.VERTICAL 8 | import androidx.constraintlayout.helper.widget.Flow.WRAP_NONE 9 | 10 | class FlowActivity : AppCompatActivity() { 11 | 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | setContentView(R.layout.activity_flow) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /22_thread_interaction/src/main/java/com/hencoder/a22_thread_interaction/Main.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a22_thread_interaction; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | runThreadInteractionDemo(); 6 | // runWaitDemo(); 7 | // runCustomizableThreadDemo(); 8 | } 9 | 10 | static void runThreadInteractionDemo() { 11 | new ThreadInteractionDemo().runTest(); 12 | } 13 | 14 | static void runWaitDemo() { 15 | new WaitDemo().runTest(); 16 | 17 | } 18 | 19 | static void runCustomizableThreadDemo() { 20 | new CustomizableThreadDemo().runTest(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /25_gradle/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | jcenter() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.0-beta04' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | } 22 | } 23 | 24 | task clean(type: Delete) { 25 | delete rootProject.buildDir 26 | } -------------------------------------------------------------------------------- /07_kotlin_base/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android-extensions' 3 | apply plugin: 'kotlin-android' 4 | 5 | 6 | android { 7 | compileSdkVersion 28 8 | defaultConfig { 9 | minSdkVersion 24 10 | targetSdkVersion 28 11 | } 12 | } 13 | 14 | dependencies { 15 | api fileTree(dir: 'libs', include: ['*.jar']) 16 | api 'androidx.appcompat:appcompat:1.0.0-beta01' 17 | 18 | api "com.google.code.gson:gson:2.8.5" 19 | api 'com.squareup.okhttp3:okhttp:3.9.0' 20 | api 'androidx.recyclerview:recyclerview:1.0.0' 21 | api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 22 | } 23 | -------------------------------------------------------------------------------- /18_motionlayout/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Transition Framework 3 | 4 | 黑客帝国 The Matrix (1999) 5 | \n类型: 动作 / 科幻 6 | \n语言: 英语 7 | \n上映日期: 1999-03-31(美国) 8 | \n片长: 136分钟 9 | 电影简介 10 | 11 | 不久的将来,网络黑客尼奥(基奴李维斯 饰)对这个看似正常的现实世界产生了怀疑。他结识了黑客崔妮蒂(凯莉·安·摩丝 饰),并见到了黑客组织的首领墨菲斯(劳伦斯·菲什伯恩 饰)。墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 12 |   \n可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何才能打败那些超人一样的特勤?尼奥是不是人类的希望?这是黑客的帝国,程序和代码欢迎大家的到来。 13 | 14 | -------------------------------------------------------------------------------- /14_touch/src/main/java/com/hencoder/a14_touch/view/TouchView.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a14_touch.view; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.MotionEvent; 6 | import android.view.View; 7 | 8 | import androidx.annotation.Nullable; 9 | 10 | public class TouchView extends View { 11 | public TouchView(Context context, @Nullable AttributeSet attrs) { 12 | super(context, attrs); 13 | } 14 | 15 | @Override 16 | public boolean onTouchEvent(MotionEvent event) { 17 | if (event.getActionMasked() == MotionEvent.ACTION_UP) { 18 | performClick(); 19 | } 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /18_motionlayout_example/src/main/java/com/example/youtube/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.youtube 2 | 3 | import android.content.Intent 4 | import androidx.appcompat.app.AppCompatActivity 5 | import android.os.Bundle 6 | import android.view.View 7 | import android.widget.Button 8 | 9 | class MainActivity : AppCompatActivity() { 10 | 11 | override fun onCreate(savedInstanceState: Bundle?) { 12 | super.onCreate(savedInstanceState) 13 | setContentView(R.layout.activity_main) 14 | } 15 | 16 | fun onClick(view: View) { 17 | val target = "com.example.youtube.${(view as Button).text}" 18 | startActivity(Intent(this, Class.forName(target))) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /26_gradle_plugin/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.0-beta04' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /22_thread_interaction/src/main/java/com/hencoder/a22_thread_interaction/CustomizableThreadDemo.java: -------------------------------------------------------------------------------- 1 | package com.hencoder.a22_thread_interaction; 2 | 3 | public class CustomizableThreadDemo implements TestDemo { 4 | private CustomizableThread thread = new CustomizableThread(); 5 | 6 | @Override 7 | public void runTest() { 8 | thread.start(); 9 | try { 10 | Thread.sleep(2000); 11 | } catch (InterruptedException e) { 12 | e.printStackTrace(); 13 | } 14 | } 15 | 16 | class CustomizableThread extends Thread { 17 | @Override 18 | public void run() { 19 | while (true) { 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /26_gradle_plugin/buildSrc/src/main/groovy/com/hencoder/plugin/HenCoder.groovy: -------------------------------------------------------------------------------- 1 | package com.hencoder.plugin 2 | 3 | import com.android.build.gradle.BaseExtension 4 | import org.gradle.api.Plugin 5 | import org.gradle.api.Project 6 | 7 | class HenCoder implements Plugin { 8 | @Override 9 | void apply(Project project) { 10 | def extension = project.extensions.create('hencoder', HenCoderExtension) 11 | project.afterEvaluate { 12 | println "Hi ${extension.name}" 13 | } 14 | def transform = new HenCoderTransform() 15 | def baseExtension = project.extensions.getByType(BaseExtension) 16 | baseExtension.registerTransform(transform) 17 | } 18 | } 19 | --------------------------------------------------------------------------------