diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_component.xml b/app/src/main/res/layout/fragment_component.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_component.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_component.xml b/app/src/main/res/layout/fragment_component.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_component.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml new file mode 100644 index 0000000..b2e55a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_component.xml b/app/src/main/res/layout/fragment_component.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_component.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml new file mode 100644 index 0000000..b2e55a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_shop.xml b/app/src/main/res/layout/fragment_shop.xml index a97ec1b..17b4316 100644 --- a/app/src/main/res/layout/fragment_shop.xml +++ b/app/src/main/res/layout/fragment_shop.xml @@ -1,19 +1,95 @@ - + + + + + + + + + + + + + + + + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_component.xml b/app/src/main/res/layout/fragment_component.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_component.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml new file mode 100644 index 0000000..b2e55a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_shop.xml b/app/src/main/res/layout/fragment_shop.xml index a97ec1b..17b4316 100644 --- a/app/src/main/res/layout/fragment_shop.xml +++ b/app/src/main/res/layout/fragment_shop.xml @@ -1,19 +1,95 @@ - + + + + + + + + + + + + + + + + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4741037..7cc948d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,6 @@ implementation 'org.greenrobot:greendao:3.3.0' //桌面角标 implementation "me.leolin:ShortcutBadger:1.1.22@aar" + //轮播图 + implementation 'io.github.youth5201314:banner:2.2.2' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt new file mode 100644 index 0000000..328a543 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt @@ -0,0 +1,22 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class SubViewPagerAdapter( + fm: FragmentManager, private val titles: Array, private val list: List +) : FragmentPagerAdapter(fm) { + + override fun getItem(position: Int): Fragment { + return list[position] + } + + override fun getCount(): Int { + return list.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return titles[position] + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt index 46d52bd..16fde61 100644 --- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt @@ -88,7 +88,7 @@ messageAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { + emptyView!!.showEmptyPage("没有任何消息") { pageIndex = 0 dataBeans = DataBaseManager.instance.queryMessageByPage(userId, pageIndex) weakReferenceHandler.sendEmptyMessage(2022082301) diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index 3163fce..8b11894 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -1,10 +1,28 @@ package com.casic.br.fragment +import androidx.fragment.app.Fragment import com.casic.br.R +import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.fragment.shop.ComponentFragment +import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.SmartHomeFragment +import com.casic.br.fragment.shop.SmartKitchenFragment +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_shop.* +import java.util.* class ShopPageFragment : KotlinBaseFragment() { + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(RecommendFragment()) + fragmentPages.add(SmartKitchenFragment()) + fragmentPages.add(SmartHomeFragment()) + fragmentPages.add(ComponentFragment()) + } + override fun initLayoutView(): Int = R.layout.fragment_shop override fun setupTopBarLayout() { @@ -12,7 +30,11 @@ } override fun initData() { - + val subPageAdapter = SubViewPagerAdapter( + childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + ) + shopViewPager.adapter = subPageAdapter + shopTopTabLayout.setupWithViewPager(shopViewPager) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt new file mode 100644 index 0000000..dc67cc4 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ComponentFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_component + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt new file mode 100644 index 0000000..6cf36e6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt @@ -0,0 +1,62 @@ +package com.casic.br.fragment.shop + +import com.bumptech.glide.Glide +import com.casic.br.R +import com.casic.br.model.BannerImageModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* + +class RecommendFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_recommend + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..5) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@RecommendFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt new file mode 100644 index 0000000..09753d6 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartHomeFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_home + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt new file mode 100644 index 0000000..535e512 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt @@ -0,0 +1,21 @@ +package com.casic.br.fragment.shop + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class SmartKitchenFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_smart_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/BannerImageModel.java b/app/src/main/java/com/casic/br/model/BannerImageModel.java new file mode 100644 index 0000000..bd4ce3c --- /dev/null +++ b/app/src/main/java/com/casic/br/model/BannerImageModel.java @@ -0,0 +1,32 @@ +package com.casic.br.model; + +public class BannerImageModel { + + private String imageLink; + private String imageTitle; + private String webPageLink; + + public String getImageLink() { + return imageLink; + } + + public void setImageLink(String imageLink) { + this.imageLink = imageLink; + } + + public String getImageTitle() { + return imageTitle; + } + + public void setImageTitle(String imageTitle) { + this.imageTitle = imageTitle; + } + + public String getWebPageLink() { + return webPageLink; + } + + public void setWebPageLink(String webPageLink) { + this.webPageLink = webPageLink; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 3b8dc98..795d25c 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -18,6 +18,7 @@ ) val SHOP_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) val SHOP_OPERATE = arrayOf("购物车", "我的订单", "故障售后") + val SHOP_PAGE_OPERATE = arrayOf("推荐", "智能厨房", "智能家居", "配件") val SERVER_IMAGE = intArrayOf( R.mipmap.ic_launcher, R.mipmap.ic_launcher, diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml new file mode 100644 index 0000000..a93ef6c --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000..ed8f307 --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_component.xml b/app/src/main/res/layout/fragment_component.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_component.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml new file mode 100644 index 0000000..b2e55a1 --- /dev/null +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_shop.xml b/app/src/main/res/layout/fragment_shop.xml index a97ec1b..17b4316 100644 --- a/app/src/main/res/layout/fragment_shop.xml +++ b/app/src/main/res/layout/fragment_shop.xml @@ -1,19 +1,95 @@ - + + + + + + + + + + + + + + + + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file