diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_added_device_rv_g.xml b/app/src/main/res/layout/item_added_device_rv_g.xml index cd9a1e7..e322e7e 100644 --- a/app/src/main/res/layout/item_added_device_rv_g.xml +++ b/app/src/main/res/layout/item_added_device_rv_g.xml @@ -5,7 +5,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_3" android:layout_marginBottom="@dimen/dp_7" - android:background="@drawable/selector_bg_solid_layout_white_radius_10" + android:background="@drawable/selector_bg_stroke_layout_main_radius_10" android:orientation="vertical" android:padding="@dimen/dp_5"> diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_added_device_rv_g.xml b/app/src/main/res/layout/item_added_device_rv_g.xml index cd9a1e7..e322e7e 100644 --- a/app/src/main/res/layout/item_added_device_rv_g.xml +++ b/app/src/main/res/layout/item_added_device_rv_g.xml @@ -5,7 +5,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_3" android:layout_marginBottom="@dimen/dp_7" - android:background="@drawable/selector_bg_solid_layout_white_radius_10" + android:background="@drawable/selector_bg_stroke_layout_main_radius_10" android:orientation="vertical" android:padding="@dimen/dp_5"> diff --git a/app/src/main/res/layout/item_shower_control_g.xml b/app/src/main/res/layout/item_shower_control_g.xml new file mode 100644 index 0000000..79de890 --- /dev/null +++ b/app/src/main/res/layout/item_shower_control_g.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_added_device_rv_g.xml b/app/src/main/res/layout/item_added_device_rv_g.xml index cd9a1e7..e322e7e 100644 --- a/app/src/main/res/layout/item_added_device_rv_g.xml +++ b/app/src/main/res/layout/item_added_device_rv_g.xml @@ -5,7 +5,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_3" android:layout_marginBottom="@dimen/dp_7" - android:background="@drawable/selector_bg_solid_layout_white_radius_10" + android:background="@drawable/selector_bg_stroke_layout_main_radius_10" android:orientation="vertical" android:padding="@dimen/dp_5"> diff --git a/app/src/main/res/layout/item_shower_control_g.xml b/app/src/main/res/layout/item_shower_control_g.xml new file mode 100644 index 0000000..79de890 --- /dev/null +++ b/app/src/main/res/layout/item_shower_control_g.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 18924f7..419262f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -22,6 +22,7 @@ 50dp 55dp 60dp + 70dp 80dp 100dp 115dp diff --git a/app/build.gradle b/app/build.gradle index 163aeb6..e5171b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,4 +100,6 @@ implementation "me.leolin:ShortcutBadger:1.1.22@aar" //轮播图 implementation 'io.github.youth5201314:banner:2.2.2' + //SegmentTabLayout + implementation 'io.github.h07000223:flycoTabLayout:3.0.0' } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt index 58a92c8..4be4e05 100644 --- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt @@ -13,15 +13,12 @@ import com.casic.br.R import com.casic.br.model.AddedDeviceModel import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.obtainScreenWidth @SuppressLint("NotifyDataSetChanged") -class AddedDeviceAdapter( - private val context: Context, private val spacing: Float -) : RecyclerView.Adapter() { +class AddedDeviceAdapter(private val context: Context) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - private val screenWidth = context.obtainScreenWidth() private var dataRows: MutableList = ArrayList() fun setupDevice(devices: MutableList) { diff --git a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt index 117232a..792e695 100644 --- a/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/MessageListAdapter.kt @@ -11,7 +11,8 @@ import com.casic.br.R import com.casic.br.model.LocaleMessageBean -class MessageListAdapter (context: Context, private val dataRows: MutableList +class MessageListAdapter( + context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 2744964..9323ff6 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -13,8 +13,7 @@ class RecommendAdapter( private val context: Context, private val dataRows: MutableList -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt new file mode 100644 index 0000000..c9c589d --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ShowerControlAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView +import com.casic.br.R + +class ShowerControlAdapter( + context: Context, private val icons: IntArray, private val tags: Array +) : BaseAdapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getCount(): Int = icons.size + + override fun getItem(position: Int): Any = icons[position] + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + val view: View + val holder: ItemViewHolder + if (convertView == null) { + view = layoutInflater.inflate(R.layout.item_shower_control_g, null) + holder = ItemViewHolder() + holder.controllerIconView = view.findViewById(R.id.controllerIconView) + holder.controllerTagView = view.findViewById(R.id.controllerTagView) + view.tag = holder + } else { + view = convertView + holder = view.tag as ItemViewHolder + } + holder.controllerIconView.setImageResource(icons[position]) + holder.controllerTagView.text = tags[position] + return view + } + + private class ItemViewHolder { + lateinit var controllerIconView: ImageView + lateinit var controllerTagView: TextView + } +} \ 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 deleted file mode 100644 index 328a543..0000000 --- a/app/src/main/java/com/casic/br/adapter/SubViewPagerAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -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/adapter/TabPagerAdapter.kt b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt new file mode 100644 index 0000000..f9a9687 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/TabPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.casic.br.adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter + +class TabPagerAdapter( + private val pages: ArrayList, + private val titles: Array, + fm: FragmentManager +) : FragmentPagerAdapter(fm) { + + override fun getCount(): Int = pages.size + + override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun getItem(position: Int): Fragment = pages[position] +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index d93769b..f5e4dec 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -47,7 +47,7 @@ model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" deviceModels.add(model3) - val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext()) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter addedDeviceAdapter.setOnItemClickListener(object : 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 e3f40fd..b01f98a 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment import com.casic.br.R -import com.casic.br.adapter.SubViewPagerAdapter +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment import com.casic.br.fragment.shop.FavoriteFragment @@ -31,8 +31,8 @@ } override fun initData() { - val subPageAdapter = SubViewPagerAdapter( - childFragmentManager, LocaleConstant.SHOP_PAGE_OPERATE, fragmentPages + val subPageAdapter = TabPagerAdapter( + fragmentPages, LocaleConstant.SHOP_PAGE_OPERATE, childFragmentManager ) shopViewPager.adapter = subPageAdapter shopTopTabLayout.setupWithViewPager(shopViewPager) diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt new file mode 100644 index 0000000..d377d13 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ControlPageFragment.kt @@ -0,0 +1,70 @@ +package com.casic.br.fragment.waterheater + +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter +import com.casic.br.fragment.waterheater.control.KitchenPageFragment +import com.casic.br.fragment.waterheater.control.ShowerPageFragment +import com.casic.br.fragment.waterheater.control.TemperaturePageFragment +import com.flyco.tablayout.listener.OnTabSelectListener +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control.* +import java.util.* + +class ControlPageFragment : KotlinBaseFragment() { + + private val controllerSegmentTitle = arrayOf("厨房", "舒适浴", "随温感") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(KitchenPageFragment()) + fragmentPages.add(ShowerPageFragment()) + fragmentPages.add(TemperaturePageFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control + + override fun setupTopBarLayout() { + + } + + override fun initData() { + controllerSegmentView.setTabData(controllerSegmentTitle) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + controllerSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + controllerViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + controllerViewPager.adapter = + TabPagerAdapter(fragmentPages, controllerSegmentTitle, childFragmentManager) + controllerViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + controllerSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + controllerViewPager.currentItem = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt new file mode 100644 index 0000000..b68874d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/ServicePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class ServicePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_service + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt new file mode 100644 index 0000000..0af764d --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/StatusPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class StatusPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_status + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt new file mode 100644 index 0000000..7170a7a --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/KitchenPageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class KitchenPageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_kitchen + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt new file mode 100644 index 0000000..2297699 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/ShowerPageFragment.kt @@ -0,0 +1,44 @@ +package com.casic.br.fragment.waterheater.control + +import android.view.View +import android.widget.AdapterView +import com.casic.br.R +import com.casic.br.adapter.ShowerControlAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import kotlinx.android.synthetic.main.fragment_device_waterheater_control_shower.* + +class ShowerPageFragment : KotlinBaseFragment() { + + private val icons = intArrayOf( + R.drawable.ic_once, + R.drawable.ic_initiate, + R.drawable.ic_reservation, + R.drawable.ic_pressure + ) + private val tags = arrayOf("单次", "点动", "预约", "增压") + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_shower + + override fun setupTopBarLayout() { + + } + + override fun initData() { + showerGridView.adapter = ShowerControlAdapter(requireContext(), icons, tags) + showerGridView.onItemClickListener = object : AdapterView.OnItemClickListener { + override fun onItemClick( + parent: AdapterView<*>?, view: View?, position: Int, id: Long + ) { + + } + } + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt new file mode 100644 index 0000000..ab0460b --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/waterheater/control/TemperaturePageFragment.kt @@ -0,0 +1,25 @@ +package com.casic.br.fragment.waterheater.control + +import com.casic.br.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class TemperaturePageFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_device_waterheater_control_temp + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 1db7a3d..3e21b07 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,17 +1,35 @@ package com.casic.br.view.device +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.casic.br.R +import com.casic.br.adapter.TabPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar +import com.casic.br.fragment.waterheater.ControlPageFragment +import com.casic.br.fragment.waterheater.ServicePageFragment +import com.casic.br.fragment.waterheater.StatusPageFragment +import com.flyco.tablayout.listener.OnTabSelectListener import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import kotlinx.android.synthetic.main.activity_water_heater.* +import java.util.* + /** * 热水器 * */ class WaterHeaterActivity : KotlinBaseActivity() { + private val deviceSegmentTitle = arrayOf("设备控制", "状态显示", "服务设置") + private var fragmentPages: ArrayList = ArrayList() + + init { + fragmentPages.add(ControlPageFragment()) + fragmentPages.add(StatusPageFragment()) + fragmentPages.add(ServicePageFragment()) + } + override fun initLayoutView(): Int = R.layout.activity_water_heater override fun setupTopBarLayout() { @@ -23,7 +41,7 @@ } override fun initData() { - + deviceSegmentView.setTabData(deviceSegmentTitle) } override fun observeRequestState() { @@ -34,5 +52,34 @@ rightOperateView.setOnClickListener { } + + deviceSegmentView.setOnTabSelectListener(object : OnTabSelectListener { + override fun onTabSelect(position: Int) { + deviceViewPager.currentItem = position + } + + override fun onTabReselect(position: Int) { + + } + }) + deviceViewPager.adapter = + TabPagerAdapter(fragmentPages, deviceSegmentTitle, supportFragmentManager) + deviceViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + + } + + override fun onPageSelected(position: Int) { + deviceSegmentView.currentTab = position + } + + override fun onPageScrollStateChanged(state: Int) { + + } + + }) + deviceViewPager.currentItem = 0 } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml new file mode 100644 index 0000000..da19b22 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_light_main_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_white_selector.xml b/app/src/main/res/drawable/button_white_selector.xml deleted file mode 100644 index c32a27e..0000000 --- a/app/src/main/res/drawable/button_white_selector.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_initiate.xml b/app/src/main/res/drawable/ic_initiate.xml new file mode 100644 index 0000000..a84572b --- /dev/null +++ b/app/src/main/res/drawable/ic_initiate.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_once.xml b/app/src/main/res/drawable/ic_once.xml new file mode 100644 index 0000000..aeb1d55 --- /dev/null +++ b/app/src/main/res/drawable/ic_once.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_pressure.xml b/app/src/main/res/drawable/ic_pressure.xml new file mode 100644 index 0000000..a217ee3 --- /dev/null +++ b/app/src/main/res/drawable/ic_pressure.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_reservation.xml b/app/src/main/res/drawable/ic_reservation.xml new file mode 100644 index 0000000..875a4d3 --- /dev/null +++ b/app/src/main/res/drawable/ic_reservation.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_turn_off.xml b/app/src/main/res/drawable/ic_turn_off.xml new file mode 100644 index 0000000..9b09f5c --- /dev/null +++ b/app/src/main/res/drawable/ic_turn_off.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/select_switch_background.xml b/app/src/main/res/drawable/select_switch_background.xml new file mode 100644 index 0000000..30f4f28 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_switch_circle.xml b/app/src/main/res/drawable/select_switch_circle.xml new file mode 100644 index 0000000..4e06301 --- /dev/null +++ b/app/src/main/res/drawable/select_switch_circle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml new file mode 100644 index 0000000..3d50bdb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_solid_layout_main_radius_10.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml b/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml deleted file mode 100644 index b18e5c5..0000000 --- a/app/src/main/res/drawable/selector_bg_solid_layout_white_radius_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml new file mode 100644 index 0000000..b18e5c5 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_stroke_layout_main_radius_10.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_off.xml b/app/src/main/res/drawable/switch_background_off.xml new file mode 100644 index 0000000..6c7fe93 --- /dev/null +++ b/app/src/main/res/drawable/switch_background_off.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_background_on.xml b/app/src/main/res/drawable/switch_background_on.xml new file mode 100644 index 0000000..91213fc --- /dev/null +++ b/app/src/main/res/drawable/switch_background_on.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_off.xml b/app/src/main/res/drawable/switch_circle_off.xml new file mode 100644 index 0000000..a05ee78 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_off.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/switch_circle_on.xml b/app/src/main/res/drawable/switch_circle_on.xml new file mode 100644 index 0000000..00e53b6 --- /dev/null +++ b/app/src/main/res/drawable/switch_circle_on.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml index 5090bee..5a5f36f 100644 --- a/app/src/main/res/layout/activity_water_heater.xml +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -1,5 +1,6 @@ + android:textSize="@dimen/sp_14" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control.xml b/app/src/main/res/layout/fragment_device_waterheater_control.xml new file mode 100644 index 0000000..a2f9808 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_kitchen.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml new file mode 100644 index 0000000..84e94b9 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_shower.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_control_temp.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_service.xml b/app/src/main/res/layout/fragment_device_waterheater_service.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_service.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device_waterheater_status.xml b/app/src/main/res/layout/fragment_device_waterheater_status.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_device_waterheater_status.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_added_device_rv_g.xml b/app/src/main/res/layout/item_added_device_rv_g.xml index cd9a1e7..e322e7e 100644 --- a/app/src/main/res/layout/item_added_device_rv_g.xml +++ b/app/src/main/res/layout/item_added_device_rv_g.xml @@ -5,7 +5,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_3" android:layout_marginBottom="@dimen/dp_7" - android:background="@drawable/selector_bg_solid_layout_white_radius_10" + android:background="@drawable/selector_bg_stroke_layout_main_radius_10" android:orientation="vertical" android:padding="@dimen/dp_5"> diff --git a/app/src/main/res/layout/item_shower_control_g.xml b/app/src/main/res/layout/item_shower_control_g.xml new file mode 100644 index 0000000..79de890 --- /dev/null +++ b/app/src/main/res/layout/item_shower_control_g.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 18924f7..419262f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -22,6 +22,7 @@ 50dp 55dp 60dp + 70dp 80dp 100dp 115dp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index b10cdde..633ea99 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -14,15 +14,6 @@ @drawable/button_main_selector - - - + +