From 56bd0e47127e0142b1dab80245c00b950ae958d7 Mon Sep 17 00:00:00 2001 From: lambert Date: Fri, 23 Aug 2019 17:54:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0kotlin=E4=B8=8Ejava=E6=B7=B7?= =?UTF-8?q?=E5=90=88=E5=BC=80=E5=8F=91=E6=94=AF=E6=8C=81=EF=BC=9BMotionLay?= =?UTF-8?q?out=E5=8A=A8=E4=BD=9C=E5=B8=83=E5=B1=80=E7=BB=83=E4=B9=A0Demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 16 +- base/build.gradle | 21 +- .../base/assist/ConfigConstants.java | 1 + build.gradle | 1 + config.gradle | 3 + main/build.gradle | 17 +- module/build.gradle | 17 +- module2/build.gradle | 17 +- network/build.gradle | 3 + user/build.gradle | 17 +- user/src/main/AndroidManifest.xml | 5 +- user/src/main/debug/AndroidManifest.xml | 3 + .../java/com/heyongrui/user/KotlinActivity.kt | 52 ++++ .../java/com/heyongrui/user/UserFragment.java | 13 +- user/src/main/res/layout/activity_kotlin.xml | 28 ++ user/src/main/res/layout/activity_user.xml | 3 +- user/src/main/res/xml/motion_scene_kotlin.xml | 246 ++++++++++++++++++ 17 files changed, 428 insertions(+), 35 deletions(-) create mode 100644 user/src/main/java/com/heyongrui/user/KotlinActivity.kt create mode 100644 user/src/main/res/layout/activity_kotlin.xml create mode 100644 user/src/main/res/xml/motion_scene_kotlin.xml diff --git a/app/build.gradle b/app/build.gradle index 49618bb..22dbeb5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,8 @@ apply plugin: 'com.android.application' apply plugin: 'walle' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk @@ -13,11 +16,16 @@ android { multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -82,7 +90,7 @@ dependencies { //美团walle打包 implementation "com.meituan.android.walle:library:${versions.walle}" //Arouter路由 - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' diff --git a/base/build.gradle b/base/build.gradle index 465cafa..5a26d46 100644 --- a/base/build.gradle +++ b/base/build.gradle @@ -1,4 +1,7 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk @@ -10,11 +13,16 @@ android { versionName versions.publishVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -60,11 +68,15 @@ dependencies { api "com.android.support:design:${versions.supportVersion}" api "androidx.appcompat:appcompat:${versions.androidx}" api "androidx.constraintlayout:constraintlayout:${versions.constraintLayout}" + //kotlin支持 + api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlinVersion}" + api "androidx.core:core-ktx:${versions.coreKtx}" //管理Fragment和Activity api "me.yokeyword:fragmentationx:${versions.fragmentationx}" //Arouter路由 + api "com.alibaba:arouter-annotation:${versions.arouterAnnotation}" api "com.alibaba:arouter-api:${versions.arouterApi}" - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" //解决dex超出方法数限制的问题 api "com.android.support:multidex:${versions.multidex}" //工具类 @@ -82,6 +94,7 @@ dependencies { api "com.github.bumptech.glide:glide:${versions.glide}" annotationProcessor "androidx.annotation:annotation:${versions.androidxAnnotation}" annotationProcessor "com.github.bumptech.glide:compiler:${versions.glide}" + kapt "com.github.bumptech.glide:compiler:${versions.glide}" //状态栏管理 api "com.gyf.immersionbar:immersionbar:${versions.immersionbar}" api "com.gyf.immersionbar:immersionbar-components:${versions.immersionbar}" diff --git a/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java b/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java index fda246a..20c113f 100644 --- a/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java +++ b/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java @@ -22,6 +22,7 @@ public class ConfigConstants { public static final String PATH_MAIN = "/main/activity"; public static final String PATH_HOME_PROVIDER = "/home/main/service"; //user模块路由路径 + public static final String PATH_KOTLIN = "/user/kotlin"; public static final String PATH_LOGIN = "/user/login"; public static final String PATH_USER = "/user/activity"; public static final String PATH_USER_PROVIDER = "/user/main/service"; diff --git a/build.gradle b/build.gradle index d945173..7edfb0c 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ buildscript { classpath 'com.android.tools.build:gradle:' + versions.gradlePlugin classpath 'com.meituan.android.walle:plugin:' + versions.walle classpath 'com.alibaba:arouter-register:' + versions.arouterRegister + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:" + versions.kotlinVersion // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/config.gradle b/config.gradle index 402cba5..00f5046 100644 --- a/config.gradle +++ b/config.gradle @@ -15,6 +15,8 @@ ext { //Plugins gradlePlugin : '3.4.1', + kotlinVersion : '1.3.50', + coreKtx : '1.0.2', //Library androidx : '1.1.0-rc01', @@ -23,6 +25,7 @@ ext { multidex : '1.0.3', walle : '1.1.6', arouterApi : '1.5.0', + arouterAnnotation : '1.0.6', arouterCompiler : '1.2.2', arouterRegister : '1.0.2', retrofit : '2.6.1', diff --git a/main/build.gradle b/main/build.gradle index dfc2a0c..79088d6 100644 --- a/main/build.gradle +++ b/main/build.gradle @@ -3,6 +3,10 @@ if (rootProject.ext.isRunAloneHome) { } else { apply plugin: 'com.android.library' } +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' + android { compileSdkVersion versions.compileSdk @@ -16,11 +20,16 @@ android { versionName versions.publishVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -82,7 +91,7 @@ dependencies { implementation project(':base') implementation project(':network') //Arouter路由 - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" implementation "com.aurelhubert:ahbottomnavigation:${versions.ahbottomnavigation}" testImplementation 'junit:junit:4.12' diff --git a/module/build.gradle b/module/build.gradle index b77537e..e212776 100644 --- a/module/build.gradle +++ b/module/build.gradle @@ -3,6 +3,9 @@ if (rootProject.ext.isRunAloneModule) { } else { apply plugin: 'com.android.library' } +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk @@ -17,12 +20,16 @@ android { versionName versions.publishVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -85,7 +92,7 @@ dependencies { implementation project(':base') implementation project(':network') //Arouter路由 - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" //视频框架 implementation "cn.jzvd:jiaozivideoplayer:${versions.jiaozivideoplayer}" diff --git a/module2/build.gradle b/module2/build.gradle index 0cf1764..75feab3 100644 --- a/module2/build.gradle +++ b/module2/build.gradle @@ -3,6 +3,9 @@ if (rootProject.ext.isRunAloneModule2) { } else { apply plugin: 'com.android.library' } +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk @@ -17,12 +20,16 @@ android { versionName versions.publishVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -84,7 +91,7 @@ dependencies { implementation project(':base') implementation project(':network') //Arouter路由 - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' diff --git a/network/build.gradle b/network/build.gradle index 804ecef..fb69a5d 100644 --- a/network/build.gradle +++ b/network/build.gradle @@ -1,4 +1,7 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk diff --git a/user/build.gradle b/user/build.gradle index 6d7aad7..83299ab 100644 --- a/user/build.gradle +++ b/user/build.gradle @@ -3,6 +3,9 @@ if (rootProject.ext.isRunAloneUser) { } else { apply plugin: 'com.android.library' } +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion versions.compileSdk @@ -17,12 +20,16 @@ android { versionName versions.publishVersion testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) } } +// javaCompileOptions { +// annotationProcessorOptions { +// arguments = [AROUTER_MODULE_NAME: project.getName()] +// } +// } } signingConfigs { @@ -85,7 +92,7 @@ dependencies { implementation project(':base') implementation project(':network') //Arouter路由 - annotationProcessor "com.alibaba:arouter-compiler:${versions.arouterCompiler}" + kapt "com.alibaba:arouter-compiler:${versions.arouterCompiler}" //3D球形控件 implementation "com.moxun:tagcloudlib:${versions.tagcloudlib}" diff --git a/user/src/main/AndroidManifest.xml b/user/src/main/AndroidManifest.xml index fc2070f..8df7509 100644 --- a/user/src/main/AndroidManifest.xml +++ b/user/src/main/AndroidManifest.xml @@ -4,10 +4,13 @@ + android:theme="@style/BaseAppTheme" /> + diff --git a/user/src/main/debug/AndroidManifest.xml b/user/src/main/debug/AndroidManifest.xml index 53e3149..bc88b71 100644 --- a/user/src/main/debug/AndroidManifest.xml +++ b/user/src/main/debug/AndroidManifest.xml @@ -24,6 +24,9 @@ + diff --git a/user/src/main/java/com/heyongrui/user/KotlinActivity.kt b/user/src/main/java/com/heyongrui/user/KotlinActivity.kt new file mode 100644 index 0000000..be2ae80 --- /dev/null +++ b/user/src/main/java/com/heyongrui/user/KotlinActivity.kt @@ -0,0 +1,52 @@ +package com.heyongrui.user + +import android.os.Bundle +import android.view.View +import android.widget.ImageView +import com.alibaba.android.arouter.facade.annotation.Route +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.request.RequestOptions +import com.heyongrui.base.assist.ConfigConstants +import com.heyongrui.base.base.BaseActivity +import com.heyongrui.base.base.BasePresenter +import com.heyongrui.base.base.BaseView +import com.heyongrui.base.glide.GlideApp +import kotlinx.android.synthetic.main.activity_kotlin.* + +@Route(path = ConfigConstants.PATH_KOTLIN) +class KotlinActivity>?> : BaseActivity(), View.OnClickListener { + + var currentState = -1; + + override fun getLayoutId(): Int { + return R.layout.activity_kotlin; + } + + override fun init(savedInstanceState: Bundle?) { + bg.setOnClickListener(this); + iv.loadCircle("https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2551393832.jpg") + iv2.loadCircle("https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2563780504.jpg") + } + + fun ImageView.loadCircle(resource: Any) { + val options = RequestOptions() + .dontAnimate() + .fitCenter() + .circleCrop() + .diskCacheStrategy(DiskCacheStrategy.NONE) + GlideApp.with(this).load(resource).apply(options).into(this) + } + + override fun onClick(view: View?) { + val id = view?.id; + if (id == R.id.bg) { + if (-1 == currentState) { + motionLayout.transitionToEnd(); + currentState = 1; + } else if (1 == currentState) { + motionLayout.transitionToStart(); + currentState = -1; + } + } + } +} \ No newline at end of file diff --git a/user/src/main/java/com/heyongrui/user/UserFragment.java b/user/src/main/java/com/heyongrui/user/UserFragment.java index 568445a..5cc94ab 100644 --- a/user/src/main/java/com/heyongrui/user/UserFragment.java +++ b/user/src/main/java/com/heyongrui/user/UserFragment.java @@ -30,12 +30,13 @@ protected void initView(Bundle savedInstanceState) { public void onClick(View view) { int id = view.getId(); if (id == R.id.tv_user) { - Bundle bundle = new Bundle(); - bundle.putString("test", "this is value"); - ARouter.getInstance().build(ConfigConstants.PATH_USER) - .withBundle("bundle", bundle) - .withString("key3", "888") - .navigation(); +// Bundle bundle = new Bundle(); +// bundle.putString("test", "this is value"); +// ARouter.getInstance().build(ConfigConstants.PATH_USER) +// .withBundle("bundle", bundle) +// .withString("key3", "888") +// .navigation(); + ARouter.getInstance().build(ConfigConstants.PATH_KOTLIN).navigation(); } } }, R.id.tv_user); diff --git a/user/src/main/res/layout/activity_kotlin.xml b/user/src/main/res/layout/activity_kotlin.xml new file mode 100644 index 0000000..281ab5c --- /dev/null +++ b/user/src/main/res/layout/activity_kotlin.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/user/src/main/res/layout/activity_user.xml b/user/src/main/res/layout/activity_user.xml index fcf073e..96f7ab3 100644 --- a/user/src/main/res/layout/activity_user.xml +++ b/user/src/main/res/layout/activity_user.xml @@ -4,12 +4,13 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context="com.heyongrui.user.UserActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file