diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_common_selector.xml b/app/src/main/res/drawable/button_common_selector.xml
new file mode 100644
index 0000000..d806fcf
--- /dev/null
+++ b/app/src/main/res/drawable/button_common_selector.xml
@@ -0,0 +1,18 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_common_selector.xml b/app/src/main/res/drawable/button_common_selector.xml
new file mode 100644
index 0000000..d806fcf
--- /dev/null
+++ b/app/src/main/res/drawable/button_common_selector.xml
@@ -0,0 +1,18 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_main_selector.xml b/app/src/main/res/drawable/button_main_selector.xml
index 5875998..f8e7781 100644
--- a/app/src/main/res/drawable/button_main_selector.xml
+++ b/app/src/main/res/drawable/button_main_selector.xml
@@ -3,16 +3,16 @@
-
-
+
-
-
+
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_common_selector.xml b/app/src/main/res/drawable/button_common_selector.xml
new file mode 100644
index 0000000..d806fcf
--- /dev/null
+++ b/app/src/main/res/drawable/button_common_selector.xml
@@ -0,0 +1,18 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_main_selector.xml b/app/src/main/res/drawable/button_main_selector.xml
index 5875998..f8e7781 100644
--- a/app/src/main/res/drawable/button_main_selector.xml
+++ b/app/src/main/res/drawable/button_main_selector.xml
@@ -3,16 +3,16 @@
-
-
+
-
-
+
-
+
\ 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
index 4dd3c0b..c32a27e 100644
--- a/app/src/main/res/drawable/button_white_selector.xml
+++ b/app/src/main/res/drawable/button_white_selector.xml
@@ -3,14 +3,14 @@
-
-
+
-
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_common_selector.xml b/app/src/main/res/drawable/button_common_selector.xml
new file mode 100644
index 0000000..d806fcf
--- /dev/null
+++ b/app/src/main/res/drawable/button_common_selector.xml
@@ -0,0 +1,18 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_main_selector.xml b/app/src/main/res/drawable/button_main_selector.xml
index 5875998..f8e7781 100644
--- a/app/src/main/res/drawable/button_main_selector.xml
+++ b/app/src/main/res/drawable/button_main_selector.xml
@@ -3,16 +3,16 @@
-
-
+
-
-
+
-
+
\ 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
index 4dd3c0b..c32a27e 100644
--- a/app/src/main/res/drawable/button_white_selector.xml
+++ b/app/src/main/res/drawable/button_white_selector.xml
@@ -3,14 +3,14 @@
-
-
+
-
-
+
diff --git a/app/src/main/res/drawable/ic_add_device.xml b/app/src/main/res/drawable/ic_add_device.xml
index 14c8ec9..e228615 100644
--- a/app/src/main/res/drawable/ic_add_device.xml
+++ b/app/src/main/res/drawable/ic_add_device.xml
@@ -1,9 +1,9 @@
+ android:fillColor="@color/mainThemeColor"
+ android:pathData="M512,42.67c259.2,0 469.33,210.13 469.33,469.33s-210.13,469.33 -469.33,469.33S42.67,771.2 42.67,512 252.8,42.67 512,42.67zM512,106.67C288.15,106.67 106.67,288.15 106.67,512s181.48,405.33 405.33,405.33 405.33,-181.48 405.33,-405.33S735.85,106.67 512,106.67zM546.13,320c4.69,0 8.53,3.84 8.53,8.53L554.67,469.33h140.8c4.69,0 8.53,3.84 8.53,8.53v46.93a8.53,8.53 0,0 1,-8.53 8.53L554.67,533.33v140.8a8.53,8.53 0,0 1,-8.53 8.53h-46.93a8.53,8.53 0,0 1,-8.53 -8.53L490.67,533.33h-140.8a8.53,8.53 0,0 1,-8.53 -8.53v-46.93c0,-4.69 3.84,-8.53 8.53,-8.53L490.67,469.33v-140.8c0,-4.69 3.84,-8.53 8.53,-8.53h46.93z" />
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo()
+ navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/br/view/SettingsActivity.kt b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
index b8dd006..2c89b31 100644
--- a/app/src/main/java/com/casic/br/view/SettingsActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SettingsActivity.kt
@@ -43,6 +43,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
index 26ea221..4fdf7dd 100644
--- a/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/br/view/SplashScreenActivity.kt
@@ -41,6 +41,10 @@
}
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
countDownTimer.start()
skipButton.setChangeAlphaWhenPress(true)
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
new file mode 100644
index 0000000..3561f6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_main_radius_7.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml b/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
deleted file mode 100644
index a93ef6c..0000000
--- a/app/src/main/res/drawable/bg_stroke_layout_radius_5.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_common_selector.xml b/app/src/main/res/drawable/button_common_selector.xml
new file mode 100644
index 0000000..d806fcf
--- /dev/null
+++ b/app/src/main/res/drawable/button_common_selector.xml
@@ -0,0 +1,18 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/button_main_selector.xml b/app/src/main/res/drawable/button_main_selector.xml
index 5875998..f8e7781 100644
--- a/app/src/main/res/drawable/button_main_selector.xml
+++ b/app/src/main/res/drawable/button_main_selector.xml
@@ -3,16 +3,16 @@
-
-
+
-
-
+
-
+
\ 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
index 4dd3c0b..c32a27e 100644
--- a/app/src/main/res/drawable/button_white_selector.xml
+++ b/app/src/main/res/drawable/button_white_selector.xml
@@ -3,14 +3,14 @@
-
-
+
-
-
+
diff --git a/app/src/main/res/drawable/ic_add_device.xml b/app/src/main/res/drawable/ic_add_device.xml
index 14c8ec9..e228615 100644
--- a/app/src/main/res/drawable/ic_add_device.xml
+++ b/app/src/main/res/drawable/ic_add_device.xml
@@ -1,9 +1,9 @@
+ android:fillColor="@color/mainThemeColor"
+ android:pathData="M512,42.67c259.2,0 469.33,210.13 469.33,469.33s-210.13,469.33 -469.33,469.33S42.67,771.2 42.67,512 252.8,42.67 512,42.67zM512,106.67C288.15,106.67 106.67,288.15 106.67,512s181.48,405.33 405.33,405.33 405.33,-181.48 405.33,-405.33S735.85,106.67 512,106.67zM546.13,320c4.69,0 8.53,3.84 8.53,8.53L554.67,469.33h140.8c4.69,0 8.53,3.84 8.53,8.53v46.93a8.53,8.53 0,0 1,-8.53 8.53L554.67,533.33v140.8a8.53,8.53 0,0 1,-8.53 8.53h-46.93a8.53,8.53 0,0 1,-8.53 -8.53L490.67,533.33h-140.8a8.53,8.53 0,0 1,-8.53 -8.53v-46.93c0,-4.69 3.84,-8.53 8.53,-8.53L490.67,469.33v-140.8c0,-4.69 3.84,-8.53 8.53,-8.53h46.93z" />
diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml
deleted file mode 100644
index b612ce9..0000000
--- a/app/src/main/res/drawable/ic_camera.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/build.gradle b/app/build.gradle
index 7cc948d..163aeb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,7 +61,7 @@
//Google官方授权框架
implementation 'pub.devrel:easypermissions:3.0.0'
//沉浸式状态栏。基础依赖包,必须要依赖
- implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
+ implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2'
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar
index bae3254..9f8c814 100644
--- a/app/libs/lite-release.aar
+++ b/app/libs/lite-release.aar
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7c387fc..defbd7a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
@@ -37,10 +38,20 @@
+
-
+
+
+
+
+
+
\ 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 48321ae..58a92c8 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,40 +1,89 @@
package com.casic.br.adapter
+import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.ImageView
+import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
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 dataRows: MutableList
+ private val context: Context, private val spacing: Float
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+ private val screenWidth = context.obtainScreenWidth()
+ private var dataRows: MutableList = ArrayList()
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
- layoutInflater.inflate(R.layout.item_added_device_rv_l, parent, false)
- )
+ fun setupDevice(devices: MutableList) {
+ dataRows = devices
+ notifyDataSetChanged()
+ }
- override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
- holder.deviceNameView.text = dataRows[position].deviceName
- holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
- holder.itemView.setOnClickListener {
- clickListener?.onItemClick(position)
+ fun deleteDevice(position: Int) {
+ if (dataRows.isNotEmpty()) {
+ dataRows.removeAt(position)
+ notifyDataSetChanged()
}
}
- override fun getItemCount(): Int = dataRows.size
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_added_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1) {
+ holder.deviceNameView.text = "添加设备"
+ holder.moreOperateButton.visibility = View.GONE
+
+ holder.imageView.setImageResource(R.drawable.ic_add_device)
+ if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
+ val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
+ params.setMargins(0, 3f.dp2px(context), 0, 0)
+ holder.imageView.requestLayout()
+ }
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
+
+ holder.tempLayout.visibility = View.GONE
+ holder.imageView.setOnClickListener { //添加图片
+ clickListener?.onAddDeviceClick()
+ }
+ } else {
+ holder.deviceNameView.text = dataRows[position].deviceName
+ holder.deviceModelView.text = dataRows[position].deviceModel
+ holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ // 长按监听
+ holder.moreOperateButton.setOnClickListener {
+ clickListener?.onButtonClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size + 1
private var clickListener: OnItemClickListener? = null
interface OnItemClickListener {
+ fun onAddDeviceClick()
+
fun onItemClick(position: Int)
+
+ fun onButtonClick(position: Int)
}
fun setOnItemClickListener(clickListener: OnItemClickListener?) {
@@ -42,8 +91,12 @@
}
class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/Context.kt b/app/src/main/java/com/casic/br/extensions/Context.kt
new file mode 100644
index 0000000..5866614
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/Context.kt
@@ -0,0 +1,12 @@
+package com.casic.br.extensions
+
+import android.content.Context
+import android.view.ViewGroup
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+fun Context.initLayoutImmersionBar(rootView: ViewGroup) {
+ //根据不同设备状态栏高度设置"跳过"按钮的Margin值
+ val statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this)
+ rootView.setPadding(0, statusBarHeight, 0, 0)
+ rootView.requestLayout()
+}
\ 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 9857505..c52f538 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,8 +1,9 @@
package com.casic.br.fragment
-import androidx.recyclerview.widget.DividerItemDecoration
+import android.graphics.Typeface
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.AddedDeviceModel
import com.casic.br.view.AllDeviceActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
@@ -17,7 +18,9 @@
override fun initLayoutView(): Int = R.layout.fragment_device
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "设备"
+ leftTitleView.typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun initData() {
@@ -25,33 +28,40 @@
val deviceModels = ArrayList()
for (i in 0..2) {
val model = AddedDeviceModel()
- model.deviceName = "*****热水器"
+ model.deviceName = "万家乐热水器"
+ model.deviceModel = "D40-DM1"
model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
- )
+ val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f)
+ addedDeviceAdapter.setupDevice(deviceModels)
deviceRecyclerView.adapter = addedDeviceAdapter
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+
+ }
+
override fun onItemClick(position: Int) {
//TODO 需要根据设备类型显示不同的页面
val deviceModel = deviceModels[position]
deviceModel.deviceName.show(requireContext())
}
+
+ override fun onButtonClick(position: Int) {
+
+ }
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
showAllDeviceLayout.setOnClickListener {
requireContext().navigatePageTo()
}
-
- addDeviceLayout.setOnClickListener {
-
- }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 07dfe01..8aba9b2 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -4,10 +4,13 @@
import com.casic.br.R
import com.casic.br.adapter.ConnectGridAdapter
import com.casic.br.adapter.HomeGridAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.model.BannerImageModel
import com.casic.br.utils.GridItemDecoration
import com.casic.br.utils.LocaleConstant
+import com.casic.br.view.LoginActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
+import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
@@ -15,7 +18,6 @@
import com.youth.banner.indicator.CircleIndicator
import com.youth.banner.transformer.AlphaPageTransformer
import kotlinx.android.synthetic.main.fragment_home.*
-import kotlinx.android.synthetic.main.fragment_recommend.*
import java.util.*
class HomePageFragment : KotlinBaseFragment() {
@@ -23,7 +25,7 @@
override fun initLayoutView(): Int = R.layout.fragment_home
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -82,7 +84,13 @@
})
}
- override fun initEvent() {
+ override fun observeRequestState() {
}
+
+ override fun initEvent() {
+ rightOperateView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
index 16fde61..90dcfcf 100644
--- a/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MessagePageFragment.kt
@@ -5,13 +5,13 @@
import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.br.R
import com.casic.br.adapter.MessageListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.showEmptyPage
import com.casic.br.model.LocaleMessageBean
import com.casic.br.utils.DataBaseManager
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import kotlinx.android.synthetic.main.fragment_message.*
-import kotlinx.android.synthetic.main.fragment_mine.*
import kotlinx.android.synthetic.main.include_empty_view.*
import kotlinx.android.synthetic.main.include_main_title.*
@@ -28,6 +28,7 @@
override fun initLayoutView(): Int = R.layout.fragment_message
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "消息"
}
@@ -35,6 +36,10 @@
weakReferenceHandler = WeakReferenceHandler(callback)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
messageLayout.setOnRefreshListener {
isRefresh = true
@@ -96,7 +101,7 @@
} else {
emptyView!!.hide()
messageAdapter = MessageListAdapter(requireContext(), dataBeans)
- settingsRecyclerView.addItemDecoration(
+ messageRecyclerView.addItemDecoration(
DividerItemDecoration(
requireContext(), DividerItemDecoration.VERTICAL
)
diff --git a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
index b3f222a..afc5de7 100644
--- a/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/MinePageFragment.kt
@@ -6,6 +6,7 @@
import com.casic.br.R
import com.casic.br.adapter.IconTextGridAdapter
import com.casic.br.adapter.IconTextListAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddressManagerActivity
import com.casic.br.view.EditUserActivity
@@ -20,6 +21,7 @@
override fun initLayoutView(): Int = R.layout.fragment_mine
override fun setupTopBarLayout() {
+ requireContext().initLayoutImmersionBar(rootView)
leftTitleView.text = "我的"
}
@@ -85,6 +87,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
editUserView.setOnClickListener {
requireContext().navigatePageTo()
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 8b11894..cc69400 100644
--- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt
@@ -3,6 +3,7 @@
import androidx.fragment.app.Fragment
import com.casic.br.R
import com.casic.br.adapter.SubViewPagerAdapter
+import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.fragment.shop.ComponentFragment
import com.casic.br.fragment.shop.RecommendFragment
import com.casic.br.fragment.shop.SmartHomeFragment
@@ -26,7 +27,7 @@
override fun initLayoutView(): Int = R.layout.fragment_shop
override fun setupTopBarLayout() {
-
+ requireContext().initLayoutImmersionBar(rootView)
}
override fun initData() {
@@ -37,6 +38,10 @@
shopTopTabLayout.setupWithViewPager(shopViewPager)
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
index dc67cc4..760d844 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/ComponentFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
index 68791a0..a013b9e 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt
@@ -99,6 +99,10 @@
})
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
index 09753d6..508fc18 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartHomeFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
index 535e512..0c4e37a 100644
--- a/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/shop/SmartKitchenFragment.kt
@@ -15,6 +15,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 40a545c..451a69a 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -4,11 +4,20 @@
* 已添加设备(Iot和非Iot设备)数据模型
*/
public class AddedDeviceModel {
- private String deviceImage;
private String deviceName;
+ private String deviceImage;
+ private String deviceModel;
private String deviceType;
private String deviceUsedTime;
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
@@ -17,12 +26,12 @@
this.deviceImage = deviceImage;
}
- public String getDeviceName() {
- return deviceName;
+ public String getDeviceModel() {
+ return deviceModel;
}
- public void setDeviceName(String deviceName) {
- this.deviceName = deviceName;
+ public void setDeviceModel(String deviceModel) {
+ this.deviceModel = deviceModel;
}
public String getDeviceType() {
diff --git a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
index bdf257e..1842b75 100644
--- a/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AddressManagerActivity.kt
@@ -23,6 +23,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
}
diff --git a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
index bafd851..c4bb8d2 100644
--- a/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/AllDeviceActivity.kt
@@ -35,19 +35,23 @@
deviceModels.add(model)
}
- val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
- deviceRecyclerView.addItemDecoration(
- DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
- )
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- deviceModel.deviceName.show(this@AllDeviceActivity)
- }
- })
+// val addedDeviceAdapter = AddedDeviceAdapter(this, deviceModels)
+// deviceRecyclerView.addItemDecoration(
+// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+// )
+// deviceRecyclerView.adapter = addedDeviceAdapter
+// addedDeviceAdapter.setOnItemClickListener(object :
+// AddedDeviceAdapter.OnItemClickListener {
+// override fun onItemClick(position: Int) {
+// //TODO 需要根据设备类型显示不同的页面
+// val deviceModel = deviceModels[position]
+// deviceModel.deviceName.show(this@AllDeviceActivity)
+// }
+// })
+ }
+
+ override fun observeRequestState() {
+
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/br/view/EditUserActivity.kt b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
index 9b04044..70ecf10 100644
--- a/app/src/main/java/com/casic/br/view/EditUserActivity.kt
+++ b/app/src/main/java/com/casic/br/view/EditUserActivity.kt
@@ -41,6 +41,10 @@
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
avatarLayout.setOnClickListener {
BottomActionSheet.Builder()
diff --git a/app/src/main/java/com/casic/br/view/LoginActivity.kt b/app/src/main/java/com/casic/br/view/LoginActivity.kt
new file mode 100644
index 0000000..9de6790
--- /dev/null
+++ b/app/src/main/java/com/casic/br/view/LoginActivity.kt
@@ -0,0 +1,26 @@
+package com.casic.br.view
+
+import com.casic.br.R
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class LoginActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_login
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+
+ 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/MainActivity.kt b/app/src/main/java/com/casic/br/view/MainActivity.kt
index c2fe809..a2fb29a 100644
--- a/app/src/main/java/com/casic/br/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/br/view/MainActivity.kt
@@ -9,9 +9,7 @@
import com.casic.br.fragment.*
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : KotlinBaseActivity() {
@@ -32,13 +30,16 @@
override fun setupTopBarLayout() {
ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
}
override fun initData() {
}
+ override fun observeRequestState() {
+
+ }
+
override fun initEvent() {
bottomNavigation.itemIconTintList = null
bottomNavigation.setOnItemSelectedListener { menuItem ->
diff --git a/app/src/main/java/com/casic/br/view/PermissionActivity.kt b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
index 62a5fb8..1a2a9c8 100644
--- a/app/src/main/java/com/casic/br/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/br/view/PermissionActivity.kt
@@ -1,47 +1,34 @@
package com.casic.br.view
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
import com.casic.br.R
import com.casic.br.utils.LocaleConstant
-import com.gyf.immersionbar.ImmersionBar
-import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.extensions.convertColor
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
-import kotlinx.android.synthetic.main.activity_permssion.*
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
-class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks {
+class PermissionActivity : AppCompatActivity(), PermissionCallbacks {
- override fun initLayoutView(): Int = R.layout.activity_permssion
-
- override fun setupTopBarLayout() {
- ImmersionBar.with(this).statusBarDarkFont(true).init()
- ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this))
- }
-
- override fun initData() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
- enterMainButton.setOnClickListener {
- EasyPermissions.requestPermissions(
- this@PermissionActivity,
- resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocaleConstant.PERMISSIONS_CODE,
- *LocaleConstant.USER_PERMISSIONS
- )
- }
+ EasyPermissions.requestPermissions(
+ this@PermissionActivity,
+ resources.getString(R.string.app_name) + "需要获取存储相关权限",
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
+ )
}
}
- override fun initEvent() {
-
- }
-
private fun startSplashScreenActivity() {
- navigatePageTo()
+ //TODO 不要开屏页
+// navigatePageTo