Skip to content

Commit 95fa366

Browse files
committed
商品模块:商品分类,分类商品列表开发完成
1 parent 9a1eec9 commit 95fa366

File tree

67 files changed

+1290
-69
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1290
-69
lines changed

.idea/gradle.xml

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

App/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ dependencies {
3131
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
3232
api project(':Provider')
3333
api project(':MessageCenter')
34+
api project(':GoodsCenter')
3435
if (isUserModule.toBoolean()){
3536
api project(':UserCenter')
3637
}

App/src/main/java/com/hyd/mallofkotlin/ui/activity/MainActivity.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,28 @@ package com.hyd.mallofkotlin.ui.activity
33
import android.os.Bundle
44
import android.support.v4.app.Fragment
55
import com.ashokvarma.bottomnavigation.BottomNavigationBar
6+
import com.hyd.base.common.AppManager
67
import com.hyd.base.ui.activity.BaseActivity
8+
import com.hyd.goodscenter.ui.fragment.CategoryFragment
79
import com.hyd.mallofkotlin.R
810
import com.hyd.mallofkotlin.ui.fragment.HomeFragment
911
import com.hyd.mallofkotlin.ui.fragment.MineFragment
1012
import kotlinx.android.synthetic.main.activity_main.*
13+
import org.jetbrains.anko.toast
1114
import java.util.*
1215

1316
class MainActivity : BaseActivity() {
1417

1518
private val mFragments: Stack<Fragment> = Stack()
1619

1720
private val mHomeFragment: HomeFragment by lazy { HomeFragment() }
18-
private val mCategoryFragment: HomeFragment by lazy { HomeFragment() }
21+
private val mCategoryFragment: CategoryFragment by lazy { CategoryFragment() }
1922
private val mCartFragment: HomeFragment by lazy { HomeFragment() }
2023
private val mMsgFragment: HomeFragment by lazy { HomeFragment() }
2124
private val mMineFragment: MineFragment by lazy { MineFragment() }
2225

26+
private var pressTime: Long = 0
27+
2328
override fun onCreate(savedInstanceState: Bundle?) {
2429
super.onCreate(savedInstanceState)
2530
setContentView(R.layout.activity_main)
@@ -80,6 +85,16 @@ class MainActivity : BaseActivity() {
8085
manager.show(mFragments[position])
8186
manager.commit()
8287
}
88+
89+
override fun onBackPressed() {
90+
val time = System.currentTimeMillis()
91+
if (time - pressTime > 2000) {
92+
toast("再按一次退出应用程序")
93+
pressTime = time
94+
} else {
95+
AppManager.instance.exitApp(this)
96+
}
97+
}
8398
}
8499

85100

App/src/main/java/com/hyd/mallofkotlin/ui/adapter/HomeDiscountAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.support.v7.widget.RecyclerView
66
import android.view.LayoutInflater
77
import android.view.View
88
import android.view.ViewGroup
9-
import com.hyd.base.ext.loadIamge
9+
import com.hyd.base.ext.loadImage
1010
import com.hyd.mallofkotlin.R
1111
import com.kotlin.base.ui.adapter.BaseRecyclerViewAdapter
1212
import kotlinx.android.synthetic.main.layout_home_discount_item.view.*
@@ -25,7 +25,7 @@ class HomeDiscountAdapter(mContext: Context) :
2525

2626
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
2727
super.onBindViewHolder(holder, position)
28-
holder.itemView.mGoodsIconIv.loadIamge(dataList.get(position))
28+
holder.itemView.mGoodsIconIv.loadImage(dataList.get(position))
2929

3030
// 假数据
3131
holder.itemView.mDiscountAfterTv.text = "¥99.80"

App/src/main/java/com/hyd/mallofkotlin/ui/adapter/TopicAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import android.support.v4.view.PagerAdapter
55
import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
8-
import com.hyd.base.ext.loadIamge
8+
import com.hyd.base.ext.loadImage
99
import com.hyd.mallofkotlin.R
1010
import kotlinx.android.synthetic.main.layout_topic_item.view.*
1111

@@ -29,7 +29,7 @@ class TopicAdapter(private val context: Context, private val list: List<String>)
2929

3030
override fun instantiateItem(container: ViewGroup, position: Int): Any {
3131
val rootView = LayoutInflater.from(context).inflate(R.layout.layout_topic_item, null)
32-
rootView.mTopicIv.loadIamge(list[position])
32+
rootView.mTopicIv.loadImage(list[position])
3333
container.addView(rootView)
3434
return rootView
3535
}

App/src/main/java/com/hyd/mallofkotlin/ui/fragment/MineFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
7-
import com.hyd.base.ext.loadIamge
7+
import com.hyd.base.ext.loadImage
88
import com.hyd.base.ui.fragment.BaseFragment
99
import com.hyd.base.utils.AppPrefsUtils
1010
import com.hyd.mallofkotlin.R
@@ -44,7 +44,7 @@ class MineFragment : BaseFragment(), View.OnClickListener {
4444

4545
private fun loadData() {
4646
if (isLogined()) {
47-
mUserIconIv.loadIamge(AppPrefsUtils.getString(ProviderConstant.KEY_SP_USER_ICON))
47+
mUserIconIv.loadImage(AppPrefsUtils.getString(ProviderConstant.KEY_SP_USER_ICON))
4848
mUserNameTv.text = AppPrefsUtils.getString(ProviderConstant.KEY_SP_USER_NAME)
4949
} else {
5050
mUserIconIv.setImageResource(R.drawable.icon_default_user)

BaseLibrary/build.gradle

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ android {
3030
dependencies {
3131
implementation fileTree(dir: 'libs', include: ['*.jar'])
3232

33+
api "com.android.support:support-v4:28.0.0"
3334
implementation 'com.android.support:appcompat-v7:28.0.0'
3435
api 'com.android.support:recyclerview-v7:28.0.0'
3536
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
@@ -42,7 +43,7 @@ dependencies {
4243
// Appcompat-v7 (only Anko Commons)
4344
implementation "org.jetbrains.anko:anko-appcompat-v7-commons:0.10.8"
4445
// Support-v4 (only Anko Commons)
45-
implementation "org.jetbrains.anko:anko-support-v4-commons:0.10.8"
46+
api "org.jetbrains.anko:anko-support-v4-commons:0.10.8"
4647

4748
// RxKotlin and RxAndroid
4849
api "io.reactivex:rxkotlin:$rx_kotlin_version"
@@ -86,4 +87,9 @@ dependencies {
8687
//MultiStateView
8788
api "com.github.Kennyc1012:MultiStateView:$multi_state_view_version"
8889

90+
api 'ren.qinc.numberbutton:numberbutton:0.0.1'
91+
92+
//上下拉刷新
93+
api 'cn.bingoogolapple:bga-refreshlayout:1.1.7@aar'
94+
8995
}

BaseLibrary/src/main/java/com/hyd/base/ext/CommonExts.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
package com.hyd.base.ext
22

3+
import android.graphics.drawable.AnimationDrawable
34
import android.view.View
45
import android.widget.Button
56
import android.widget.EditText
67
import android.widget.ImageView
8+
import com.hyd.base.R
79
import com.hyd.base.data.protocal.BaseResp
810
import com.hyd.base.rx.BaseFunc
911
import com.hyd.base.rx.BaseFuncBoolean
1012
import com.hyd.base.rx.BaseSubscriber
13+
import com.kennyc.view.MultiStateView
1114
import com.kotlin.base.utils.GlideUtils
1215
import com.kotlin.base.widgets.DefaultTextWatcher
1316
import com.trello.rxlifecycle.LifecycleProvider
17+
import org.jetbrains.anko.find
1418
import rx.Observable
1519
import rx.android.schedulers.AndroidSchedulers
1620
import rx.schedulers.Schedulers
@@ -51,6 +55,20 @@ fun Button.enable(editText: EditText, method: () -> Boolean) {
5155
})
5256
}
5357

54-
fun ImageView.loadIamge(url: String) {
58+
fun ImageView.loadImage(url: String) {
5559
GlideUtils.loadUrlImage(context, url, this)
60+
}
61+
62+
/*
63+
多状态视图开始加载
64+
*/
65+
fun MultiStateView.startLoading(){
66+
viewState = MultiStateView.VIEW_STATE_LOADING
67+
val loadingView = getView(MultiStateView.VIEW_STATE_LOADING)
68+
val animBackground = loadingView!!.find<View>(R.id.loading_anim_view).background
69+
(animBackground as AnimationDrawable).start()
70+
}
71+
72+
fun View.setVisible(isVisible: Boolean) {
73+
this.visibility = if (isVisible) View.VISIBLE else View.GONE
5674
}

BaseLibrary/src/main/java/com/hyd/base/injection/PerCompernentScope.kt renamed to BaseLibrary/src/main/java/com/hyd/base/injection/PerComponentScope.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ import javax.inject.Scope
1212
@Scope
1313
@Documented
1414
@Retention(RUNTIME)
15-
annotation class PerCompernentScope
15+
annotation class PerComponentScope

BaseLibrary/src/main/java/com/hyd/base/ui/activity/BaseMvpActivity.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ open abstract class BaseMvpActivity<T : BasePresenter<*>> : BaseActivity(), Base
1717
lateinit var activityComponent: ActivityComponent
1818
lateinit var loadingDialog: ProgressLoading
1919

20+
//Presenter泛型,Dagger注入
2021
@Inject
2122
lateinit var mPresenter: T
2223

@@ -37,6 +38,8 @@ open abstract class BaseMvpActivity<T : BasePresenter<*>> : BaseActivity(), Base
3738

3839
initActivityInjection()
3940
injectComponent()
41+
42+
loadingDialog = ProgressLoading.create(this)
4043
}
4144

4245
private fun initActivityInjection() {
@@ -47,9 +50,4 @@ open abstract class BaseMvpActivity<T : BasePresenter<*>> : BaseActivity(), Base
4750

4851
abstract fun injectComponent()
4952

50-
override fun onResume() {
51-
super.onResume()
52-
loadingDialog = ProgressLoading.create(this)
53-
}
54-
5553
}

BaseLibrary/src/main/java/com/hyd/base/utils/YuanFenConverter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,6 @@ object YuanFenConverter {
126126
分 转换为 元,带单位
127127
*/
128128
fun changeF2YWithUnit(amount:Long):String{
129-
return "¥${YuanFenConverter.changeF2Y(amount)}"
129+
return "¥${changeF2Y(amount)}"
130130
}
131131
}
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
android:gravity="center"
4-
style="@style/MatchMatch.Vertical">
5-
<ImageView
6-
style="@style/WrapWrap"
7-
android:scaleType="centerCrop"/>
8-
<TextView
9-
style="@style/WrapWrap"
10-
android:textSize="@dimen/text_large_size"
11-
android:gravity="center"
12-
android:text="@string/coming_soon_tip"/>
3+
android:gravity="center"
4+
style="@style/MatchMatch.Vertical">
5+
6+
<ImageView
7+
style="@style/WrapWrap"
8+
android:scaleType="centerCrop"/>
9+
10+
<TextView
11+
style="@style/WrapWrap"
12+
android:textSize="@dimen/text_large_size"
13+
android:gravity="center"
14+
android:text="@string/coming_soon_tip"/>
1315
</LinearLayout>
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
android:gravity="center"
4-
style="@style/MatchMatch.Vertical">
5-
<ImageView
6-
style="@style/WrapWrap"
7-
android:src="@drawable/icon_state_error"
8-
android:scaleType="centerCrop"/>
9-
<TextView
10-
style="@style/WrapWrap"
11-
android:textSize="@dimen/text_large_size"
12-
android:gravity="center"
13-
android:text="加载错误"/>
3+
android:gravity="center"
4+
style="@style/MatchMatch.Vertical">
5+
6+
<ImageView
7+
style="@style/WrapWrap"
8+
android:src="@drawable/icon_state_error"
9+
android:scaleType="centerCrop"/>
10+
11+
<TextView
12+
style="@style/WrapWrap"
13+
android:textSize="@dimen/text_large_size"
14+
android:gravity="center"
15+
android:text="加载错误"/>
1416
</LinearLayout>
Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
style="@style/MatchMatch.Common">
4-
<TextView
5-
android:id="@+id/tv_loading"
6-
style="@style/WrapWrap"
7-
android:textSize="@dimen/text_small_size"
8-
android:textColor="@color/text_normal"
9-
android:layout_marginTop="@dimen/common_margin_small"
10-
android:layout_marginBottom="@dimen/common_margin_middle"
11-
android:text="正在加载"
12-
android:layout_centerInParent="true"/>
13-
<View android:id="@+id/loading_anim_view"
14-
android:background="@drawable/state_loading"
15-
android:layout_width="60.0dip"
16-
android:layout_height="12.0dip"
17-
android:layout_below="@id/tv_loading"
18-
android:layout_centerHorizontal="true"/>
3+
style="@style/MatchMatch.Common">
4+
5+
<TextView
6+
android:id="@+id/tv_loading"
7+
style="@style/WrapWrap"
8+
android:textSize="@dimen/text_small_size"
9+
android:textColor="@color/text_normal"
10+
android:layout_marginTop="@dimen/common_margin_small"
11+
android:layout_marginBottom="@dimen/common_margin_middle"
12+
android:text="正在加载"
13+
android:layout_centerInParent="true"/>
14+
15+
<View
16+
android:id="@+id/loading_anim_view"
17+
android:background="@drawable/state_loading"
18+
android:layout_width="60.0dip"
19+
android:layout_height="12.0dip"
20+
android:layout_below="@id/tv_loading"
21+
android:layout_centerHorizontal="true"/>
1922
</RelativeLayout>

GoodsCenter/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

GoodsCenter/build.gradle

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apply plugin: 'com.android.library'
2+
apply plugin: 'kotlin-android'
3+
apply plugin: 'kotlin-android-extensions'
4+
apply plugin: 'kotlin-kapt'
5+
6+
android {
7+
compileSdkVersion 28
8+
9+
10+
defaultConfig {
11+
minSdkVersion 16
12+
targetSdkVersion 28
13+
versionCode 1
14+
versionName "1.0"
15+
16+
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
17+
18+
}
19+
20+
buildTypes {
21+
release {
22+
minifyEnabled false
23+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
24+
}
25+
}
26+
27+
}
28+
29+
dependencies {
30+
implementation fileTree(dir: 'libs', include: ['*.jar'])
31+
32+
implementation 'com.android.support:appcompat-v7:28.0.0'
33+
testImplementation 'junit:junit:4.12'
34+
androidTestImplementation 'com.android.support.test:runner:1.0.2'
35+
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
36+
37+
api project(':Provider')
38+
39+
//Dagger2
40+
api "com.google.dagger:dagger:$dagger_version"
41+
kapt "com.google.dagger:dagger-compiler:$dagger_version"
42+
}

GoodsCenter/proguard-rules.pro

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile

0 commit comments

Comments
 (0)