diff --git a/.gradle/8.13/checksums/checksums.lock b/.gradle/8.13/checksums/checksums.lock
index 8e67f7d..c70b405 100644
Binary files a/.gradle/8.13/checksums/checksums.lock and b/.gradle/8.13/checksums/checksums.lock differ
diff --git a/.gradle/8.13/checksums/md5-checksums.bin b/.gradle/8.13/checksums/md5-checksums.bin
index 414ea54..2109238 100644
Binary files a/.gradle/8.13/checksums/md5-checksums.bin and b/.gradle/8.13/checksums/md5-checksums.bin differ
diff --git a/.gradle/8.13/checksums/sha1-checksums.bin b/.gradle/8.13/checksums/sha1-checksums.bin
index f0ba4bc..dc0ec33 100644
Binary files a/.gradle/8.13/checksums/sha1-checksums.bin and b/.gradle/8.13/checksums/sha1-checksums.bin differ
diff --git a/.gradle/8.13/executionHistory/executionHistory.bin b/.gradle/8.13/executionHistory/executionHistory.bin
index 59f9a82..e4da689 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.bin and b/.gradle/8.13/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.13/executionHistory/executionHistory.lock b/.gradle/8.13/executionHistory/executionHistory.lock
index 0c981d4..81cebf5 100644
Binary files a/.gradle/8.13/executionHistory/executionHistory.lock and b/.gradle/8.13/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.bin b/.gradle/8.13/fileHashes/fileHashes.bin
index 9f694b2..5d176c2 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.bin and b/.gradle/8.13/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.13/fileHashes/fileHashes.lock b/.gradle/8.13/fileHashes/fileHashes.lock
index ebe8a1c..23857b8 100644
Binary files a/.gradle/8.13/fileHashes/fileHashes.lock and b/.gradle/8.13/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.13/fileHashes/resourceHashesCache.bin b/.gradle/8.13/fileHashes/resourceHashesCache.bin
index b2bc407..6083891 100644
Binary files a/.gradle/8.13/fileHashes/resourceHashesCache.bin and b/.gradle/8.13/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 52b54a7..5481a74 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 3d894c0..71c0a1d 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
index f5d5fce..e112b74 100644
--- a/.idea/caches/deviceStreaming.xml
+++ b/.idea/caches/deviceStreaming.xml
@@ -75,6 +75,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index ca16a99..cb69049 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,13 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cc983e8..2a45ead 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -295,7 +295,7 @@
-
+
@@ -305,12 +305,12 @@
-
-
+
+
-
-
+
+
@@ -326,4 +326,4 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/java/com/ck/ckcollar/app/CKApp.kt b/app/src/main/java/com/ck/ckcollar/app/CKApp.kt
index 303a503..5ceac2d 100644
--- a/app/src/main/java/com/ck/ckcollar/app/CKApp.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/CKApp.kt
@@ -80,6 +80,7 @@ class CKApp : Application() {
isUserLoggedIn = false
PreferencesUtils.putString(this, Const.TOKEN, "")
PreferencesUtils.putString(this, Const.USER_DATA, "")
+ PreferencesUtils.putString(this, Const.PET_DATA, "")
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/BlueToothActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/BlueToothActivity.kt
index db89379..20b7350 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/BlueToothActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/BlueToothActivity.kt
@@ -29,7 +29,11 @@ import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
class BlueToothActivity : CKBaseActivity() , PermissionCallbacks{
lateinit var activityBluetoothBinding: ActivityBluetoothBinding
- val permissions = listOf(Manifest.permission.BLUETOOTH,Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH_SCAN,Manifest.permission.BLUETOOTH_CONNECT)
+ val permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ listOf(Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT)
+ } else {
+ listOf(Manifest.permission.ACCESS_FINE_LOCATION)
+ }
lateinit var blueBoothAdapter: BlueBoothAdapter
var devices = mutableListOf()
@@ -185,7 +189,17 @@ class BlueToothActivity : CKBaseActivity() , PermissionCallbacks{
requestCode: Int,
perms: List
) {
+ val deniedPermissions = perms.filterNotNull().toTypedArray()
+ val permanentlyDenied = deniedPermissions.any {
+ !ActivityCompat.shouldShowRequestPermissionRationale(this, it)
+ }
+ if (permanentlyDenied) {
+ super.onPermissionsDenied(requestCode, deniedPermissions, true)
+ }
+ }
+ override fun onPermissionsGranted(requestCode: Int, permissions: Array) {
+ initData()
}
class BlueBoothAdapter(var context: CKBaseActivity, var scanResults: List) : RecyclerView.Adapter() {
@@ -215,4 +229,4 @@ class BlueToothActivity : CKBaseActivity() , PermissionCallbacks{
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/WifiListActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/WifiListActivity.kt
index 5aecb5a..df576e1 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/WifiListActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/WifiListActivity.kt
@@ -143,7 +143,17 @@ class WifiListActivity : CKBaseActivity(), PermissionCallbacks {
requestCode: Int,
perms: List
) {
+ val deniedPermissions = perms.filterNotNull().toTypedArray()
+ val permanentlyDenied = deniedPermissions.any {
+ !ActivityCompat.shouldShowRequestPermissionRationale(this, it)
+ }
+ if (permanentlyDenied) {
+ super.onPermissionsDenied(requestCode, deniedPermissions, true)
+ }
+ }
+ override fun onPermissionsGranted(requestCode: Int, permissions: Array) {
+ initData()
}
class WifiAdapter(var context: CKBaseActivity, var scanResults: List) : RecyclerView.Adapter() {
@@ -177,4 +187,4 @@ class WifiListActivity : CKBaseActivity(), PermissionCallbacks {
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/BalanceActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/BalanceActivity.kt
index 57b9a91..fa6b7d6 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/BalanceActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/balance/BalanceActivity.kt
@@ -39,6 +39,8 @@ import java.text.SimpleDateFormat
import java.util.Date
class BalanceActivity : CKLHBaseActionBarActivity() , View.OnClickListener{
+ override val shouldRequestPermissionsOnCreate: Boolean = false
+
lateinit var binding: ActivityBalanceBinding
var data = listOf()
lateinit var adapter: RecordAdapter
@@ -116,9 +118,16 @@ class BalanceActivity : CKLHBaseActionBarActivity() , View.OnClickListener{
override fun onStart() {
super.onStart()
- getBalanceInfo()
-
- getList()
+ showProgeassDialog()
+ var pendingRequests = 2
+ val onRequestFinished = {
+ pendingRequests--
+ if (pendingRequests == 0) {
+ hiddenProgeassDialog()
+ }
+ }
+ getBalanceInfo(onRequestFinished)
+ getList(onRequestFinished)
}
override fun getResult(data: DataCollection, resultCode: Int) {
if (resultCode == 1001){
@@ -127,22 +136,24 @@ class BalanceActivity : CKLHBaseActionBarActivity() , View.OnClickListener{
getList()
}
}
- fun getBalanceInfo(){
+ fun getBalanceInfo(onFinished: (() -> Unit)? = null){
TTHttpClient.get(this,"余额", TTRequestParam(),object : ICallback{
override fun onSuccess(data: String) {
model = Gson().fromJson(data, BalanceModle::class.java)
binding.textBalance.text = model?.balance.toString()
+ onFinished?.invoke()
}
override fun onFailed(code: String, msg: String) {
+ onFinished?.invoke()
toast(msg)
}
})
}
- fun getList(){
+ fun getList(onFinished: (() -> Unit)? = null){
TTHttpClient.get(this,"余额明细列表", TTRequestParam().apply { add(TTRequestData("type",type))
add(TTRequestData("month",""))},object : ICallback{
override fun onSuccess(data: String) {
@@ -150,9 +161,11 @@ class BalanceActivity : CKLHBaseActionBarActivity() , View.OnClickListener{
adapter.data = this@BalanceActivity.data
adapter.notifyDataSetChanged()
+ onFinished?.invoke()
}
override fun onFailed(code: String, msg: String) {
+ onFinished?.invoke()
toast(msg)
}
})
@@ -238,4 +251,4 @@ class BalanceActivity : CKLHBaseActionBarActivity() , View.OnClickListener{
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt
index b8f8a58..dbc6f32 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt
@@ -60,7 +60,6 @@ import com.tt.kit.utils.TTLog
import com.tt.kit.utils.TTUtils
import java.io.File
import java.util.UUID
-import kotlin.math.min
class CustomerActivity : CKBaseActivity() {
@@ -118,6 +117,10 @@ class CustomerActivity : CKBaseActivity() {
binding.editMessage.setSingleLine(false)
binding.editMessage.imeOptions = EditorInfo.IME_ACTION_NONE
binding.editMessage.setRawInputType(android.text.InputType.TYPE_CLASS_TEXT or android.text.InputType.TYPE_TEXT_FLAG_MULTI_LINE)
+ // setSingleLine(false) resets the XML maxLines value, so apply it last.
+ binding.editMessage.maxLines = 4
+ binding.editMessage.maxHeight = (70 * resources.displayMetrics.density).toInt()
+ binding.editMessage.isVerticalScrollBarEnabled = true
binding.editMessage.setOnEditorActionListener(object : TextView.OnEditorActionListener {
override fun onEditorAction(
@@ -179,14 +182,6 @@ class CustomerActivity : CKBaseActivity() {
) {
if (p0?.toString()?.trim()?.isNotEmpty() == true) isSending = false
updateSendControls()
- try {
- val lineCount: Int? = binding.editMessage.getLineCount()
- val lineHeight: Int = binding.editMessage.getLineHeight()
- val maxHeight: Int = lineCount!! * lineHeight
- binding.editMessage.setHeight(min(maxHeight, maxHeight))
- }catch (e : Exception){
- e.toString()
- }
}
})
binding.btnMore.setOnClickListener {
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
index a66fa8a..d529aa4 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/MineCustomerActivity.kt
@@ -37,6 +37,7 @@ import com.ck.ckcollar.app.model.CustomerMessageModel
import com.ck.ckcollar.app.model.UploadModel
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.utils.Const
+import com.ck.ckcollar.app.utils.LubanCompressUtil
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
@@ -190,10 +191,7 @@ class MineCustomerActivity : CKBaseActivity() {
} else {
Manifest.permission.READ_EXTERNAL_STORAGE
}
- getPermissionRequst(
- permission,
- REQUEST_PHOTO_PERMISSION
- )
+ getPermissionRequst(permission, REQUEST_PHOTO_PERMISSION)
} else {
toast(getString(R.string.only_one_photo))
}
@@ -452,17 +450,35 @@ class MineCustomerActivity : CKBaseActivity() {
if (requestCode == 55 && resultCode == RESULT_OK) {
path = PreferencesUtils.getString(this@MineCustomerActivity, Const.IMAGE_PATH, "")!!
-
- //addImage(path!!)
- uploadImage()
+ compressAndUploadImage()
} else if (requestCode == 56 && resultCode == RESULT_OK) {
path = TTUtils.getImageUrl(this, data!!.getData());
- // addImage(path)
- uploadImage()
+ compressAndUploadImage()
}
}
+ private fun compressAndUploadImage() {
+ if (TextUtils.isEmpty(path)) return
+ LubanCompressUtil.getCompressFile(
+ this,
+ File(path),
+ object : LubanCompressUtil.CompressCallback {
+ override fun success(file: File) {
+ if (isFinishing || isDestroyed) return
+ path = file.absolutePath
+ uploadImage()
+ }
+
+ override fun fail(failMsg: String) {
+ if (isFinishing || isDestroyed) return
+ path = ""
+ toast(failMsg)
+ }
+ }
+ )
+ }
+
override fun onDestroy() {
super.onDestroy()
@@ -557,10 +573,11 @@ class MineCustomerActivity : CKBaseActivity() {
holder.binding.textTo.visibility = View.GONE
holder.binding.imageContentTo.visibility = View.VISIBLE
- Glide.with(context)
- .load(ActionCode.BASE_URL + model.url)
- .placeholder(R.mipmap.image_default)
- .into(holder.binding.imageContentTo)
+ ChatImageLoader.load(
+ context,
+ holder.binding.imageContentTo,
+ ActionCode.BASE_URL + model.url
+ )
} else {
holder.binding.textTo.visibility = View.VISIBLE
holder.binding.imageContentTo.visibility = View.GONE
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
index 49a3914..c7730e2 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/PeopleCustomerActivity.kt
@@ -46,6 +46,7 @@ import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.ui.dialog.CKAlertDialog
import com.ck.ckcollar.app.utils.CKUtils
import com.ck.ckcollar.app.utils.Const
+import com.ck.ckcollar.app.utils.LubanCompressUtil
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
@@ -228,10 +229,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
} else {
Manifest.permission.READ_EXTERNAL_STORAGE
}
- getPermissionRequst(
- permission,
- REQUEST_PHOTO_PERMISSION
- )
+ getPermissionRequst(permission, REQUEST_PHOTO_PERMISSION)
} else {
toast(getString(R.string.only_one_photo))
}
@@ -574,17 +572,35 @@ class PeopleCustomerActivity : CKBaseActivity() {
if (requestCode == 55 && resultCode == RESULT_OK) {
path = PreferencesUtils.getString(this@PeopleCustomerActivity, Const.IMAGE_PATH, "")!!
-
- //addImage(path!!)
- uploadImage()
+ compressAndUploadImage()
} else if (requestCode == 56 && resultCode == RESULT_OK) {
path = TTUtils.getImageUrl(this, data!!.getData());
- //addImage(path)
- uploadImage()
+ compressAndUploadImage()
}
}
+ private fun compressAndUploadImage() {
+ if (TextUtils.isEmpty(path)) return
+ LubanCompressUtil.getCompressFile(
+ this,
+ File(path),
+ object : LubanCompressUtil.CompressCallback {
+ override fun success(file: File) {
+ if (isFinishing || isDestroyed) return
+ path = file.absolutePath
+ uploadImage()
+ }
+
+ override fun fail(failMsg: String) {
+ if (isFinishing || isDestroyed) return
+ path = ""
+ toast(failMsg)
+ }
+ }
+ )
+ }
+
override fun onDestroy() {
super.onDestroy()
@@ -695,10 +711,7 @@ class PeopleCustomerActivity : CKBaseActivity() {
holder.binding.textTo.visibility = View.GONE
holder.binding.imageContentTo.visibility = View.VISIBLE
- Glide.with(context)
- .load( model.url)
- .placeholder(R.mipmap.image_default)
- .into(holder.binding.imageContentTo)
+ ChatImageLoader.load(context, holder.binding.imageContentTo, model.url!!)
holder.binding.imageContentTo.setTag(model.url)
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
index 79d48d1..9e0144a 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/ShopCustomerActivity.kt
@@ -1,5 +1,6 @@
package com.ck.ckcollar.app.ui.act.customer
+import android.Manifest
import android.content.Context
import android.content.Intent
import android.net.Uri
@@ -36,6 +37,7 @@ import com.ck.ckcollar.app.model.CustomerMessageModel
import com.ck.ckcollar.app.model.UploadModel
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.utils.Const
+import com.ck.ckcollar.app.utils.LubanCompressUtil
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestData
@@ -58,6 +60,8 @@ import java.util.concurrent.TimeUnit
class ShopCustomerActivity : CKBaseActivity() {
+ private val requestPhotoPermission = 1402
+
lateinit var binding: ActivityCustomerBinding
lateinit var customerMessageAdapter: CustomerMessageAdapter
var data = mutableListOf()
@@ -181,11 +185,12 @@ class ShopCustomerActivity : CKBaseActivity() {
binding.conetnt2.setOnClickListener {
if (TextUtils.isEmpty(path)) {
//相册
- val i = Intent(
- Intent.ACTION_PICK,
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI
- )
- startActivityForResult(i, 56)
+ val permission = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ Manifest.permission.READ_MEDIA_IMAGES
+ } else {
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ }
+ getPermissionRequst(permission, requestPhotoPermission)
} else {
toast(getString(R.string.only_one_photo))
}
@@ -194,6 +199,22 @@ class ShopCustomerActivity : CKBaseActivity() {
}
+ override fun onPermissionsGranted(requestCode: Int, permissions: Array) {
+ if (requestCode == requestPhotoPermission) {
+ openPhotoAlbum()
+ }
+ }
+
+ private fun openPhotoAlbum() {
+ val intent = Intent(
+ Intent.ACTION_PICK,
+ MediaStore.Images.Media.EXTERNAL_CONTENT_URI
+ ).apply {
+ setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*")
+ }
+ startActivityForResult(intent, 56)
+ }
+
override fun initData() {
//getList()
@@ -441,17 +462,35 @@ class ShopCustomerActivity : CKBaseActivity() {
if (requestCode == 55 && resultCode == RESULT_OK) {
path = PreferencesUtils.getString(this@ShopCustomerActivity, Const.IMAGE_PATH, "")!!
-
- //addImage(path!!)
- uploadImage()
+ compressAndUploadImage()
} else if (requestCode == 56 && resultCode == RESULT_OK) {
path = TTUtils.getImageUrl(this, data!!.getData());
- //addImage(path)
- uploadImage()
+ compressAndUploadImage()
}
}
+ private fun compressAndUploadImage() {
+ if (TextUtils.isEmpty(path)) return
+ LubanCompressUtil.getCompressFile(
+ this,
+ File(path),
+ object : LubanCompressUtil.CompressCallback {
+ override fun success(file: File) {
+ if (isFinishing || isDestroyed) return
+ path = file.absolutePath
+ uploadImage()
+ }
+
+ override fun fail(failMsg: String) {
+ if (isFinishing || isDestroyed) return
+ path = ""
+ toast(failMsg)
+ }
+ }
+ )
+ }
+
override fun onDestroy() {
super.onDestroy()
@@ -541,10 +580,7 @@ class ShopCustomerActivity : CKBaseActivity() {
holder.binding.textTo.visibility = View.GONE
holder.binding.imageContentTo.visibility = View.VISIBLE
- Glide.with(context)
- .load( model.url)
- .placeholder(R.mipmap.image_default)
- .into(holder.binding.imageContentTo)
+ ChatImageLoader.load(context, holder.binding.imageContentTo, model.url!!)
} else {
holder.binding.textTo.visibility = View.VISIBLE
holder.binding.imageContentTo.visibility = View.GONE
@@ -569,4 +605,4 @@ class ShopCustomerActivity : CKBaseActivity() {
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/MainActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/MainActivity.kt
index 8b7582a..a9ba531 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/MainActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/MainActivity.kt
@@ -1,5 +1,6 @@
package com.ck.ckcollar.app.ui.act.home
+import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.Bundle
@@ -116,6 +117,22 @@ class MainActivity : CKLHBaseActivity(),View.OnClickListener {
mainBinding.viewPager.setPagingEnabled(false)
+ if (intent.getBooleanExtra(EXTRA_SHOW_HOME, false)) {
+ showHomeTab()
+ }
+
+ }
+
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ setIntent(intent)
+ if (intent.getBooleanExtra(EXTRA_SHOW_HOME, false)) {
+ showHomeTab()
+ }
+ }
+
+ private fun showHomeTab() {
+ mainBinding.content1.performClick()
}
fun resetItemIcon() {
@@ -210,6 +227,7 @@ class MainActivity : CKLHBaseActivity(),View.OnClickListener {
}
companion object {
+ const val EXTRA_SHOW_HOME = "extra_show_home"
private const val EXIT_INTERVAL_MS = 2_000L
}
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt
index 2f58978..3f2ca44 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt
@@ -75,6 +75,7 @@ class HealthFragment: CKBaseFragment() {
toActivity(CustomerActivity::class.java, DataCollection())
}
binding.contentCustomer.setOnClickListener {
+ if (!requireLogin()) return@setOnClickListener
checkCustomerStatus()
}
binding.refreshLayout.setEnableLoadMore(false)
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HomeFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HomeFragment.kt
index 8ed1b72..c5cd8a7 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HomeFragment.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HomeFragment.kt
@@ -11,6 +11,7 @@ import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
+import android.provider.Settings
import android.text.TextUtils
import android.view.Gravity
import android.view.LayoutInflater
@@ -22,6 +23,7 @@ import android.widget.PopupWindow
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
+import androidx.core.app.ActivityCompat
import androidx.core.content.FileProvider
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.RecyclerView
@@ -80,18 +82,30 @@ class HomeFragment : CKBaseFragment() {
private var pendingCameraAction: CameraAction? = null
private var permissionTopDialog: AlertDialog? = null
+ private val cameraSettingsLauncher = registerForActivityResult(
+ ActivityResultContracts.StartActivityForResult()
+ ) {
+ val action = pendingCameraAction
+ pendingCameraAction = null
+ if (checkCameraPermissions()) {
+ performCameraAction(action)
+ }
+ }
private val cameraPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
hideCameraPermissionTopDialog()
val action = pendingCameraAction
- pendingCameraAction = null
if (granted) {
- when (action) {
- CameraAction.SCAN -> startScan()
- CameraAction.TAKE_PHOTO -> takePhoto()
- null -> Unit
- }
+ pendingCameraAction = null
+ performCameraAction(action)
+ } else if (!ActivityCompat.shouldShowRequestPermissionRationale(
+ requireActivity(),
+ Manifest.permission.CAMERA
+ )) {
+ showCameraSettingsDialog()
+ } else {
+ pendingCameraAction = null
}
}
@@ -103,6 +117,8 @@ class HomeFragment : CKBaseFragment() {
var dataModel: CollarTypeModel.TypeDataModel? = null
var homeModel: HomeModel? = null
var isFirstShow = false
+ private var waitingForLoginResult = false
+ private var loadedLoginToken: String? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -128,7 +144,8 @@ class HomeFragment : CKBaseFragment() {
homeBinding.textName?.setOnClickListener {
if (!requireLogin()) return@setOnClickListener
- getPetList()
+ if (collarDatas.size <= 1) return@setOnClickListener
+ showPetSelector()
}
//扫一扫
homeBinding.btnScan?.setOnClickListener {
@@ -206,6 +223,10 @@ class HomeFragment : CKBaseFragment() {
}
homeBinding.btnViewPostion?.setOnClickListener {
if (!requireLogin()) return@setOnClickListener
+ if(homeModel?.equipment?.collNum == null){
+ toast("请为您的爱宠绑定项圈")
+ return@setOnClickListener
+ }
getData(dataModel?.id.toString())
// toActivity(MapLocationActivity::class.java, DataCollection().apply {
@@ -242,10 +263,18 @@ class HomeFragment : CKBaseFragment() {
homeBinding.btnTraining?.setOnClickListener {
toast(getString(R.string.waitting_open_area))
}
+
+ LiveDataBus.get().with("FIRST", Int::class.java)
+ .observe(viewLifecycleOwner, object : Observer {
+ override fun onChanged(result: Int?) {
+ if (CKApp.app.isUserLoggedIn) getPetList2()
+ }
+ })
}
private fun requireLogin(): Boolean {
if (CKApp.app.isUserLoggedIn) return true
+ waitingForLoginResult = true
toActivity(LoginActivity::class.java, DataCollection())
return false
}
@@ -297,12 +326,12 @@ class HomeFragment : CKBaseFragment() {
override fun initData() {
if (!CKApp.app.isUserLoggedIn) {
- setBannerData(listOf(BannarModel().apply {
- localImageRes = R.mipmap.index_banner1
- }))
+ resetLoggedOutState()
return
}
+ loadedLoginToken = CKApp.app.token
+
var data = PreferencesUtils.getString(activity!!, Const.PET_DATA, "")
if (!TextUtils.isEmpty(data)) {
@@ -322,18 +351,9 @@ class HomeFragment : CKBaseFragment() {
}
- if (isFirstShow) {
- getPetList()
- }
+ getPetList()
- LiveDataBus.get().with("FIRST", Int::class.java)
- .observe(viewLifecycleOwner, object : Observer {
- override fun onChanged(result: Int?) {
- if (CKApp.app.isUserLoggedIn) getPetList2()
- }
- })
-
}
fun takePhoto() {
@@ -380,6 +400,7 @@ class HomeFragment : CKBaseFragment() {
add(TTRequestData("patId", id))
}, object : ICallback {
override fun onSuccess(data: String) {
+ if (!CKApp.app.isUserLoggedIn) return
homeModel = Gson().fromJson(data, HomeModel::class.java)
setBannerData(homeModel?.banners.orEmpty())
@@ -391,9 +412,9 @@ class HomeFragment : CKBaseFragment() {
}
})
-
TTHttpClient.get(activity as TTBaseActivity, "设备信息", TTRequestParam().apply { add(TTRequestData("patId",id)) },object : ICallback{
override fun onSuccess(data: String) {
+ if (!CKApp.app.isUserLoggedIn) return
var model = Gson().fromJson(data, HomeModel.EquipmentModel::class.java)
homeModel?.equipment = model
@@ -487,6 +508,35 @@ class HomeFragment : CKBaseFragment() {
})
}
+ private fun performCameraAction(action: CameraAction?) {
+ when (action) {
+ CameraAction.SCAN -> startScan()
+ CameraAction.TAKE_PHOTO -> takePhoto()
+ null -> Unit
+ }
+ }
+
+ private fun showCameraSettingsDialog() {
+ CKAlertDialog(
+ requireActivity(),
+ getString(R.string.settting_permissions),
+ getString(R.string.camera_permission_settings_alert),
+ object : CKAlertDialog.AlertClickListener {
+ override fun onBack(isConfirm: Boolean) {
+ if (isConfirm) {
+ val intent = Intent(
+ Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
+ Uri.parse("package:${requireContext().packageName}")
+ )
+ cameraSettingsLauncher.launch(intent)
+ } else {
+ pendingCameraAction = null
+ }
+ }
+ }
+ ).show()
+ }
+
private fun setBannerData(data: List) {
bannarData = data
imageAdapter = ImageAdapter(activity!!, bannarData, object : OnItemClickListenner {
@@ -634,43 +684,31 @@ class HomeFragment : CKBaseFragment() {
override fun onSuccess(data: String) {
hiddenProgeassDialog()
+ if (!CKApp.app.isUserLoggedIn) return
var model = Gson().fromJson(data, CollarTypeModel::class.java)
+ collarDatas = model.rows
- if (!isFirstShow) {
- collarDatas = model.rows
-
- homeBinding.btnRotate?.rotateDownward()
- CKCollarTypePopView(
- activity!!,
- homeBinding.textName!!,
- collarDatas,
- object : PopupWindow.OnDismissListener {
- override fun onDismiss() {
- homeBinding.btnRotate?.rotateUpwards()
- }
- }).show(object : CKCollarTypePopView.OnItemDataClickListenner {
- override fun onClick(
- pos: Int,
- model: CollarTypeModel.TypeDataModel
- ) {
- dataModel = model
- homeBinding.textName?.setText(model.patName)
-
- switchPet()
- dataModel?.let {
- PreferencesUtils.putString(
- activity!!,
- Const.PET_DATA,
- Gson().toJson(dataModel)
- )
- }
- }
- })
- } else {
+ if (model.rows.isEmpty()) {
isFirstShow = false
- if (model.rows.size > 0) {
- dataModel = model.rows.get(0)
- homeBinding.textName?.setText(dataModel?.patName)
+ dataModel = null
+ homeBinding.textName?.text = getString(R.string.choost_pet)
+ PreferencesUtils.putString(activity!!, Const.PET_DATA, "")
+ return
+ }
+
+ if (isFirstShow) {
+ isFirstShow = false
+ dataModel = model.rows.first()
+ homeBinding.textName?.text = dataModel?.patName
+ switchPet()
+ } else {
+ val currentPet = model.rows.firstOrNull { it.id == dataModel?.id }
+ if (currentPet != null) {
+ dataModel = currentPet
+ homeBinding.textName?.text = currentPet.patName
+ } else if (model.rows.isNotEmpty()) {
+ dataModel = model.rows.first()
+ homeBinding.textName?.text = dataModel?.patName
switchPet()
}
}
@@ -684,6 +722,33 @@ class HomeFragment : CKBaseFragment() {
})
}
+ private fun showPetSelector() {
+ homeBinding.btnRotate?.rotateDownward()
+ CKCollarTypePopView(
+ activity!!,
+ homeBinding.textName!!,
+ collarDatas,
+ object : PopupWindow.OnDismissListener {
+ override fun onDismiss() {
+ homeBinding.btnRotate?.rotateUpwards()
+ }
+ }).show(object : CKCollarTypePopView.OnItemDataClickListenner {
+ override fun onClick(
+ pos: Int,
+ model: CollarTypeModel.TypeDataModel
+ ) {
+ dataModel = model
+ homeBinding.textName?.text = model.patName
+ switchPet()
+ PreferencesUtils.putString(
+ activity!!,
+ Const.PET_DATA,
+ Gson().toJson(dataModel)
+ )
+ }
+ })
+ }
+
fun getPetList2() {
if (!CKApp.app.isUserLoggedIn) return
@@ -699,6 +764,7 @@ class HomeFragment : CKBaseFragment() {
override fun onSuccess(data: String) {
hiddenProgeassDialog()
+ if (!CKApp.app.isUserLoggedIn) return
var model = Gson().fromJson(data, CollarTypeModel::class.java)
if (model.rows.size == 1) {
@@ -735,6 +801,10 @@ class HomeFragment : CKBaseFragment() {
showProgeassDialog(getString(R.string.see))
TTHttpClient.postFile(activity as TTBaseActivity, "上传照片s", param, object : ICallback {
override fun onSuccess(data: String) {
+ if (!CKApp.app.isUserLoggedIn) {
+ hiddenProgeassDialog()
+ return
+ }
var model = Gson().fromJson(data, UploadModel::class.java)
//aiPhoto(ActionCode.BASE_URL + "/" + model.fileNames)
@@ -756,6 +826,7 @@ class HomeFragment : CKBaseFragment() {
}, object : ICallback {
override fun onSuccess(data: String) {
hiddenProgeassDialog()
+ if (!CKApp.app.isUserLoggedIn) return
var model = Gson().fromJson(data, AIPhotoModel::class.java)
if ("狗".equals(model.species) || "猫".equals(model.species)) {
@@ -813,11 +884,54 @@ class HomeFragment : CKBaseFragment() {
override fun onStart() {
super.onStart()
homeBinding.banner.start();
+ if (!CKApp.app.isUserLoggedIn) {
+ waitingForLoginResult = false
+ resetLoggedOutState()
+ return
+ }
+ if (waitingForLoginResult) {
+ waitingForLoginResult = false
+ if (CKApp.app.isUserLoggedIn) {
+ getPetList()
+ }
+ }
dataModel?.let {
getData(dataModel!!.id.toString())
}
}
+ override fun onResume() {
+ super.onResume()
+ if (CKApp.app.isUserLoggedIn && loadedLoginToken != CKApp.app.token) {
+ initData()
+ }
+ }
+
+ private fun resetLoggedOutState() {
+ loadedLoginToken = null
+ collarDatas = emptyList()
+ bannarData = emptyList()
+ dataModel = null
+ homeModel = null
+ isFirstShow = false
+
+ homeBinding.textName?.text = getString(R.string.choost_pet)
+ homeBinding.btnBound?.text = getString(R.string.unbound)
+ homeBinding.textHealthPoints?.text = "--"
+ homeBinding.points?.visibility = View.GONE
+ homeBinding.textStep?.text = "-"
+ homeBinding.textAddress?.text = getString(R.string.no_position)
+ homeBinding.textDistance?.text = "-"
+ homeBinding.textPowerValue?.text = "%"
+ homeBinding.imagePower?.setImageResource(R.mipmap.image_power_0)
+ homeBinding.contentPower?.visibility = View.GONE
+ setNoDeviceUI()
+ setBannerData(listOf(BannarModel().apply {
+ localImageRes = R.mipmap.index_banner1
+ }))
+ homeBinding.refreshLayout?.finishRefresh()
+ }
+
override fun onStop() {
super.onStop()
homeBinding.banner.stop();
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/MineFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/MineFragment.kt
index 1247e2e..5a4623b 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/MineFragment.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/MineFragment.kt
@@ -69,6 +69,7 @@ class MineFragment : CKBaseFragment() {
}
binding.btnMessage.setOnClickListener {
+ if (!requireLogin()) return@setOnClickListener
toActivity(MessageCenterActivity::class.java, DataCollection())
}
@@ -135,13 +136,14 @@ class MineFragment : CKBaseFragment() {
override fun initData() {
if (!CKApp.app.isUserLoggedIn) {
+ renderLoggedOutState()
binding.textNick.text = getString(R.string.guest)
- binding.textPhone.text = ""
- binding.textPhone.visibility = View.GONE
+ binding.textPhone.text = "用户未登录"
+ binding.textPhone.visibility = View.VISIBLE
binding.textBalance.text = "0"
binding.textPoints.text = "0"
binding.textCount.visibility = View.INVISIBLE
- binding.imageUser.setImageResource(R.mipmap.image_user_default)
+ binding.imageUser.setImageResource(R.mipmap.icon_unlogin_defaul)
return
}
@@ -152,7 +154,7 @@ class MineFragment : CKBaseFragment() {
if (!TextUtils.isEmpty(CKApp.app.userInfo?.avatar)){
Glide.with(this@MineFragment)
.load( CKApp.app.userInfo?.avatar)
- .placeholder(R.mipmap.image_user_default)
+ .placeholder(R.mipmap.icon_unlogin_defaul)
.into(binding.imageUser)
}
@@ -168,6 +170,7 @@ class MineFragment : CKBaseFragment() {
}else{
binding.btnOpen.setText(getString(R.string.open_member))
binding.textMemberTitle.text = getString(R.string.pet_member)
+ binding.textMemberDate.text = getString(R.string.pet_member_rewards)
}
@@ -180,9 +183,28 @@ class MineFragment : CKBaseFragment() {
override fun onResume() {
super.onResume()
- getUserInfo()
+ initData()
+ if (CKApp.app.isUserLoggedIn) {
+ getUserInfo()
+ }
}
- fun getUserInfo(){
+
+ private fun renderLoggedOutState() {
+ binding.textNick.text = getString(R.string.guest)
+ binding.textPhone.text = getString(R.string.user_not_logged_in)
+ binding.textPhone.visibility = View.VISIBLE
+ binding.textBalance.text = "0"
+ binding.textPoints.text = "0"
+ binding.textCount.text = "0"
+ binding.textCount.visibility = View.INVISIBLE
+ binding.btnOpen.text = getString(R.string.open_member)
+ binding.textMemberTitle.text = getString(R.string.pet_member)
+ binding.textMemberDate.text = getString(R.string.pet_member_rewards)
+ Glide.with(this).clear(binding.imageUser)
+ binding.imageUser.setImageResource(R.mipmap.icon_unlogin_defaul)
+ }
+
+ private fun getUserInfo(){
if (!CKApp.app.isUserLoggedIn) {
binding.textCount.visibility = View.INVISIBLE
return
@@ -190,6 +212,7 @@ class MineFragment : CKBaseFragment() {
TTHttpClient.get(activity as TTBaseActivity,"个人资料", TTRequestParam(),object : ICallback{
override fun onSuccess(data: String) {
+ if (!CKApp.app.isUserLoggedIn) return
CKApp.app.userInfo = Gson().fromJson(data, UserInfoModel::class.java)
PreferencesUtils.putString(activity!!, Const.USER_DATA,data)
@@ -206,6 +229,7 @@ class MineFragment : CKBaseFragment() {
add(TTRequestData("accept","true"))
},object : ICallback{
override fun onSuccess(data: String) {
+ if (!CKApp.app.isUserLoggedIn) return
var model = Gson().fromJson(data, UnReadModel::class.java)
binding.textCount.text = model.unreadCount.toString()
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/ShopFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/ShopFragment.kt
index 3e1ace7..622b284 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/ShopFragment.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/ShopFragment.kt
@@ -135,10 +135,12 @@ class ShopFragment : CKBaseFragment() {
}
binding.btnShopCar.setOnClickListener {
+ if (!isUserLogin()) return@setOnClickListener
toActivity(ShopCarActivity::class.java, DataCollection())
}
binding.btnShopOrder.setOnClickListener {
+ if (!isUserLogin()) return@setOnClickListener
toActivity(MyOrderActivity::class.java, DataCollection().apply { add(Data("pos","0")) })
}
@@ -155,7 +157,7 @@ class ShopFragment : CKBaseFragment() {
getHot()
page = 1
getData()
- getBannar()
+// getBannar()
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
index 1b723c9..3f464c6 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/login/LoginActivity.kt
@@ -283,9 +283,12 @@ class LoginActivity : CKBaseActivity() {
CKApp.app.userInfo = Gson().fromJson(data, UserInfoModel::class.java)
PreferencesUtils.putString(this@LoginActivity, Const.USER_DATA,data)
- toActivity(MainActivity::class.java, DataCollection())
-
-
+ startActivity(
+ Intent(this@LoginActivity, MainActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ putExtra(MainActivity.EXTRA_SHOW_HOME, true)
+ }
+ )
finish()
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/member/MemberActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/member/MemberActivity.kt
index c8a0f94..d004082 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/member/MemberActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/member/MemberActivity.kt
@@ -8,45 +8,42 @@ import android.widget.ImageButton
import com.ck.ckcollar.app.CKApp
import com.ck.ckcollar.app.R
import com.ck.ckcollar.app.databinding.ActivityMemberBinding
-import com.ck.ckcollar.app.model.MemberModel
import com.ck.ckcollar.app.model.MemberPriceModel
-import com.ck.ckcollar.app.model.PointsModel
-import com.ck.ckcollar.app.model.RecordModel
import com.ck.ckcollar.app.model.UserInfoModel
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.utils.CKUtils
+import com.ck.ckcollar.app.utils.Const
+import com.ck.ckcollar.app.utils.MemberPriceCache
import com.ck.ckcollar.app.utils.networkone.ICallback
import com.ck.ckcollar.app.utils.networkone.TTHttpClient
import com.ck.ckcollar.app.utils.networkone.model.TTRequestParam
+import com.cyclone.shadowsocks.utils.PreferencesUtils
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
-import com.gyf.immersionbar.ImmersionBar
-import com.tt.kit.base.TTBaseActivity
import com.tt.kit.model.DataCollection
class MemberActivity : CKBaseActivity() {
+ override val useDarkStatusBarIcons: Boolean = false
+
lateinit var binding: ActivityMemberBinding
+ private var priceRequestInFlight = false
+
override fun onCreate(savedInstanceState: Bundle?) {
binding = ActivityMemberBinding.inflate(layoutInflater)
setContentView(binding.root)
-// ImmersionBar.with(this)
-// .statusBarDarkFont(true)
-// .init()
super.onCreate(savedInstanceState)
-
setActionBarColor(resources.getColor(R.color.color_252132))
setStatusBarColor2(resources.getColor(R.color.color_252132))
- findViewById(R.id.btnLeft).imageTintList = ColorStateList.valueOf(Color.WHITE)
+ findViewById(R.id.btnLeft).imageTintList =
+ ColorStateList.valueOf(Color.WHITE)
setTitleTextColor(resources.getColor(R.color.white))
-
setTitleText(getString(R.string.member))
}
override fun initView() {
-
binding.btnOpen.setOnClickListener {
toActivity(OpenMemberActivity::class.java, DataCollection())
}
@@ -56,8 +53,7 @@ class MemberActivity : CKBaseActivity() {
}
override fun initData() {
-
-
+ renderMemberInfo(CKApp.app.userInfo)
}
override fun onStart() {
@@ -65,45 +61,78 @@ class MemberActivity : CKBaseActivity() {
getMemberInfo()
}
- fun getInfo() {
- TTHttpClient.get(this, "会员套餐列表", TTRequestParam(), object : ICallback {
- override fun onSuccess(data: String) {
- var model = Gson().fromJson>(data, object : TypeToken>(){}.type)
+ private fun loadMemberPrice() {
+ val cachedPrice = MemberPriceCache.getPrice(this)
+ if (cachedPrice != null) {
+ showMemberPrice(cachedPrice)
+ }
- if (model.size > 0){
- binding.textMoney.text = model.get(0).actualPrice.toString()
- }
-
- }
-
- override fun onFailed(code: String, msg: String) {
- toast(msg)
- }
- })
+ if (cachedPrice == null || MemberPriceCache.isExpired(this)) {
+ getInfo(cachedPrice != null)
+ }
}
- fun getMemberInfo(){
- TTHttpClient.get(this,"个人资料", TTRequestParam(),object : ICallback{
+ private fun getInfo(hasCachedPrice: Boolean) {
+ if (priceRequestInFlight) return
+ priceRequestInFlight = true
+ TTHttpClient.get(this, "会员套餐列表", TTRequestParam(), object : ICallback {
override fun onSuccess(data: String) {
- var model = Gson().fromJson(data, UserInfoModel::class.java)
+ priceRequestInFlight = false
+ val model = Gson().fromJson>(
+ data,
+ object : TypeToken>() {}.type
+ )
-
- if (model.isMember == true){
- binding.textMemberDate.text = getString(R.string.deadline_date, CKUtils.dataToFormat(model.deadlineTime,
- CKUtils.YYYYMMDD_HHMMSS, CKUtils.YYYYMMDD))
- binding.conetnt1.visibility = View.GONE
- binding.conetnt2.visibility = View.VISIBLE
- }else{
- binding.conetnt1.visibility = View.VISIBLE
- binding.conetnt2.visibility = View.GONE
-
- getInfo()
+ if (model.isNotEmpty()) {
+ val price = model.first().actualPrice
+ MemberPriceCache.save(this@MemberActivity, price)
+ showMemberPrice(price)
}
}
+ override fun onFailed(code: String, msg: String) {
+ priceRequestInFlight = false
+ if (!hasCachedPrice) toast(msg)
+ }
+ })
+ }
+
+ private fun showMemberPrice(price: Double) {
+ binding.textMoney.text = price.toString()
+ binding.priceContent.visibility = View.VISIBLE
+ }
+
+ private fun getMemberInfo() {
+ TTHttpClient.get(this, "个人资料", TTRequestParam(), object : ICallback {
+ override fun onSuccess(data: String) {
+ val model = Gson().fromJson(data, UserInfoModel::class.java)
+ CKApp.app.userInfo = model
+ PreferencesUtils.putString(this@MemberActivity, Const.USER_DATA, data)
+ renderMemberInfo(model)
+ }
+
override fun onFailed(code: String, msg: String) {
toast(msg)
}
})
}
-}
\ No newline at end of file
+
+ private fun renderMemberInfo(model: UserInfoModel?) {
+ if (model?.isMember == true) {
+ binding.textMemberDate.text = getString(
+ R.string.deadline_date,
+ CKUtils.dataToFormat(
+ model.deadlineTime,
+ CKUtils.YYYYMMDD_HHMMSS,
+ CKUtils.YYYYMMDD
+ )
+ )
+ binding.conetnt1.visibility = View.GONE
+ binding.conetnt2.visibility = View.VISIBLE
+ } else {
+ binding.conetnt1.visibility = View.VISIBLE
+ binding.conetnt2.visibility = View.GONE
+ loadMemberPrice()
+ }
+ }
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/AddPetActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/AddPetActivity.kt
index 85e6bb7..a026c65 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/AddPetActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/AddPetActivity.kt
@@ -188,14 +188,22 @@ class AddPetActivity : CKBaseActivity() {
}
binding.tvAiRecognize.setOnClickListener {
+ if (!checkCameraPermissions()) {
+ getPermissionRequst(
+ Manifest.permission.CAMERA,
+ REQUEST_AI_CAMERA_PERMISSION
+ )
+ return@setOnClickListener
+ }
takePhoto2()
}
}
override fun onPermissionsGranted(requestCode: Int, permissions: Array) {
- if (requestCode == REQUEST_CAMERA_PERMISSION) {
- takePhoto()
+ when (requestCode) {
+ REQUEST_CAMERA_PERMISSION -> takePhoto()
+ REQUEST_AI_CAMERA_PERMISSION -> takePhoto2()
}
}
@@ -415,6 +423,7 @@ class AddPetActivity : CKBaseActivity() {
companion object {
private const val REQUEST_CAMERA_PERMISSION = 1201
+ private const val REQUEST_AI_CAMERA_PERMISSION = 1202
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ImageViewActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ImageViewActivity.kt
index 0aa7726..5e00223 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ImageViewActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/petmanager/ImageViewActivity.kt
@@ -22,6 +22,8 @@ import com.google.gson.reflect.TypeToken
import com.tt.kit.model.DataCollection
class ImageViewActivity : CKBaseActivity() {
+ override val useDarkStatusBarIcons: Boolean = false
+
lateinit var binding: ActivityImageViewBinding
var views = mutableListOf()
var data : List? = null
@@ -81,4 +83,4 @@ class ImageViewActivity : CKBaseActivity() {
pos = data.stringValue!!.toInt()
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/points/PointsActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/points/PointsActivity.kt
index d0b5e41..0318b96 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/points/PointsActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/points/PointsActivity.kt
@@ -33,6 +33,7 @@ import java.text.SimpleDateFormat
import java.util.Date
class PointsActivity : CKLHBaseActionBarActivity() {
+ override val shouldRequestPermissionsOnCreate: Boolean = false
lateinit var binding: ActivityPointsBinding
var data = listOf()
@@ -207,4 +208,4 @@ class PointsActivity : CKLHBaseActionBarActivity() {
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/AddAddressActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/AddAddressActivity.kt
index 9f62d48..e283460 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/AddAddressActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/AddAddressActivity.kt
@@ -168,7 +168,7 @@ class AddAddressActivity : CKBaseActivity() {
add(TTRequestData("provinceName",provinceName))
add(TTRequestData("cityName",cityName))
add(TTRequestData("areaName",areaName))
- add(TTRequestData("detailAddress",binding.textDetailsAddress.text.toString()))
+ add(TTRequestData("detailAddress",binding.textDetailsAddress.text.toString().trim()))
add(TTRequestData("postalCode",""))
add(TTRequestData("isDefault",check))
add(TTRequestData("addressTag",tag))
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/EditAddressActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/EditAddressActivity.kt
index 7a20956..9ae3ba0 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/EditAddressActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/EditAddressActivity.kt
@@ -195,12 +195,12 @@ class EditAddressActivity : CKBaseActivity() {
}
var param = TTRequestParam().apply {
add(TTRequestData("id", model?.id.toString()))
- add(TTRequestData("receiverName", binding.textName.text.toString()))
- add(TTRequestData("receiverPhone", binding.textPhone.text.toString()))
+ add(TTRequestData("receiverName", binding.textName.text.toString().trim()))
+ add(TTRequestData("receiverPhone", binding.textPhone.text.toString().trim()))
add(TTRequestData("provinceName", provinceName))
add(TTRequestData("cityName", cityName))
add(TTRequestData("areaName", areaName))
- add(TTRequestData("detailAddress", binding.textDetailsAddress.text.toString()))
+ add(TTRequestData("detailAddress", binding.textDetailsAddress.text.toString().trim()))
add(TTRequestData("postalCode", ""))
add(TTRequestData("isDefault", check))
add(TTRequestData("addressTag", tag))
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/SettingActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/SettingActivity.kt
index 54fb685..1c424b3 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/SettingActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/setting/SettingActivity.kt
@@ -8,6 +8,7 @@ import com.ck.ckcollar.app.R
import com.ck.ckcollar.app.databinding.ActivitySettingBinding
import com.ck.ckcollar.app.ui.act.login.AgreementActivity
import com.ck.ckcollar.app.ui.act.login.LoginActivity
+import com.ck.ckcollar.app.ui.act.home.MainActivity
import com.ck.ckcollar.app.ui.base.CKBaseActivity
import com.ck.ckcollar.app.ui.dialog.CKAlertDialog
import com.tt.kit.model.Data
@@ -77,7 +78,12 @@ class SettingActivity : CKBaseActivity(), View.OnClickListener {
override fun onBack(isConfirm: Boolean) {
if (isConfirm){
CKApp.app.clearLoginState()
- toActivityNewTaskClear(LoginActivity::class.java, DataCollection())
+ startActivity(
+ Intent(this@SettingActivity, MainActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ putExtra(MainActivity.EXTRA_SHOW_HOME, true)
+ }
+ )
finish()
}
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
index e04c084..c1b1511 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/shop/ShopCarActivity.kt
@@ -91,6 +91,10 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
binding.checkbox.setOnClickListener {
+ if (productDatas.isEmpty()) {
+ toast(getString(R.string.shop_car_empty))
+ return@setOnClickListener
+ }
selectAll = !selectAll
if (selectAll){
@@ -154,6 +158,11 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
override fun rightButton1OnClick() {
+ if (productDatas.isEmpty()) {
+ toast(getString(R.string.shop_car_empty))
+ return
+ }
+
isShowDelete = !isShowDelete
if (isShowDelete){
@@ -296,14 +305,15 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
}
fun sendSelectAll(select : String){
-
+ showProgeassDialog()
TTHttpClient.putJson(this,"购物车全部选中", TTRequestParam().apply { add(TTRequestData("selected",select)) },object : ICallback{
override fun onSuccess(data: String) {
+ hiddenProgeassDialog()
getData()
}
override fun onFailed(code: String, msg: String) {
-
+ hiddenProgeassDialog()
toast(msg)
getData()
}
@@ -433,4 +443,4 @@ class ShopCarActivity : CKLHBaseActionBarActivity() {
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseActivity.kt
index 86ac113..c9a53a7 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseActivity.kt
@@ -2,10 +2,13 @@ package com.ck.ckcollar.app.ui.base
import android.Manifest
import android.content.pm.PackageManager
+import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.graphics.Color
+import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.provider.Settings
import android.util.TypedValue
import android.view.View
import android.view.Gravity
@@ -21,6 +24,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.WindowInsetsControllerCompat
import com.ck.ckcollar.app.CKApp
import com.ck.ckcollar.app.R
import com.ck.ckcollar.app.ui.dialog.CKAlertDialog
@@ -32,9 +36,25 @@ import pub.devrel.easypermissions.EasyPermissions
open class CKBaseActivity : TTBaseActivity(){
+ protected open val useDarkStatusBarIcons: Boolean = true
+
private var permissionDialog: AlertDialog? = null
private var pendingPermissionRequestCode: Int? = null
private var pendingPermissions: Array = emptyArray()
+ private var settingsPermissionRequestCode: Int? = null
+ private var settingsPermissions: Array = emptyArray()
+ private val permissionSettingsLauncher = registerForActivityResult(
+ ActivityResultContracts.StartActivityForResult()
+ ) {
+ val requestCode = settingsPermissionRequestCode
+ val permissions = settingsPermissions
+ settingsPermissionRequestCode = null
+ settingsPermissions = emptyArray()
+
+ if (requestCode != null && hasRecordPermission(permissions)) {
+ onPermissionsGranted(requestCode, permissions)
+ }
+ }
private val permissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { result ->
@@ -48,7 +68,9 @@ open class CKBaseActivity : TTBaseActivity(){
if (denied.isEmpty()) {
onPermissionsGranted(requestCode, requestedPermissions)
} else {
- val permanentlyDenied = denied.all { !ActivityCompat.shouldShowRequestPermissionRationale(this, it) }
+ val permanentlyDenied = denied.any {
+ !ActivityCompat.shouldShowRequestPermissionRationale(this, it)
+ }
onPermissionsDenied(requestCode, denied, permanentlyDenied)
}
}
@@ -80,10 +102,15 @@ open class CKBaseActivity : TTBaseActivity(){
CKApp.app.activitys.add(this)
setStatusBarColor(R.attr.actionBarBackground)
+ setStatusBarTextDark(useDarkStatusBarIcons)
}
+ fun setStatusBarTextDark(isDark: Boolean = true) {
+ WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = isDark
+ }
+
fun checkAppPermissions(){
if (!checkPermissions()){
requstPermissions()
@@ -345,6 +372,27 @@ open class CKBaseActivity : TTBaseActivity(){
permissions: Array,
permanentlyDenied: Boolean
) {
+ if (!permanentlyDenied) return
+
+ CKAlertDialog(
+ this,
+ getString(R.string.settting_permissions),
+ getString(R.string.permission_settings_alert),
+ object : CKAlertDialog.AlertClickListener {
+ override fun onBack(isConfirm: Boolean) {
+ if (isConfirm) {
+ settingsPermissionRequestCode = requestCode
+ settingsPermissions = permissions
+ permissionSettingsLauncher.launch(
+ Intent(
+ Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
+ Uri.parse("package:$packageName")
+ )
+ )
+ }
+ }
+ }
+ ).show()
}
fun requstPermissions(){
@@ -366,6 +414,8 @@ open class CKBaseActivity : TTBaseActivity(){
hidePermissionDialog()
pendingPermissionRequestCode = null
pendingPermissions = emptyArray()
+ settingsPermissionRequestCode = null
+ settingsPermissions = emptyArray()
super.onDestroy()
CKApp.app.activitys.remove(this)
}
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseFragment.kt
index 352daa7..a50b2a7 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseFragment.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKBaseFragment.kt
@@ -1,14 +1,21 @@
package com.ck.ckcollar.app.ui.base
import android.Manifest
+import com.ck.ckcollar.app.CKApp
+import com.ck.ckcollar.app.ui.act.login.LoginActivity
import com.cyclone.shadowsocks.ui.frg.TTBaseFragment
+import com.tt.kit.model.DataCollection
import pub.devrel.easypermissions.EasyPermissions
open class CKBaseFragment : TTBaseFragment() {
var perms_carmra = listOf(Manifest.permission.CAMERA)
-
+ fun isUserLogin(): Boolean {
+ if (CKApp.app.isUserLoggedIn) return true
+ toActivity(LoginActivity::class.java, DataCollection())
+ return false
+ }
fun checkCameraPermissions() : Boolean{
diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKLHBaseActionBarActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKLHBaseActionBarActivity.kt
index b654e18..a5704e4 100644
--- a/app/src/main/java/com/ck/ckcollar/app/ui/base/CKLHBaseActionBarActivity.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/ui/base/CKLHBaseActionBarActivity.kt
@@ -28,7 +28,7 @@ import pub.devrel.easypermissions.EasyPermissions
open class CKLHBaseActionBarActivity : TTBaseActivity(){
- protected open val shouldRequestPermissionsOnCreate: Boolean = true
+ protected open val shouldRequestPermissionsOnCreate: Boolean = false
var perms_= listOf(Manifest.permission.CAMERA, Manifest.permission.READ_MEDIA_IMAGES,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
var perms_tiramisu = listOf(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE)
diff --git a/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt b/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
index 68f5c6c..4f9e379 100644
--- a/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
+++ b/app/src/main/java/com/ck/ckcollar/app/utils/Const.kt
@@ -12,6 +12,8 @@ object Const {
const val LOGIN_NAME = "login_name"
const val LOGIN_PWD = "login_pwd"
const val TOKEN = "token"
+ const val MEMBER_PRICE = "member_price"
+ const val MEMBER_PRICE_CACHE_TIME = "member_price_cache_time"
const val WX_APP_ID = "wx7681e74df7d88ddc"
-}
\ No newline at end of file
+}
diff --git a/app/src/main/res/layout/activity_balance.xml b/app/src/main/res/layout/activity_balance.xml
index 70f7834..19cd0c6 100644
--- a/app/src/main/res/layout/activity_balance.xml
+++ b/app/src/main/res/layout/activity_balance.xml
@@ -35,8 +35,8 @@
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 0b2e8e3..265130c 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -78,19 +78,22 @@
android:textColorHint="@color/textColor"
android:hint="@string/please_input_message"
android:paddingHorizontal="16dp"
- android:paddingVertical="5dp"
+ android:paddingVertical="8dp"
android:layout_marginVertical="10dp"
android:layout_marginHorizontal="12dp"
android:background="@drawable/bg_input_message"
android:imeOptions="actionSend"
android:inputType="text"
+ android:maxHeight="70dp"
+ android:maxLines="4"
+ android:scrollbars="vertical"
android:maxLength="100" />
+ android:visibility="gone"/>
+ android:layout_height="58dp"
+ android:baselineAligned="true"
+ android:baselineAlignedChildIndex="1"
+ android:gravity="bottom"
+ android:orientation="horizontal"
+ android:visibility="invisible">
+ android:textSize="22sp"/>
+ android:textStyle="bold"/>
+ android:textSize="22sp"/>
@@ -71,7 +77,7 @@
android:gravity="center"
android:text="@string/pet_member_open_now"
android:textColor="@color/color_CACACA"
- android:textSize="16sp">
+ android:textSize="16sp"/>
+ />
+ android:textSize="16sp"/>
@@ -260,13 +266,13 @@
android:id="@+id/textNode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textSize="16sp"
+ android:textSize="14sp"
android:textColor="@color/color_CACACA"
- android:text=""
+ android:text="商城商品享受折扣,开通会员赠送积分"
android:layout_marginTop="20dp"
>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/activity_points.xml b/app/src/main/res/layout/activity_points.xml
index 0b2b2bb..6c71843 100644
--- a/app/src/main/res/layout/activity_points.xml
+++ b/app/src/main/res/layout/activity_points.xml
@@ -21,7 +21,6 @@
android:textStyle="bold"
android:textColor="@color/textColor"
android:textSize="38dp"
- android:text="0"
>
diff --git a/app/src/main/res/layout/activity_shop_search.xml b/app/src/main/res/layout/activity_shop_search.xml
index e0b75a9..2da6e49 100644
--- a/app/src/main/res/layout/activity_shop_search.xml
+++ b/app/src/main/res/layout/activity_shop_search.xml
@@ -47,7 +47,7 @@
+ android:layout_height="match_parent">
diff --git a/app/src/main/res/layout/activity_withdraw.xml b/app/src/main/res/layout/activity_withdraw.xml
index 4d58ee7..fcad657 100644
--- a/app/src/main/res/layout/activity_withdraw.xml
+++ b/app/src/main/res/layout/activity_withdraw.xml
@@ -29,7 +29,6 @@
android:id="@+id/textAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="0.0"
android:textColor="@color/textColor"
android:textSize="38sp"
android:textStyle="bold"
diff --git a/app/src/main/res/layout/fragment_health.xml b/app/src/main/res/layout/fragment_health.xml
index 02c3b3e..212f3cf 100644
--- a/app/src/main/res/layout/fragment_health.xml
+++ b/app/src/main/res/layout/fragment_health.xml
@@ -9,6 +9,228 @@
android:background="?attr/mainBackground"
android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 5ff10ae..0c02cf1 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -8,6 +8,8 @@
android:gravity="center_horizontal"
android:orientation="vertical">
+
+
+
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index a14ece3..bc4083e 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -31,7 +31,7 @@
android:layout_width="60dp"
android:layout_height="60dp"
app:isCircle="true"
- android:src="@mipmap/image_user_default"
+ android:src="@mipmap/icon_unlogin_defaul"
>
-
+ app:riv_corner_radius="8dp" />
@@ -114,19 +111,17 @@
android:textSize="14sp">
-
+ app:riv_corner_radius="8dp" />
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/layout_item_shop_item.xml b/app/src/main/res/layout/layout_item_shop_item.xml
index 7a49b7d..23e9ef5 100644
--- a/app/src/main/res/layout/layout_item_shop_item.xml
+++ b/app/src/main/res/layout/layout_item_shop_item.xml
@@ -19,7 +19,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/textColor"
- android:textSize="14sp"
+ android:textSize="12sp"
android:text="宠物食品"
>
\ 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 111f416..4cf8ddd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,5 +1,6 @@
游客
+ 用户未登录
宠盾
@@ -56,6 +57,7 @@
设置权限
使用宠物项圈,需要给予以下访问权限
+ 相关权限已被关闭,请前往系统设置开启权限
继续
相机
用于扫码绑定设备
@@ -465,6 +467,7 @@
合计¥ %s
购物车
+ 购物车内暂无商品
设备电量:%s% 更新时间:%s
规格:%s
@@ -588,6 +591,7 @@
注销%s绑定的账号
请选择原因
宠盾需要您的授权,使用相机功能来进行扫码和拍照
+ 相机权限已被关闭,请前往系统设置开启相机权限
宠盾需要您的授权,访问相册以选择照片
再按一次退出应用
请输入问题