Skip to content

Commit 7433d61

Browse files
committed
add anko
1 parent 9669398 commit 7433d61

File tree

19 files changed

+362
-37
lines changed

19 files changed

+362
-37
lines changed

FastMVP.zip

7.19 KB
Binary file not shown.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ repositories {
1313
google()
1414
}
1515
dependencies {
16-
implementation 'com.github.czh235285:FastKotlin:1.3.8'
16+
implementation 'com.github.czh235285:FastKotlin:1.4.0'
1717
}
1818
```
1919
## 介绍

app/build.gradle

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ apply plugin: 'kotlin-kapt'
55
android {
66
compileSdkVersion 26
77
defaultConfig {
8+
multiDexEnabled true
89
applicationId "czh.fast.sample"
910
minSdkVersion 19
1011
targetSdkVersion 26
@@ -60,6 +61,8 @@ dependencies {
6061
androidTestImplementation 'com.android.support.test:runner:1.0.2'
6162
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
6263
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
64+
api 'com.android.support:multidex:1.0.1'
65+
api "org.jetbrains.anko:anko:$anko_version"
6366
implementation project(':lib')
6467

6568
kapt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"

app/src/androidTest/java/czh/com/myapplication/ExampleInstrumentedTest.java app/src/androidTest/java/czh/com/myapplication/ExampleInstrumentedNetFragmentUI.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
1616
*/
1717
@RunWith(AndroidJUnit4.class)
18-
public class ExampleInstrumentedTest {
18+
public class ExampleInstrumentedNetFragmentUI {
1919
@Test
2020
public void useAppContext() {
2121
// Context of the app under test.

app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
android:value="1334" />
2727

2828
<activity android:name=".mvp.ui.activity.TestActivity" />
29+
<activity android:name=".mvp.ui.activity.TestTActivity" />
2930
</application>
3031

3132
</manifest>

app/src/main/java/czh/fast/sample/application/MyAPP.kt

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package czh.fast.sample.application
33
import android.content.Context
44
import com.raizlabs.android.dbflow.config.FlowManager
55
import czh.fast.lib.application.BaseApp
6+
import android.support.multidex.MultiDex
7+
8+
69

710

811
class MyAPP : BaseApp() {
@@ -16,6 +19,10 @@ class MyAPP : BaseApp() {
1619
get() = "http://101.132.131.51/share/"
1720

1821

22+
override fun attachBaseContext(base: Context) {
23+
super.attachBaseContext(base)
24+
MultiDex.install(base)
25+
}
1926
companion object {
2027
/**
2128
* 全局的上下文

app/src/main/java/czh/fast/sample/mvp/contract/TestContract.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package czh.fast.sample.mvp.contract
22

3+
34
import czh.fast.lib.base.BasePresenter
45
import czh.fast.lib.base.BaseView
56

Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
11
package czh.fast.sample.mvp.ui.activity
22

3-
import android.view.View
4-
import czh.fast.sample.R
5-
import czh.fast.sample.mvp.contract.TestContract
6-
import czh.fast.sample.mvp.presenter.TestPresenter
7-
import kotlinx.android.synthetic.main.activity_test.*
3+
import czh.fast.lib.base.AnkoActivity
4+
import czh.fast.sample.mvp.ui.layout.TestActivityUI
5+
import org.jetbrains.anko.setContentView
86

97

10-
import czh.fast.lib.base.BaseActivity
11-
12-
class TestActivity : BaseActivity(), TestContract.View {
13-
override val layoutId: Int = R.layout.activity_test
8+
class TestActivity : AnkoActivity() {
9+
val ui = TestActivityUI()
10+
override fun UI() {
11+
ui.setContentView(this)
12+
}
1413

15-
override val views: List<View>? get() = null
16-
override var presenter: TestContract.Presenter = TestPresenter(this)
1714
override fun afterInitView() {
1815

1916
}
2017

21-
override fun onClick(v: View) {
22-
when (v) {
2318

24-
}
25-
}
2619
}

app/src/main/java/czh/fast/sample/mvp/ui/fragment/NetFragment.kt

+12-19
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,38 @@
11
package czh.fast.sample.mvp.ui.fragment
22

33
import android.view.View
4-
import czh.fast.lib.base.LazyFragment
4+
import czh.fast.lib.base.AnkoLazyFragment
55
import czh.fast.lib.utils.GlideImageLoader
6-
import czh.fast.sample.R
76
import czh.fast.sample.mvp.contract.NetContract
87
import czh.fast.sample.mvp.model.Advert
98
import czh.fast.sample.mvp.presenter.NetPresenter
10-
import kotlinx.android.synthetic.main.fragment_net.*
9+
import czh.fast.sample.mvp.ui.layout.NetFragmentUI
10+
import org.jetbrains.anko.AnkoContext
11+
import org.jetbrains.anko.support.v4.ctx
12+
13+
class NetFragment : AnkoLazyFragment(), NetContract.View {
14+
val ui = NetFragmentUI()
15+
override fun UI(): View {
16+
return ui.createView(AnkoContext.create(ctx, this))
17+
}
1118

12-
class NetFragment : LazyFragment(), NetContract.View {
13-
override val views: List<View>? get() = arrayListOf(tvNormal, tvCache)
1419

1520
override var presenter: NetContract.Presenter = NetPresenter(this)
1621

17-
override val layoutResource: Int = R.layout.fragment_net
1822

1923
override fun afterInitView() {
2024

2125
}
2226

23-
override fun onClick(v: View?) {
24-
when (v) {
25-
tvNormal -> {
26-
presenter.normalTask()
27-
28-
}
29-
tvCache -> {
30-
presenter.cacheTask()
31-
}
32-
}
33-
}
34-
3527
override fun showResult(advert: Advert) {
28+
3629
val images = arrayListOf<String>()
3730
advert.data.forEach {
3831
if (it.adname == "限时热卖") {
3932
images.add("https://pearshare.oss-cn-shanghai.aliyuncs.com/" + it.face)
4033
}
4134
}
42-
banner.setImages(images).setImageLoader(GlideImageLoader()).start()
35+
ui.banner.setImages(images).setImageLoader(GlideImageLoader()).start()
4336
}
4437

4538
companion object {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package czh.fast.sample.mvp.ui.layout
2+
3+
import android.view.Gravity
4+
import android.view.View
5+
import android.widget.TextView
6+
import com.youth.banner.Banner
7+
import czh.fast.sample.R
8+
import czh.fast.sample.mvp.ui.fragment.NetFragment
9+
import czh.fast.sample.utils.AutoLayout
10+
import czh.fast.sample.utils.banners
11+
import org.jetbrains.anko.*
12+
import org.jetbrains.anko.sdk25.coroutines.onClick
13+
14+
class NetFragmentUI : AnkoComponent<NetFragment> {
15+
lateinit var banner: Banner
16+
override fun createView(ui: AnkoContext<NetFragment>): View = with(ui) {
17+
return verticalLayout {
18+
banner = banners {
19+
20+
}.lparams(width = matchParent, height = 300)
21+
22+
textView("普通请求") {
23+
onClick {
24+
ui.owner.presenter.normalTask()
25+
}
26+
}.lparams(width = matchParent) {
27+
28+
leftMargin = 30
29+
rightMargin = 30
30+
topMargin = 30
31+
32+
}
33+
textView("缓存请求(断网有效)") {
34+
onClick {
35+
ui.owner.presenter.cacheTask()
36+
}
37+
}.lparams(width = matchParent) {
38+
leftMargin = 30
39+
rightMargin = 30
40+
topMargin = 30
41+
}
42+
43+
}.apply {
44+
AutoLayout.auto(this)
45+
applyRecursively {
46+
when (it) {
47+
is TextView -> {
48+
49+
it.apply {
50+
padding = 30
51+
gravity = Gravity.CENTER
52+
textColorResource = R.color.white
53+
backgroundColorResource = R.color.colorPrimary
54+
55+
}
56+
}
57+
}
58+
}
59+
}
60+
}
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package czh.fast.sample.mvp.ui.layout
2+
3+
import android.view.View
4+
import czh.fast.sample.mvp.ui.activity.TestActivity
5+
import org.jetbrains.anko.*
6+
7+
class TestActivityUI : AnkoComponent<TestActivity> {
8+
override fun createView(ui: AnkoContext<TestActivity>): View= with(ui) {
9+
return verticalLayout {
10+
11+
}
12+
}
13+
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package czh.fast.sample.utils
2+
3+
4+
import android.view.View
5+
import android.view.ViewGroup
6+
7+
import com.zhy.autolayout.utils.AutoUtils;
8+
9+
class AutoLayout {
10+
companion object {
11+
fun auto(view: View): View {
12+
if (view is ViewGroup) {
13+
for (i in 0 until view.childCount) {
14+
auto(view.getChildAt(i))
15+
}
16+
}
17+
AutoUtils.auto(view)
18+
return view
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package czh.fast.sample.utils
2+
3+
import android.view.ViewManager
4+
import com.youth.banner.Banner
5+
import org.jetbrains.anko.custom.ankoView
6+
7+
inline fun ViewManager.banners(theme: Int = 0) = banners(theme) {}
8+
9+
inline fun ViewManager.banners(theme: Int = 0, init: Banner.() -> Unit): Banner {
10+
return ankoView({ Banner(it) }, theme, init)
11+
}

app/src/test/java/czh/com/myapplication/ExampleUnitTest.java app/src/test/java/czh/com/myapplication/ExampleUnitNetFragmentUI.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
1111
*/
12-
public class ExampleUnitTest {
12+
public class ExampleUnitNetFragmentUI {
1313
@Test
1414
public void addition_isCorrect() {
1515
assertEquals(4, 2 + 2);

build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ buildscript {
44
ext {
55
kotlin_version = '1.2.41'
66
dbflow_version = "4.1.2"
7+
anko_version='0.10.5'
78
}
89
repositories {
910
google()

lib/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ dependencies {
3232
api 'com.android.support:appcompat-v7:27.1.1'
3333
api 'com.android.support:design:27.1.1'
3434
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
35+
api "org.jetbrains.anko:anko:$anko_version"
3536
api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.18'
3637
api 'com.pawegio.kandroid:kandroid:0.8.7@aar'
3738
api ('com.github.bumptech.glide:glide:4.7.1'){
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package czh.fast.lib.base
2+
3+
4+
import android.content.pm.ActivityInfo
5+
import android.os.Bundle
6+
import android.util.Log
7+
import android.view.View
8+
import android.view.Window
9+
import android.view.WindowManager
10+
import com.czh.library.LoadingDialog
11+
import com.vise.xsnow.http.ViseHttp
12+
import com.zhy.autolayout.AutoLayoutActivity
13+
import czh.fast.lib.R
14+
import czh.fast.lib.utils.AppManager
15+
import czh.fast.lib.utils.status.LightStatusBarUtils
16+
import czh.fast.lib.utils.status.RomUtils
17+
import czh.fast.lib.utils.status.StatusBarUtil
18+
import czh.fast.lib.utils.status.setStatusBarByColorRes
19+
20+
//Activity基类
21+
abstract class AnkoActivity : AutoLayoutActivity(), LoadingView {
22+
23+
override fun onStart() {
24+
super.onStart()
25+
Log.d("当前Activity", "==》 (${javaClass.simpleName}.kt:1)")
26+
}
27+
28+
public override fun onCreate(savedInstanceState: Bundle?) {
29+
super.onCreate(savedInstanceState)
30+
doBeforeSetContentView()
31+
UI()
32+
//设置状态栏颜色
33+
setStatusBarByColorRes(R.color.colorPrimary)
34+
afterInitView()
35+
}
36+
37+
/**
38+
* 设置layout前配置
39+
*/
40+
private fun doBeforeSetContentView() {
41+
// 把actvity放到application栈中管理
42+
AppManager.appManager.addActivity(this)
43+
// 无标题
44+
requestWindowFeature(Window.FEATURE_NO_TITLE)
45+
// 设置竖屏
46+
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
47+
// 默认不自动弹起软键盘
48+
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
49+
}
50+
51+
52+
53+
//初始化view
54+
protected abstract fun afterInitView()
55+
56+
protected abstract fun UI()
57+
//浅色状态栏
58+
fun setLightStatusBar() {
59+
StatusBarUtil.setColor(this, 0xffffffff.toInt(), 0)
60+
if (RomUtils.isLightStatusBarAvailable) {
61+
LightStatusBarUtils.setLightStatusBar(this, true)
62+
} else {
63+
StatusBarUtil.setColor(this, 0xff363636.toInt())
64+
}
65+
}
66+
67+
private var mLoading: LoadingDialog? = null
68+
override fun showLoading() {
69+
if (mLoading == null) {
70+
mLoading = LoadingDialog(this)
71+
}
72+
mLoading?.show()
73+
}
74+
75+
override fun hideLoading() {
76+
mLoading?.dismiss()
77+
}
78+
79+
80+
override fun onDestroy() {
81+
super.onDestroy()
82+
ViseHttp.cancelAll()
83+
AppManager.appManager.finishActivity(this)
84+
}
85+
}

0 commit comments

Comments
 (0)