ShareQRCodeDialog.kt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.develop.common.dialog
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import android.view.ViewTreeObserver
  7. import com.develop.base.ext.background_drawable
  8. import com.develop.base.ext.setGone
  9. import com.develop.base.ext.src
  10. import com.develop.base.mvvm.FullScreenTransparentDialog
  11. import com.develop.base.util.ThreadUtils
  12. import com.develop.common.R
  13. import com.develop.common.databinding.DialogShareQrCodeBinding
  14. import com.develop.common.utils.QRCodeUtils
  15. class ShareQRCodeDialog : FullScreenTransparentDialog() {
  16. private lateinit var binding: DialogShareQrCodeBinding
  17. var recipeNum: String = ""
  18. override fun onCreateView(
  19. inflater: LayoutInflater,
  20. container: ViewGroup?,
  21. savedInstanceState: Bundle?
  22. ): View {
  23. binding = DialogShareQrCodeBinding.inflate(inflater, container, false)
  24. binding.ivQrCode.viewTreeObserver.addOnPreDrawListener(
  25. object : ViewTreeObserver.OnPreDrawListener {
  26. override fun onPreDraw(): Boolean {
  27. binding.ivQrCode.viewTreeObserver.removeOnPreDrawListener(this)
  28. loadQRCode(binding.ivQrCode.width, binding.ivQrCode.height)
  29. return false
  30. }
  31. })
  32. binding.ivCancel.setOnClickListener {
  33. removeSelf()
  34. }
  35. binding.ivCancel.apply {
  36. src = R.drawable.ic_cancel
  37. background_drawable = R.drawable.bg_icon_cancel
  38. }
  39. return binding.root
  40. }
  41. private fun loadQRCode(width: Int, height: Int) {
  42. ThreadUtils.runOnWorkThread({
  43. val bitmap = QRCodeUtils.createQRCodeBitmap(recipeNum, width, height)
  44. binding.ivQrCode.post {
  45. binding.loading.setGone()
  46. binding.ivQrCode.setImageBitmap(bitmap)
  47. }
  48. })
  49. }
  50. }