├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ │ ├── strings.xml
│ │ │ │ ├── styles.xml
│ │ │ │ └── dimens.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ ├── menu
│ │ │ │ └── menu_main.xml
│ │ │ └── layout
│ │ │ │ ├── activity_inject.xml
│ │ │ │ ├── activity_network.xml
│ │ │ │ └── activity_main.xml
│ │ ├── kotlin
│ │ │ └── com.wangjie.kotlinexample
│ │ │ │ └── ui
│ │ │ │ ├── base
│ │ │ │ ├── BaseActivityExt.kt
│ │ │ │ └── BaseActivity.kt
│ │ │ │ ├── inject
│ │ │ │ ├── InjectWithKotlinActivity.kt
│ │ │ │ └── InjectWithAIActivity.kt
│ │ │ │ ├── main
│ │ │ │ └── MainActivity.kt
│ │ │ │ └── network
│ │ │ │ ├── NetWorkExt.kt
│ │ │ │ └── NetWorkActivity.kt
│ │ └── AndroidManifest.xml
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── wangjie
│ │ └── kotlinexample
│ │ └── ApplicationTest.java
├── proguard-rules.pro
└── build.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitignore
├── README.md
├── gradlew.bat
├── gradlew
└── LICENSE
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangjiegulu/KotlinAndroidSample/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangjiegulu/KotlinAndroidSample/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangjiegulu/KotlinAndroidSample/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangjiegulu/KotlinAndroidSample/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangjiegulu/KotlinAndroidSample/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | KotlinExample
3 |
4 | Hello world!
5 | Settings
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/com.wangjie.kotlinexample/ui/base/BaseActivityExt.kt:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample.ui.base
2 |
3 | import android.view.View
4 |
5 | /**
6 | * Author: wangjie
7 | * Email: tiantian.china.2@gmail.com
8 | * Date: 9/22/15.
9 | */
10 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Apr 10 15:27:10 PDT 2013
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-2.2.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/com.wangjie.kotlinexample/ui/base/BaseActivity.kt:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample.ui.base
2 |
3 | import com.wangjie.androidinject.annotation.present.AIAppCompatActivity
4 |
5 | /**
6 | * Author: wangjie
7 | * Email: tiantian.china.2@gmail.com
8 | * Date: 9/22/15.
9 | */
10 | public open class BaseActivity : AIAppCompatActivity()
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/wangjie/kotlinexample/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | /build
7 | settings.gradle
8 | gradle.properties
9 | /*/*.iml
10 |
11 |
12 | # Built application files
13 | *.apk
14 | *.ap_
15 |
16 | # Files for the Dalvik VM
17 | *.dex
18 |
19 | # Java class files
20 | *.class
21 |
22 | # Generated files
23 | bin/
24 | gen/
25 |
26 | # Gradle files
27 | .gradle/
28 | build/
29 | /*/build/
30 |
31 | # Local configuration file (sdk path, etc)
32 | local.properties
33 |
34 | # Proguard folder generated by Eclipse
35 | proguard/
36 |
37 | # Log Files
38 | *.log
39 | .idea/
40 | *.iml
41 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/wangjie/work/java/android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_inject.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_network.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
16 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/com.wangjie.kotlinexample/ui/inject/InjectWithKotlinActivity.kt:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample.ui.inject
2 |
3 | import android.os.Bundle
4 | import android.view.View
5 | import android.widget.TextView
6 | import com.wangjie.kotlinexample.R
7 | import com.wangjie.kotlinexample.ui.base.BaseActivity
8 | import org.jetbrains.anko.find
9 | import org.jetbrains.anko.toast
10 | import kotlin.reflect.jvm.java
11 |
12 | /**
13 | * Annotation for inject view
14 | */
15 | annotation class KView(var resId: Int)
16 |
17 | /**
18 | * Android inject view with Kotlin annotations
19 | * Author: wangjie
20 | * Email: tiantian.china.2@gmail.com
21 | * Date: 9/22/15.
22 | */
23 | public class InjectWithKotlinActivity : BaseActivity() {
24 |
25 | @KView(R.id.activity_inject_tv)
26 | private var tv: TextView? = null;
27 |
28 | override fun onCreate(savedInstanceState: Bundle?) {
29 | super.onCreate(savedInstanceState)
30 | setContentView(R.layout.activity_inject)
31 |
32 | var field: java.lang.reflect.Field = InjectWithKotlinActivity::class.java.getDeclaredField("tv");
33 | var v: KView = field.getAnnotation(javaClass())
34 | field.set(this, find(v.resId))
35 |
36 | tv?.setText("TextView inject succeed")
37 | }
38 |
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/com.wangjie.kotlinexample/ui/inject/InjectWithAIActivity.kt:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample.ui.inject;
2 |
3 | import android.os.Bundle
4 | import android.view.View
5 | import android.widget.TextView
6 | import com.wangjie.androidinject.annotation.annotations.base.AIClick
7 | import com.wangjie.androidinject.annotation.annotations.base.AILayout
8 | import com.wangjie.androidinject.annotation.annotations.base.AIView
9 | import com.wangjie.kotlinexample.R
10 | import com.wangjie.kotlinexample.ui.base.BaseActivity
11 | import org.jetbrains.anko.toast
12 |
13 | /**
14 | * Android inject views & Events with AndroidInject library (https://github.com/wangjiegulu/androidInject)
15 | *
16 | * Author: wangjie
17 | * Email: tiantian.china.2@gmail.com
18 | * Date: 9/22/15.
19 | */
20 | @AILayout(R.layout.activity_inject)
21 | public class InjectWithAIActivity : BaseActivity(){
22 | @AIView(R.id.activity_inject_tv)
23 | private var tv: TextView? = null;
24 |
25 | override fun onCreate(savedInstanceState: Bundle?) {
26 | super.onCreate(savedInstanceState)
27 |
28 | tv?.setText("TextView inject succeed")
29 | }
30 |
31 | @AIClick(R.id.activity_inject_btn)
32 | public fun onClick(view: View){
33 | when(view.getId()){
34 | R.id.activity_inject_btn -> toast("clicked, button inject succeed!")
35 | }
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '0.12.1230'
3 | repositories {
4 | jcenter()
5 | }
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:1.1.1'
8 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
9 | classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
10 | }
11 | }
12 | apply plugin: 'com.android.application'
13 | apply plugin: 'kotlin-android'
14 |
15 | repositories {
16 | jcenter()
17 | }
18 |
19 | android {
20 | compileSdkVersion 22
21 | buildToolsVersion "22.0.1"
22 |
23 | defaultConfig {
24 | applicationId "com.wangjie.kotlinexample"
25 | minSdkVersion 9
26 | targetSdkVersion 22
27 | versionCode 1
28 | versionName "1.0"
29 | }
30 |
31 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | buildTypes {
36 | release {
37 | minifyEnabled false
38 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
39 | }
40 | }
41 | }
42 |
43 | dependencies {
44 | compile fileTree(dir: 'libs', include: ['*.jar'])
45 | compile 'com.android.support:appcompat-v7:22.2.0'
46 |
47 | compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
48 | compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
49 |
50 | compile 'org.jetbrains.anko:anko:0.6.3-15'
51 |
52 | compile 'com.squareup.okhttp:okhttp:2.4.0'
53 |
54 | compile 'io.reactivex:rxjava:1.0.12'
55 | compile 'io.reactivex:rxandroid:0.24.0'
56 |
57 | compile 'com.github.wangjiegulu:AndroidBucket:1.0.4'
58 | compile 'com.github.wangjiegulu:AndroidInject:1.0.6'
59 |
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
11 |
14 |
22 |
23 |
29 |
30 |
36 |
37 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/com.wangjie.kotlinexample/ui/main/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.wangjie.kotlinexample.ui.main
2 |
3 | import android.content.Intent
4 | import android.os.Bundle
5 | import android.view.Menu
6 | import android.view.MenuItem
7 | import android.view.View
8 | import android.widget.Button
9 | import com.wangjie.kotlinexample.R
10 | import com.wangjie.kotlinexample.ui.base.BaseActivity
11 | import com.wangjie.kotlinexample.ui.inject.InjectWithAIActivity
12 | import com.wangjie.kotlinexample.ui.inject.InjectWithKotlinActivity
13 | import com.wangjie.kotlinexample.ui.network.NetWorkActivity
14 | import org.jetbrains.anko.find
15 |
16 | public class MainActivity : BaseActivity() {
17 |
18 | override fun onCreate(savedInstanceState: Bundle?) {
19 | super.onCreate(savedInstanceState)
20 | setContentView(R.layout.activity_main)
21 |
22 | find