diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0ee3a5..9fc7c01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,8 +86,9 @@
-
+
+
-
+
+
()
}
+
+ backLayout.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
private fun analyticalSelectResults(result: LocalMedia) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0ee3a5..9fc7c01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,8 +86,9 @@
-
+
+
()
}
+
+ backLayout.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
private fun analyticalSelectResults(result: LocalMedia) {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
new file mode 100644
index 0000000..a23d7fb
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
@@ -0,0 +1,162 @@
+package com.casic.xz.meterage.view
+
+import android.content.Context
+import android.graphics.Color
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.OnImageCompressListener
+import com.casic.xz.meterage.extensions.combineImagePath
+import com.casic.xz.meterage.extensions.compressImage
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.utils.FileType
+import com.casic.xz.meterage.utils.GlideLoadEngine
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.FileViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.adapter.EditableImageAdapter
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import kotlinx.android.synthetic.main.activity_feed_back.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class FeedbackActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@FeedbackActivity
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var fileUploadViewModel: FileViewModel
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_feed_back
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "意见反馈"
+ }
+
+ override fun initData() {
+ imageAdapter = EditableImageAdapter(this, 1, 3f)
+ addImageRecyclerView.adapter = imageAdapter
+
+ fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java]
+ fileUploadViewModel.resultModel.observe(this) {
+ if (it.code == 200) {
+ val url = it.data[0]
+ if (url.isNotBlank()) {
+ imagePaths.add(url)
+ realPaths.add(url.combineImagePath())
+ }
+ imageAdapter.setupImage(images = realPaths)
+ }
+ }
+ }
+
+ override fun observeRequestState() {
+ fileUploadViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ submitButton.setOnClickListener {
+ "接口未实现".show(this)
+ }
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setItemTextColor(Color.BLUE)
+ .setActionItemTitle(listOf("拍照", "相册"))
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> PictureSelector.create(this@FeedbackActivity)
+ .openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ 1 -> PictureSelector.create(this@FeedbackActivity)
+ .openGallery(SelectMimeType.ofImage())
+ .isGif(false)
+ .isMaxSelectEnabledMask(true)
+ .setFilterMinFileSize(100)
+ .setMaxSelectNum(1)
+ .isDisplayCamera(false)
+ .setImageEngine(GlideLoadEngine.get)
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "选择照片失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+ }
+ }).build().show()
+ }
+
+ private fun analyticalSelectResults(result: LocalMedia) {
+ //压缩图片后上传
+ result.realPath.compressImage(this, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ //上传图片
+ fileUploadViewModel.uploadFile(file, FileType.IMAGE)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0ee3a5..9fc7c01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,8 +86,9 @@
-
+
+
()
}
+
+ backLayout.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
private fun analyticalSelectResults(result: LocalMedia) {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
new file mode 100644
index 0000000..a23d7fb
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
@@ -0,0 +1,162 @@
+package com.casic.xz.meterage.view
+
+import android.content.Context
+import android.graphics.Color
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.OnImageCompressListener
+import com.casic.xz.meterage.extensions.combineImagePath
+import com.casic.xz.meterage.extensions.compressImage
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.utils.FileType
+import com.casic.xz.meterage.utils.GlideLoadEngine
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.FileViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.adapter.EditableImageAdapter
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import kotlinx.android.synthetic.main.activity_feed_back.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class FeedbackActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@FeedbackActivity
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var fileUploadViewModel: FileViewModel
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_feed_back
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "意见反馈"
+ }
+
+ override fun initData() {
+ imageAdapter = EditableImageAdapter(this, 1, 3f)
+ addImageRecyclerView.adapter = imageAdapter
+
+ fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java]
+ fileUploadViewModel.resultModel.observe(this) {
+ if (it.code == 200) {
+ val url = it.data[0]
+ if (url.isNotBlank()) {
+ imagePaths.add(url)
+ realPaths.add(url.combineImagePath())
+ }
+ imageAdapter.setupImage(images = realPaths)
+ }
+ }
+ }
+
+ override fun observeRequestState() {
+ fileUploadViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ submitButton.setOnClickListener {
+ "接口未实现".show(this)
+ }
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setItemTextColor(Color.BLUE)
+ .setActionItemTitle(listOf("拍照", "相册"))
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> PictureSelector.create(this@FeedbackActivity)
+ .openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ 1 -> PictureSelector.create(this@FeedbackActivity)
+ .openGallery(SelectMimeType.ofImage())
+ .isGif(false)
+ .isMaxSelectEnabledMask(true)
+ .setFilterMinFileSize(100)
+ .setMaxSelectNum(1)
+ .isDisplayCamera(false)
+ .setImageEngine(GlideLoadEngine.get)
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "选择照片失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+ }
+ }).build().show()
+ }
+
+ private fun analyticalSelectResults(result: LocalMedia) {
+ //压缩图片后上传
+ result.realPath.compressImage(this, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ //上传图片
+ fileUploadViewModel.uploadFile(file, FileType.IMAGE)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
new file mode 100644
index 0000000..59a71d3
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0ee3a5..9fc7c01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,8 +86,9 @@
-
+
+
()
}
+
+ backLayout.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
private fun analyticalSelectResults(result: LocalMedia) {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
new file mode 100644
index 0000000..a23d7fb
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
@@ -0,0 +1,162 @@
+package com.casic.xz.meterage.view
+
+import android.content.Context
+import android.graphics.Color
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.OnImageCompressListener
+import com.casic.xz.meterage.extensions.combineImagePath
+import com.casic.xz.meterage.extensions.compressImage
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.utils.FileType
+import com.casic.xz.meterage.utils.GlideLoadEngine
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.FileViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.adapter.EditableImageAdapter
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import kotlinx.android.synthetic.main.activity_feed_back.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class FeedbackActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@FeedbackActivity
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var fileUploadViewModel: FileViewModel
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_feed_back
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "意见反馈"
+ }
+
+ override fun initData() {
+ imageAdapter = EditableImageAdapter(this, 1, 3f)
+ addImageRecyclerView.adapter = imageAdapter
+
+ fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java]
+ fileUploadViewModel.resultModel.observe(this) {
+ if (it.code == 200) {
+ val url = it.data[0]
+ if (url.isNotBlank()) {
+ imagePaths.add(url)
+ realPaths.add(url.combineImagePath())
+ }
+ imageAdapter.setupImage(images = realPaths)
+ }
+ }
+ }
+
+ override fun observeRequestState() {
+ fileUploadViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ submitButton.setOnClickListener {
+ "接口未实现".show(this)
+ }
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setItemTextColor(Color.BLUE)
+ .setActionItemTitle(listOf("拍照", "相册"))
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> PictureSelector.create(this@FeedbackActivity)
+ .openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ 1 -> PictureSelector.create(this@FeedbackActivity)
+ .openGallery(SelectMimeType.ofImage())
+ .isGif(false)
+ .isMaxSelectEnabledMask(true)
+ .setFilterMinFileSize(100)
+ .setMaxSelectNum(1)
+ .isDisplayCamera(false)
+ .setImageEngine(GlideLoadEngine.get)
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "选择照片失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+ }
+ }).build().show()
+ }
+
+ private fun analyticalSelectResults(result: LocalMedia) {
+ //压缩图片后上传
+ result.realPath.compressImage(this, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ //上传图片
+ fileUploadViewModel.uploadFile(file, FileType.IMAGE)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
new file mode 100644
index 0000000..59a71d3
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feed_back.xml b/app/src/main/res/layout/activity_feed_back.xml
new file mode 100644
index 0000000..045b087
--- /dev/null
+++ b/app/src/main/res/layout/activity_feed_back.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0ee3a5..9fc7c01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,8 +86,9 @@
-
+
+
()
}
+
+ backLayout.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
private fun analyticalSelectResults(result: LocalMedia) {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
new file mode 100644
index 0000000..a23d7fb
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/FeedbackActivity.kt
@@ -0,0 +1,162 @@
+package com.casic.xz.meterage.view
+
+import android.content.Context
+import android.graphics.Color
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.OnImageCompressListener
+import com.casic.xz.meterage.extensions.combineImagePath
+import com.casic.xz.meterage.extensions.compressImage
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.utils.FileType
+import com.casic.xz.meterage.utils.GlideLoadEngine
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.FileViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.basic.PictureSelector
+import com.luck.picture.lib.config.SelectMimeType
+import com.luck.picture.lib.entity.LocalMedia
+import com.luck.picture.lib.interfaces.OnResultCallbackListener
+import com.pengxh.kt.lite.adapter.EditableImageAdapter
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import kotlinx.android.synthetic.main.activity_feed_back.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class FeedbackActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@FeedbackActivity
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var fileUploadViewModel: FileViewModel
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+
+ override fun initLayoutView(): Int = R.layout.activity_feed_back
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "意见反馈"
+ }
+
+ override fun initData() {
+ imageAdapter = EditableImageAdapter(this, 1, 3f)
+ addImageRecyclerView.adapter = imageAdapter
+
+ fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java]
+ fileUploadViewModel.resultModel.observe(this) {
+ if (it.code == 200) {
+ val url = it.data[0]
+ if (url.isNotBlank()) {
+ imagePaths.add(url)
+ realPaths.add(url.combineImagePath())
+ }
+ imageAdapter.setupImage(images = realPaths)
+ }
+ }
+ }
+
+ override fun observeRequestState() {
+ fileUploadViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show(context)
+ } else {
+ context.navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ submitButton.setOnClickListener {
+ "接口未实现".show(this)
+ }
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setItemTextColor(Color.BLUE)
+ .setActionItemTitle(listOf("拍照", "相册"))
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> PictureSelector.create(this@FeedbackActivity)
+ .openCamera(SelectMimeType.ofImage())
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "拍照失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ 1 -> PictureSelector.create(this@FeedbackActivity)
+ .openGallery(SelectMimeType.ofImage())
+ .isGif(false)
+ .isMaxSelectEnabledMask(true)
+ .setFilterMinFileSize(100)
+ .setMaxSelectNum(1)
+ .isDisplayCamera(false)
+ .setImageEngine(GlideLoadEngine.get)
+ .forResult(object : OnResultCallbackListener {
+ override fun onResult(result: ArrayList?) {
+ if (result == null) {
+ "选择照片失败,请重试".show(this@FeedbackActivity)
+ return
+ }
+ analyticalSelectResults(result[0])
+ }
+
+ override fun onCancel() {
+
+ }
+ })
+ }
+ }
+ }).build().show()
+ }
+
+ private fun analyticalSelectResults(result: LocalMedia) {
+ //压缩图片后上传
+ result.realPath.compressImage(this, object : OnImageCompressListener {
+ override fun onSuccess(file: File) {
+ //上传图片
+ fileUploadViewModel.uploadFile(file, FileType.IMAGE)
+ }
+
+ override fun onError(e: Throwable) {
+ e.printStackTrace()
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
new file mode 100644
index 0000000..59a71d3
--- /dev/null
+++ b/app/src/main/res/drawable/bg_solid_layout_smoke_radius_3.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_feed_back.xml b/app/src/main/res/layout/activity_feed_back.xml
new file mode 100644
index 0000000..045b087
--- /dev/null
+++ b/app/src/main/res/layout/activity_feed_back.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 99e8c4d..73d1399 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,6 +4,7 @@
数据加载中…
中国航天科工集团二院二〇三所 版权所有
Copyright © 2023 – 2050 Casic. All rights reserved.
+ 请输入问题描述,点击下方\"+\"号提交截图,帮助我们更快定位您的问题
\u3000\u3000智慧计量业务 App 尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,智慧计量业务 App 会按照本隐私权政策的规定使用和披露您的个人信息。但智慧计量业务 App 将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,智慧计量业务 App 不会将这些信息对外披露或向第三方提供。智慧计量业务 App 会不时更新本隐私权政策。 您在同意智慧计量业务 App 服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于智慧计量业务 App 服务使用协议不可分割的一部分。