diff --git a/app/build.gradle b/app/build.gradle index 53c0c3c..27ef2da 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,7 +8,7 @@ android { compileSdkVersion 28 defaultConfig { applicationId "luyao.ktx" - minSdkVersion 15 + minSdkVersion 16 targetSdkVersion 28 versionCode 1 versionName "1.0" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fb81bfe..98678d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,13 +9,14 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + \ No newline at end of file diff --git a/app/src/main/java/luyao/ktx/MainActivity.kt b/app/src/main/java/luyao/ktx/MainActivity.kt deleted file mode 100644 index a0c3d30..0000000 --- a/app/src/main/java/luyao/ktx/MainActivity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package luyao.ktx - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle - -class MainActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - } -} diff --git a/app/src/main/java/luyao/util/ktx/MainActivity.kt b/app/src/main/java/luyao/util/ktx/MainActivity.kt new file mode 100644 index 0000000..8d5d6be --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/MainActivity.kt @@ -0,0 +1,17 @@ +package luyao.util.ktx + +import kotlinx.android.synthetic.main.activity_main.* +import luyao.ktx.R +import luyao.ktx.base.BaseActivity +import luyao.util.ktx.mvvm.MvvmActivity + +class MainActivity : BaseActivity() { + + override fun getLayoutResId() = R.layout.activity_main + + override fun initView() {} + + override fun initData() { + btMvvm.setOnClickListener { startActivity(MvvmActivity::class.java) } + } +} diff --git a/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt b/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt new file mode 100644 index 0000000..a0b5f1b --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/mvvm/MvvmActivity.kt @@ -0,0 +1,37 @@ +package luyao.util.ktx.mvvm + +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.Observer +import kotlinx.android.synthetic.main.activity_mvvm_demo.* +import luyao.ktx.R +import luyao.ktx.base.BaseVMActivity +import luyao.ktx.ext.toast + +/** + * Created by luyao + * on 2019/5/31 16:28 + */ +class MvvmActivity : BaseVMActivity(), LifecycleOwner { + + override fun providerVMClass() = MvvmModel::class.java + + override fun getLayoutResId() = R.layout.activity_mvvm_demo + + override fun initView() { + mvvm.setOnClickListener { mViewModel.getMessage() } + } + + override fun initData() { + + } + + override fun startObserve() { + mViewModel.run { + mMessage.observe(this@MvvmActivity, Observer { + it?.run { + toast(it) + } + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt b/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt new file mode 100644 index 0000000..6145d1a --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/mvvm/MvvmModel.kt @@ -0,0 +1,29 @@ +package luyao.util.ktx.mvvm + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.MutableLiveData +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.delay +import luyao.ktx.base.BaseViewModel + +/** + * Created by luyao + * on 2019/5/31 16:28 + */ +class MvvmModel : BaseViewModel() { + + val mMessage: MutableLiveData = MutableLiveData() + + fun getMessage() { + + launch { + val deferred = async(Dispatchers.IO) { + delay(2000) // network request + "success" + } + mMessage.value = deferred.await() + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 716af5a..cb3836b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,19 +1,17 @@ - + tools:context="luyao.util.ktx.MainActivity" + android:orientation="vertical" + android:gravity="center_horizontal"> - +