├── .gitignore ├── MVPAndroid ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── mvpandroid │ │ │ ├── BaseActivity.kt │ │ │ ├── MainActivity.kt │ │ │ ├── m │ │ │ └── User.kt │ │ │ ├── p │ │ │ └── IPresenter.kt │ │ │ └── v │ │ │ └── IView.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project1 ├── .gitignore └── src │ └── com │ └── kymjs │ └── kotlinprimer │ ├── A.java │ ├── AInterface.java │ └── Test.kt ├── Project10 ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs │ └── benchmarks-0.1.0-alpha-2-sources.jar ├── settings.gradle └── src │ └── main │ └── kotlin │ └── com │ └── kymjs │ └── kotlinprimer │ ├── FileUtils.java │ └── Main.kt ├── Project11 ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── project11 │ │ │ ├── DemoActivity.kt │ │ │ ├── DemoAdapter.kt │ │ │ ├── MainActivity.kt │ │ │ └── RecycleBin.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_demo.xml │ │ ├── activity_main.xml │ │ ├── item.xml │ │ └── list_item.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project12 ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── project12 │ │ │ └── MainActivity.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project13 ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── project13 │ │ │ ├── MainActivity.kt │ │ │ ├── unit1 │ │ │ ├── JavaCode.java │ │ │ ├── KotlinCode.kt │ │ │ └── KotlinCode2.kt │ │ │ ├── unit2 │ │ │ ├── ActivityManagerHook.kt │ │ │ └── JavaCode.java │ │ │ ├── unit3 │ │ │ ├── CoroutineUtils.kt │ │ │ └── JavaCode.java │ │ │ └── unit4 │ │ │ └── KotlinCode.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project2 ├── .gitignore └── src │ ├── com │ └── kymjs │ │ └── project2 │ │ ├── unit0 │ │ └── Main.kt │ │ ├── unit1 │ │ ├── Main.kt │ │ └── java │ │ │ └── Main.java │ │ ├── unit2 │ │ ├── Java.java │ │ └── Main.kt │ │ ├── unit3 │ │ └── LambdaTest.kt │ │ └── unit4 │ │ └── HighLambda.kt │ └── kotlin │ └── Function23.java ├── Project3 ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── project3 │ │ │ ├── MainActivity.kt │ │ │ ├── unit1 │ │ │ └── TestView.kt │ │ │ ├── unit2 │ │ │ ├── CompTest.java │ │ │ └── Single.kt │ │ │ ├── unit3 │ │ │ └── By.kt │ │ │ ├── unit4 │ │ │ └── User.kt │ │ │ ├── unit5 │ │ │ ├── Command.kt │ │ │ ├── Main.java │ │ │ └── TestEnum.java │ │ │ └── unit6 │ │ │ ├── KotlinSDK.kt │ │ │ ├── PlayerView.kt │ │ │ └── PlayerViewType.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── raw │ │ └── canon.mp3 │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project4 ├── .gitignore └── src │ └── com │ └── kymjs │ └── project4 │ └── unit6 │ ├── BluePlayerView.kt │ ├── Main.kt │ ├── PlayerUI.kt │ ├── PlayerView.kt │ ├── PlayerViewType.kt │ ├── User.kt │ └── VIPPlayer.kt ├── Project5 ├── .gitignore └── src │ └── com │ └── kymjs │ └── project2 │ ├── unit1 │ ├── Main.kt │ └── java │ │ ├── ITimePrinter.java │ │ └── Main.java │ └── unit2 │ └── Main.kt ├── Project6 ├── a.html ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle ├── src │ └── main │ │ └── kotlin │ │ └── com │ │ └── kymjs │ │ └── kotlinprimer │ │ ├── unit1 │ │ ├── KotlinMain.kt │ │ └── User.kt │ │ ├── unit2 │ │ ├── JavaRx.java │ │ ├── Loop.kt │ │ └── Operator.kt │ │ ├── unit3 │ │ └── Main.kt │ │ ├── unit4 │ │ ├── InfixDemo.kt │ │ └── OperatorOverwrite.kt │ │ ├── unit5 │ │ ├── Equal.kt │ │ ├── JavaEqual.java │ │ └── Main.kt │ │ ├── unit6 │ │ └── HtmlDSL.kt │ │ ├── unit7 │ │ ├── HtmlDSL.kt │ │ └── Main.kt │ │ └── unit8 │ │ └── KotlinMain.kt └── test.html ├── Project7 ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ └── main │ └── kotlin │ └── com │ └── kymjs │ └── kotlinprimer │ ├── unit1 │ └── LambdaReturnDemo.kt │ ├── unit2 │ ├── FieldDemo.kt │ ├── Main.kt │ └── Person.kt │ ├── unit3 │ ├── GenericDemo.kt │ └── ReifiedGenericDemo.kt │ └── unit4 │ ├── JavaMain.kt │ └── Nullable.kt ├── Project8 ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── kymjs │ │ │ └── project8 │ │ │ ├── AndroidCommonPool.kt │ │ │ ├── Dashboard.java │ │ │ ├── JavaActivity.java │ │ │ ├── LaunchCoroutine.kt │ │ │ ├── MainActivity.kt │ │ │ ├── ThreadTest.kt │ │ │ └── eventbus │ │ │ └── EventBus.kt │ │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── Project9 ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ └── main │ └── kotlin │ └── com │ └── kymjs │ └── kotlinprimer │ ├── BuildSequenceTest.kt │ ├── ChannelTest1.kt │ ├── ChannelTest2.kt │ ├── buildSequence.kt │ └── launch.kt ├── README.md ├── kotlinjs ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── index.html ├── settings.gradle └── src │ └── main │ └── kotlin │ └── Main.kt ├── servletdemo ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ └── main │ └── kotlin │ └── com │ └── kymjs │ └── Main.kt ├── spring-demo ├── .gitignore ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── kymjs │ │ │ └── springdemo │ │ │ └── SpringDemoApplication.kt │ └── resources │ │ └── application.properties │ └── test │ └── kotlin │ └── com │ └── kymjs │ └── springdemo │ └── SpringDemoApplicationTests.kt └── 极客时间kotlin视频PPT.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | tomsuite.xml 2 | **pom.xml.releaseBackup 3 | release.properties 4 | gen 5 | */seed.txt 6 | notes 7 | logs 8 | gen-external-apklibs 9 | .idea 10 | *.iml 11 | .DS_Store 12 | *.swp 13 | out 14 | .gradle 15 | /local.properties 16 | /build 17 | 18 | ###OSX### 19 | 20 | .DS_Store 21 | .AppleDouble 22 | .LSOverride 23 | 24 | # Icon must ends with two \r. 25 | Icon 26 | 27 | 28 | # Thumbnails 29 | ._* 30 | 31 | # Files that might appear on external disk 32 | .Spotlight-V100 33 | .Trashes 34 | 35 | 36 | ###Linux### 37 | 38 | *~ 39 | 40 | # KDE directory preferences 41 | .directory 42 | 43 | 44 | ###Android### 45 | 46 | # Built application files 47 | *.apk 48 | *.ap_ 49 | 50 | # Files for ART and Dalvik VM 51 | *.dex 52 | 53 | # Java class files 54 | *.class 55 | 56 | # Generated files 57 | gen/ 58 | 59 | # Gradle files 60 | .gradle/ 61 | .gradletasknamecache 62 | build/ 63 | 64 | # Local configuration file (sdk path, etc) 65 | local.properties 66 | 67 | # Proguard folder generated by Eclipse 68 | proguard/ 69 | 70 | # Lint 71 | lint-report.html 72 | lint-report_files/ 73 | lint_result.txt 74 | 75 | # Mobile Tools for Java (J2ME) 76 | .mtj.tmp/ 77 | 78 | # Package Files # 79 | *.war 80 | *.ear 81 | 82 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 83 | hs_err_pid* 84 | 85 | 86 | ###IntelliJ### 87 | 88 | *.iml 89 | *.ipr 90 | *.iws 91 | .idea/ 92 | 93 | 94 | ###Eclipse### 95 | 96 | *.pydevproject 97 | .metadata 98 | tmp/ 99 | *.tmp 100 | *.bak 101 | *.swp 102 | *~.nib 103 | .settings/ 104 | .loadpath 105 | 106 | # External tool builders 107 | .externalToolBuilders/ 108 | 109 | # Locally stored "Eclipse launch configurations" 110 | *.launch 111 | 112 | # CDT-specific 113 | .cproject 114 | 115 | # PDT-specific 116 | .buildpath 117 | 118 | # sbteclipse plugin 119 | .target 120 | 121 | # TeXlipse plugin 122 | .texlipseXml version="1.0" encoding="UTF-8"?>captures 123 | -------------------------------------------------------------------------------- /MVPAndroid/.gitignore: -------------------------------------------------------------------------------- 1 | tomsuite.xml 2 | **pom.xml.releaseBackup 3 | release.properties 4 | gen 5 | */seed.txt 6 | notes 7 | logs 8 | gen-external-apklibs 9 | .idea 10 | *.iml 11 | .DS_Store 12 | *.swp 13 | out 14 | .gradle 15 | /local.properties 16 | /build 17 | 18 | ###OSX### 19 | 20 | .DS_Store 21 | .AppleDouble 22 | .LSOverride 23 | 24 | # Icon must ends with two \r. 25 | Icon 26 | 27 | 28 | # Thumbnails 29 | ._* 30 | 31 | # Files that might appear on external disk 32 | .Spotlight-V100 33 | .Trashes 34 | 35 | 36 | ###Linux### 37 | 38 | *~ 39 | 40 | # KDE directory preferences 41 | .directory 42 | 43 | 44 | ###Android### 45 | 46 | # Built application files 47 | *.apk 48 | *.ap_ 49 | 50 | # Files for ART and Dalvik VM 51 | *.dex 52 | 53 | # Java class files 54 | *.class 55 | 56 | # Generated files 57 | bin/ 58 | gen/ 59 | 60 | # Gradle files 61 | .gradle/ 62 | .gradletasknamecache 63 | build/ 64 | 65 | # Local configuration file (sdk path, etc) 66 | local.properties 67 | 68 | # Proguard folder generated by Eclipse 69 | proguard/ 70 | 71 | # Lint 72 | lint-report.html 73 | lint-report_files/ 74 | lint_result.txt 75 | 76 | # Mobile Tools for Java (J2ME) 77 | .mtj.tmp/ 78 | 79 | # Package Files # 80 | *.war 81 | *.ear 82 | 83 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 84 | hs_err_pid* 85 | 86 | 87 | ###IntelliJ### 88 | 89 | *.iml 90 | *.ipr 91 | *.iws 92 | .idea/ 93 | 94 | 95 | ###Eclipse### 96 | 97 | *.pydevproject 98 | .metadata 99 | tmp/ 100 | *.tmp 101 | *.bak 102 | *.swp 103 | *~.nib 104 | .settings/ 105 | .loadpath 106 | 107 | # External tool builders 108 | .externalToolBuilders/ 109 | 110 | # Locally stored "Eclipse launch configurations" 111 | *.launch 112 | 113 | # CDT-specific 114 | .cproject 115 | 116 | # PDT-specific 117 | .buildpath 118 | 119 | # sbteclipse plugin 120 | .target 121 | 122 | # TeXlipse plugin 123 | .texlipseXml version="1.0" encoding="UTF-8"?>captures 124 | -------------------------------------------------------------------------------- /MVPAndroid/app/.gitignore: -------------------------------------------------------------------------------- 1 | tomsuite.xml 2 | **pom.xml.releaseBackup 3 | release.properties 4 | gen 5 | */seed.txt 6 | notes 7 | logs 8 | gen-external-apklibs 9 | .idea 10 | *.iml 11 | .DS_Store 12 | *.swp 13 | out 14 | .gradle 15 | /local.properties 16 | /build 17 | 18 | ###OSX### 19 | 20 | .DS_Store 21 | .AppleDouble 22 | .LSOverride 23 | 24 | # Icon must ends with two \r. 25 | Icon 26 | 27 | 28 | # Thumbnails 29 | ._* 30 | 31 | # Files that might appear on external disk 32 | .Spotlight-V100 33 | .Trashes 34 | 35 | 36 | ###Linux### 37 | 38 | *~ 39 | 40 | # KDE directory preferences 41 | .directory 42 | 43 | 44 | ###Android### 45 | 46 | # Built application files 47 | *.apk 48 | *.ap_ 49 | 50 | # Files for ART and Dalvik VM 51 | *.dex 52 | 53 | # Java class files 54 | *.class 55 | 56 | # Generated files 57 | bin/ 58 | gen/ 59 | 60 | # Gradle files 61 | .gradle/ 62 | .gradletasknamecache 63 | build/ 64 | 65 | # Local configuration file (sdk path, etc) 66 | local.properties 67 | 68 | # Proguard folder generated by Eclipse 69 | proguard/ 70 | 71 | # Lint 72 | lint-report.html 73 | lint-report_files/ 74 | lint_result.txt 75 | 76 | # Mobile Tools for Java (J2ME) 77 | .mtj.tmp/ 78 | 79 | # Package Files # 80 | *.war 81 | *.ear 82 | 83 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 84 | hs_err_pid* 85 | 86 | 87 | ###IntelliJ### 88 | 89 | *.iml 90 | *.ipr 91 | *.iws 92 | .idea/ 93 | 94 | 95 | ###Eclipse### 96 | 97 | *.pydevproject 98 | .metadata 99 | tmp/ 100 | *.tmp 101 | *.bak 102 | *.swp 103 | *~.nib 104 | .settings/ 105 | .loadpath 106 | 107 | # External tool builders 108 | .externalToolBuilders/ 109 | 110 | # Locally stored "Eclipse launch configurations" 111 | *.launch 112 | 113 | # CDT-specific 114 | .cproject 115 | 116 | # PDT-specific 117 | .buildpath 118 | 119 | # sbteclipse plugin 120 | .target 121 | 122 | # TeXlipse plugin 123 | .texlipseXml version="1.0" encoding="UTF-8"?>captures 124 | -------------------------------------------------------------------------------- /MVPAndroid/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | apply plugin: 'kotlin-android' 4 | 5 | apply plugin: 'kotlin-android-extensions' 6 | 7 | android { 8 | compileSdkVersion 28 9 | defaultConfig { 10 | applicationId "com.kymjs.mvpandroid" 11 | minSdkVersion 23 12 | targetSdkVersion 28 13 | versionCode 1 14 | versionName "1.0" 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | } 23 | 24 | dependencies { 25 | implementation fileTree(dir: 'libs', include: ['*.jar']) 26 | implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 27 | implementation 'com.android.support:appcompat-v7:28.+' 28 | } 29 | -------------------------------------------------------------------------------- /MVPAndroid/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /MVPAndroid/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /MVPAndroid/app/src/main/java/com/kymjs/mvpandroid/BaseActivity.kt: -------------------------------------------------------------------------------- 1 | package com.kymjs.mvpandroid 2 | 3 | import android.support.v7.app.AppCompatActivity 4 | 5 | open class BaseActivity(val clazz: Class) : AppCompatActivity() { 6 | val presenter by lazy { clazz.newInstance() } 7 | 8 | companion object { 9 | inline operator fun invoke() = BaseActivity(T::class.java) 10 | } 11 | } -------------------------------------------------------------------------------- /MVPAndroid/app/src/main/java/com/kymjs/mvpandroid/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.kymjs.mvpandroid 2 | 3 | import android.support.v7.app.AppCompatActivity 4 | import android.os.Bundle 5 | import android.widget.Button 6 | import com.kymjs.mvpandroid.m.User 7 | import com.kymjs.mvpandroid.p.IPresenter 8 | import com.kymjs.mvpandroid.v.IView 9 | 10 | class MainActivity : AppCompatActivity(), IView by MVPView() { 11 | 12 | inline fun getPresenter(): T { 13 | return T::class.java.newInstance() 14 | } 15 | 16 | //class MainActivity : AppCompatActivity(), 17 | // IView by MVPView(), IPresenter by EmptyPresenter() { 18 | 19 | override fun onCreate(savedInstanceState: Bundle?) { 20 | super.onCreate(savedInstanceState) 21 | setContentView(getLayoutID()) 22 | 23 | findViewById