Skip to content

Commit d7509a2

Browse files
committed
商品模块:商品详情以及sku选择联动及ARouter实现跨模块页面跳转
1 parent c9f5f25 commit d7509a2

File tree

13 files changed

+127
-6
lines changed

13 files changed

+127
-6
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BaseLibrary/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
android {
77
compileSdkVersion 28
88

9-
10-
119
defaultConfig {
1210
minSdkVersion 23
1311
targetSdkVersion 28
@@ -92,5 +90,7 @@ dependencies {
9290
api 'com.eightbitlab:rxbus:1.0.2'
9391
//FlowLayout
9492
api 'com.zhy:flowlayout-lib:1.0.3'
93+
//ARouter
94+
api "com.alibaba:arouter-api:$arouter_api_version"
9595

9696
}

BaseLibrary/src/main/java/com/hyd/base/common/BaseApplication.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.hyd.base.common
22

33
import android.app.Application
44
import android.content.Context
5+
import com.alibaba.android.arouter.launcher.ARouter
56
import com.hyd.base.injection.component.AppComponent
67
import com.hyd.base.injection.component.DaggerAppComponent
78
import com.hyd.base.injection.module.AppModule
@@ -19,6 +20,12 @@ class BaseApplication: Application() {
1920

2021
initInjection()
2122
context = this
23+
24+
ARouter.openLog() // 开启日志
25+
ARouter.openDebug() // 使用InstantRun的时候,需要打开该开关,上线之后关闭,否则有安全风险
26+
ARouter.printStackTrace() // 打印日志的时候打印线程堆栈
27+
28+
ARouter.init(this) // 尽可能早,推荐在Application中初始化
2229
}
2330

2431
private fun initInjection() {

GoodsCenter/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-android-extensions'
44
apply plugin: 'kotlin-kapt'
55

6+
kapt {
7+
arguments {
8+
arg("AROUTER_MODULE_NAME", project.getName())
9+
}
10+
}
11+
612
android {
713
compileSdkVersion 28
814

@@ -39,4 +45,6 @@ dependencies {
3945
//Dagger2
4046
api "com.google.dagger:dagger:$dagger_version"
4147
kapt "com.google.dagger:dagger-compiler:$dagger_version"
48+
//ARouter
49+
kapt "com.alibaba:arouter-compiler:$arouter_compiler_version"
4250
}

GoodsCenter/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<application>
55
<activity android:name=".ui.activity.GoodsActivity"/>
66
<activity android:name=".ui.activity.SearchGoodsActivity"/>
7-
<activity android:name=".ui.activity.GoodsDetailActivity"/>
7+
<activity android:name=".ui.activity.GoodsDetailActivity"
8+
android:theme="@style/AppTheme.Black"/>
89
</application>
910
</manifest>

GoodsCenter/src/main/java/com/hyd/goodscenter/Ext.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.hyd.goodscenter
33
import android.widget.EditText
44
import org.jetbrains.anko.find
55
import ren.qinc.numberbutton.NumberButton
6+
import ren.qinc.numberbutton.R
67

78
/**
89
* Created by hydCoder on 2019/8/1.

GoodsCenter/src/main/java/com/hyd/goodscenter/ui/activity/GoodsDetailActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ package com.hyd.goodscenter.ui.activity
22

33
import android.os.Bundle
44
import android.support.design.widget.TabLayout
5+
import com.alibaba.android.arouter.launcher.ARouter
6+
import com.hyd.base.ext.onClick
57
import com.hyd.base.ui.activity.BaseActivity
68
import com.hyd.goodscenter.R
79
import com.hyd.goodscenter.ui.adapter.GoodsDetailVpAdapter
10+
import com.hyd.provider.router.RouterPath
811
import kotlinx.android.synthetic.main.activity_goods_detail.*
912

1013
/**
@@ -25,5 +28,9 @@ class GoodsDetailActivity: BaseActivity() {
2528
mGoodsDetailVp.adapter = GoodsDetailVpAdapter(supportFragmentManager, this)
2629
//TabLayout关联ViewPager
2730
mGoodsDetailTab.setupWithViewPager(mGoodsDetailVp)
31+
32+
mAddCartBtn.onClick {
33+
ARouter.getInstance().build(RouterPath.UserCenter.PATH_LOGIN).navigation()
34+
}
2835
}
2936
}

GoodsCenter/src/main/java/com/hyd/goodscenter/ui/fragment/GoodsDetailTabOneFragment.kt

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import android.view.Gravity
55
import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
8+
import android.view.animation.Animation
9+
import android.view.animation.ScaleAnimation
810
import com.eightbitlab.rxbus.Bus
11+
import com.eightbitlab.rxbus.registerInBus
912
import com.hyd.base.ext.onClick
1013
import com.hyd.base.ui.activity.BaseActivity
1114
import com.hyd.base.ui.fragment.BaseMvpFragment
@@ -14,6 +17,7 @@ import com.hyd.goodscenter.R
1417
import com.hyd.goodscenter.common.GoodsConstant
1518
import com.hyd.goodscenter.data.protocal.Goods
1619
import com.hyd.goodscenter.event.GoodsDetailImageEvent
20+
import com.hyd.goodscenter.event.SkuChangedEvent
1721
import com.hyd.goodscenter.injection.component.DaggerGoodsComponent
1822
import com.hyd.goodscenter.injection.module.GoodsModule
1923
import com.hyd.goodscenter.presenter.GoodsDetailPresenter
@@ -32,6 +36,11 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
3236

3337
private var mCurGoods: Goods? = null
3438

39+
//SKU弹层出场动画
40+
private lateinit var mAnimationStart: Animation
41+
//SKU弹层退场动画
42+
private lateinit var mAnimationEnd: Animation
43+
3544
private lateinit var mSkuPop: GoodsSkuPopView
3645

3746
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@@ -41,8 +50,10 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
4150
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4251
super.onViewCreated(view, savedInstanceState)
4352
initView()
44-
loadData()
53+
initAnim()
4554
initSkuPop()
55+
loadData()
56+
initObserve()
4657
}
4758

4859
private fun initView() {
@@ -56,6 +67,7 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
5667
mSkuPop.showAtLocation(
5768
(activity as BaseActivity).contentView, Gravity.BOTTOM and Gravity.CENTER_HORIZONTAL, 0, 0
5869
)
70+
(activity as BaseActivity).contentView.startAnimation(mAnimationStart)
5971
}
6072
}
6173

@@ -65,6 +77,10 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
6577

6678
private fun initSkuPop() {
6779
mSkuPop = GoodsSkuPopView(activity!!)
80+
81+
mSkuPop.setOnDismissListener {
82+
(activity as BaseActivity).contentView.startAnimation(mAnimationEnd)
83+
}
6884
}
6985

7086
override fun injectComponent() {
@@ -73,6 +89,21 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
7389
mPresenter.mView = this
7490
}
7591

92+
/*
93+
初始化缩放动画
94+
*/
95+
private fun initAnim() {
96+
mAnimationStart = ScaleAnimation(
97+
1f, 0.95f, 1f, 0.95f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
98+
mAnimationStart.duration = 300
99+
mAnimationStart.fillAfter = true
100+
101+
mAnimationEnd = ScaleAnimation(
102+
0.95f, 1f, 0.95f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
103+
mAnimationEnd.duration = 300
104+
mAnimationEnd.fillAfter = true
105+
}
106+
76107
override fun onGetGoodsDetailResult(result: Goods) {
77108
mCurGoods = result
78109

@@ -102,4 +133,17 @@ class GoodsDetailTabOneFragment : BaseMvpFragment<GoodsDetailPresenter>(), Goods
102133
mSkuPop.setSkuData(result.goodsSku)
103134

104135
}
136+
137+
private fun initObserve() {
138+
Bus.observe<SkuChangedEvent>()
139+
.subscribe {
140+
mSkuSelectedTv.text =
141+
mSkuPop.getSelectSku() + GoodsConstant.SKU_SEPARATOR + mSkuPop.getSelectCount() + ""
142+
}.registerInBus(this)
143+
}
144+
145+
override fun onDestroy() {
146+
super.onDestroy()
147+
Bus.unregister(this)
148+
}
105149
}

GoodsCenter/src/main/res/layout/fragment_goods_detail_tab_one.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<com.youth.banner.Banner
66
android:id="@+id/mGoodsDetailBanner"
77
android:layout_width="match_parent"
8-
android:layout_height="150dp"/>
8+
android:layout_height="200dp"/>
99

1010
<TextView
1111
android:id="@+id/mGoodsDescTv"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.hyd.provider.router
2+
3+
/**
4+
* Created by hydCoder on 2019/8/5.
5+
* 以梦为马,明日天涯。
6+
*/
7+
/*
8+
模块路由 路径定义
9+
*/
10+
object RouterPath {
11+
//用户模块
12+
class UserCenter {
13+
companion object {
14+
const val PATH_LOGIN = "/userCenter/login"
15+
}
16+
}
17+
18+
//订单模块
19+
class OrderCenter {
20+
companion object {
21+
const val PATH_ORDER_CONFIRM = "/orderCenter/confirm"
22+
}
23+
}
24+
25+
//支付模块
26+
class PaySDK {
27+
companion object {
28+
const val PATH_PAY = "/paySDK/pay"
29+
}
30+
}
31+
32+
//消息模块
33+
class MessageCenter {
34+
companion object {
35+
const val PATH_MESSAGE_PUSH = "/messageCenter/push"
36+
const val PATH_MESSAGE_ORDER = "/messageCenter/order"
37+
}
38+
}
39+
}

UserCenter/build.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ apply plugin: 'kotlin-android'
88
apply plugin: 'kotlin-android-extensions'
99
apply plugin: 'kotlin-kapt'
1010

11+
kapt {
12+
arguments {
13+
arg("AROUTER_MODULE_NAME", project.getName())
14+
}
15+
}
16+
17+
1118
android {
1219
compileSdkVersion 28
1320

@@ -56,4 +63,6 @@ dependencies {
5663
//Dagger2
5764
api "com.google.dagger:dagger:$dagger_version"
5865
kapt "com.google.dagger:dagger-compiler:$dagger_version"
66+
//ARouter
67+
kapt "com.alibaba:arouter-compiler:$arouter_compiler_version"
5968
}

UserCenter/src/main/java/com/hyd/user/ui/activity/LoginActivity.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.hyd.user.ui.activity
22

33
import android.os.Bundle
44
import android.view.View
5+
import com.alibaba.android.arouter.facade.annotation.Route
56
import com.hyd.base.ext.enable
67
import com.hyd.base.ui.activity.BaseMvpActivity
8+
import com.hyd.provider.router.RouterPath
79
import com.hyd.user.R
810
import com.hyd.user.data.protocal.UserInfo
911
import com.hyd.user.injection.component.DaggerUserComponent
@@ -15,6 +17,7 @@ import kotlinx.android.synthetic.main.activity_login.*
1517
import org.jetbrains.anko.startActivity
1618
import org.jetbrains.anko.toast
1719

20+
@Route(path = RouterPath.UserCenter.PATH_LOGIN)
1821
class LoginActivity: BaseMvpActivity<LoginPresenter>(), LoginView, View.OnClickListener {
1922

2023
override fun injectComponent() {

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ buildscript {
1313
ext.circle_imageView_version = "2.1.0"
1414
ext.take_photo_version = "4.0.3"
1515
ext.alert_view_version = "1.0.3"
16+
ext.arouter_api_version = '1.5.0'
17+
ext.arouter_compiler_version = '1.2.2'
1618

1719
repositories {
1820
google()

0 commit comments

Comments
 (0)