From be2d0389cfc56a8d6f779d466409eb42090b0c6f Mon Sep 17 00:00:00 2001
From: squallzhjch <zhangjingchao@navinfo.com>
Date: Thu, 13 Jul 2023 17:43:38 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AF=84=E6=B5=8Blink?=
 =?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../omqs/ui/activity/map/MainViewModel.kt     |  61 ++-
 .../library/map/handler/MarkHandler.kt        | 367 +++++++++---------
 2 files changed, 228 insertions(+), 200 deletions(-)

diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
index 0894b197..ab19604d 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
@@ -19,10 +19,13 @@ import androidx.annotation.RequiresApi
 import androidx.constraintlayout.widget.Group
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
+import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.viewModelScope
 import androidx.navigation.findNavController
 import com.blankj.utilcode.util.ToastUtils
 import com.navinfo.collect.library.data.dao.impl.TraceDataBase
+import com.navinfo.collect.library.data.entity.NoteBean
+import com.navinfo.collect.library.data.entity.QsRecordBean
 import com.navinfo.collect.library.data.entity.RenderEntity
 import com.navinfo.collect.library.data.entity.TaskBean
 import com.navinfo.collect.library.map.NIMapController
@@ -44,6 +47,7 @@ import com.navinfo.omqs.util.SpeakMode
 import dagger.hilt.android.lifecycle.HiltViewModel
 import io.realm.Realm
 import io.realm.RealmSet
+import io.realm.kotlin.where
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.launch
@@ -149,27 +153,62 @@ class MainViewModel @Inject constructor(
                 }
             }
         }
-
-        initTaskData()
+        viewModelScope.launch(Dispatchers.IO) {
+            initTaskData()
+            initQsRecordData()
+            initNoteData()
+        }
     }
 
     /**
      * 初始化选中的任务高亮高亮
      */
-    private fun initTaskData() {
+    private suspend fun initTaskData() {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-            viewModelScope.launch(Dispatchers.IO) {
-                val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
-                val realm = Realm.getDefaultInstance()
-                val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
-                if (res != null) {
-                    val taskBean = realm.copyFromRealm(res)
-                    mapController.lineHandler.omdbTaskLinkLayer.addLineList(taskBean.hadLinkDvoList)
-                }
+            val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
+            val realm = Realm.getDefaultInstance()
+            val res = realm.where(TaskBean::class.java).equalTo("id", id).findFirst()
+            if (res != null) {
+                val taskBean = realm.copyFromRealm(res)
+                mapController.lineHandler.omdbTaskLinkLayer.addLineList(taskBean.hadLinkDvoList)
             }
         }
     }
 
+    /**
+     * 初始化渲染质检数据
+     */
+    private suspend fun initQsRecordData() {
+        var list = mutableListOf<QsRecordBean>()
+        val realm = Realm.getDefaultInstance()
+        realm.executeTransaction {
+            val objects = realm.where<QsRecordBean>().findAll()
+            list = realm.copyFromRealm(objects)
+        }
+        for (item in list) {
+            mapController.markerHandle.addOrUpdateQsRecordMark(item)
+        }
+    }
+
+    /**
+     * 初始化渲染便签数据
+     */
+    private suspend fun initNoteData() {
+        var list = mutableListOf<NoteBean>()
+        val realm = Realm.getDefaultInstance()
+        realm.executeTransaction {
+            val objects = realm.where<NoteBean>().findAll()
+            list = realm.copyFromRealm(objects)
+        }
+
+        for (item in list) {
+            mapController.markerHandle.addOrUpdateNoteMark(item)
+        }
+    }
+
+    /**
+     * 初始化定位信息
+     */
     private fun initLocation() {
         //用于定位点存储到数据库
         viewModelScope.launch(Dispatchers.Default) {
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt
index 4ba05831..a8d968dc 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt
@@ -42,8 +42,6 @@ import java.util.*
 class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     BaseHandler(context, mapView) {
 
-    //    //默认marker图层
-    private var mDefaultMarkerLayer: ItemizedLayer
 
     /**
      * 默认文字颜色
@@ -53,22 +51,94 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     /**
      * 文字画笔
      */
-
-    private lateinit var paint: Paint
-
-    //画布
-    private lateinit var canvas: org.oscim.backend.canvas.Canvas
-    private lateinit var itemizedLayer: MyItemizedLayer
-
-    private lateinit var markerRendererFactory: MarkerRendererFactory
-    private val resId = R.mipmap.map_icon_report
-    private val noteResId = R.drawable.icon_note_marker
-    private var itemListener: OnQsRecordItemClickListener? = null
+    private val paint: Paint by lazy {
+        val p = CanvasAdapter.newPaint()
+        p.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL)
+        p.setTextSize(NUM_13 * CanvasAdapter.getScale())
+        p.strokeWidth = 2 * CanvasAdapter.getScale()
+        p.color = Color.parseColor(mDefaultTextColor)
+        p
+    }
 
     /**
-     * 文字大小
+     *  画布
      */
-    private val NUM_13 = 13
+    private val canvas: org.oscim.backend.canvas.Canvas by lazy {
+        CanvasAdapter.newCanvas()
+    }
+
+    /**
+     * 默认marker图层
+     */
+    private val mDefaultMarkerLayer: ItemizedLayer by lazy {
+        //新增marker图标样式
+        val mDefaultBitmap =
+            AndroidBitmap(BitmapFactory.decodeResource(context.resources, R.mipmap.marker))
+
+        val markerSymbol = MarkerSymbol(
+            mDefaultBitmap,
+            MarkerSymbol.HotspotPlace.BOTTOM_CENTER
+        )
+        val layer = ItemizedLayer(
+            mapView.vtmMap,
+            ArrayList(),
+            markerSymbol,
+            object : OnItemGestureListener<MarkerInterface> {
+                override fun onItemSingleTapUp(index: Int, item: MarkerInterface?): Boolean {
+                    return false
+                }
+
+                override fun onItemLongPress(index: Int, item: MarkerInterface?): Boolean {
+                    return false
+                }
+
+            }
+        )
+        addLayer(layer, NIMapView.LAYER_GROUPS.OPERATE_MARKER)
+        layer
+    }
+
+
+    /**
+     * 评测数据marker 图层
+     */
+    private val qsRecordItemizedLayer: MyItemizedLayer by lazy {
+        val layer = MyItemizedLayer(
+            mMapView.vtmMap,
+            mutableListOf(),
+            markerRendererFactory,
+            object : MyItemizedLayer.OnItemGestureListener {
+                override fun onItemSingleTapUp(
+                    list: MutableList<Int>,
+                    nearest: Int
+                ): Boolean {
+                    itemListener?.let {
+                        val idList = mutableListOf<String>()
+                        if (list.size == 0) {
+                        } else {
+                            for (i in list) {
+                                val markerInterface: MarkerInterface =
+                                    qsRecordItemizedLayer.itemList[i]
+                                if (markerInterface is MarkerItem) {
+                                    idList.add(markerInterface.title)
+                                }
+                            }
+                            it.onQsRecordList(idList.distinct().toMutableList())
+                        }
+                    }
+                    return true
+                }
+
+                override fun onItemLongPress(
+                    list: MutableList<Int>?,
+                    nearest: Int
+                ): Boolean {
+                    return true
+                }
+            })
+        addLayer(layer, NIMapView.LAYER_GROUPS.OPERATE_MARKER)
+        layer
+    }
 
     /**
      * 便签线图层
@@ -79,7 +149,9 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
         layer
     }
 
-
+    /**
+     * 便签图标图层
+     */
     private val noteLayer: MyItemizedLayer by lazy {
 
         val layer = MyItemizedLayer(
@@ -94,6 +166,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
                     itemListener?.let {
                         val idList = mutableListOf<String>()
                         if (list.size == 0) {
+
                         } else {
                             for (i in list) {
                                 val markerInterface: MarkerInterface =
@@ -120,50 +193,61 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
         layer
     }
 
-    init {
-        //新增marker图标样式
-        val mDefaultBitmap =
-            AndroidBitmap(BitmapFactory.decodeResource(context.resources, R.mipmap.marker));
 
-        val markerSymbol = MarkerSymbol(
-            mDefaultBitmap,
-            MarkerSymbol.HotspotPlace.BOTTOM_CENTER
-        );
-        //新增marker图层
-        mDefaultMarkerLayer = ItemizedLayer(
-            mapView.vtmMap,
-            ArrayList<MarkerInterface>(),
-            markerSymbol,
-            object : OnItemGestureListener<MarkerInterface> {
-                override fun onItemSingleTapUp(index: Int, item: MarkerInterface?): Boolean {
-                    return false
-                }
-
-                override fun onItemLongPress(index: Int, item: MarkerInterface?): Boolean {
-                    return false
-                }
-
-            }
+    private val markerRendererFactory: MarkerRendererFactory by lazy {
+        val bitmapPoi: Bitmap = AndroidBitmap(
+            BitmapFactory.decodeResource(
+                mContext.resources,
+                R.mipmap.map_icon_blue2
+            )
         )
+        val symbol = MarkerSymbol(bitmapPoi, MarkerSymbol.HotspotPlace.BOTTOM_CENTER)
+        MarkerRendererFactory { markerLayer ->
+            object : ClusterMarkerRenderer(
+                mContext,
+                markerLayer,
+                symbol,
+                ClusterStyle(
+                    org.oscim.backend.canvas.Color.WHITE,
+                    org.oscim.backend.canvas.Color.BLUE
+                )
+            ) {
+//                override fun getClusterBitmap(size: Int): Bitmap? {
+//                    return super.getclusterbitmap(size)
+//                }
+            }
+        }
+    }
+    private val resId = R.mipmap.map_icon_report
+    private val noteResId = R.drawable.icon_note_marker
+    private var itemListener: OnQsRecordItemClickListener? = null
 
-        //初始化之间数据图层
-        initQsRecordDataLayer()
-        addLayer(mDefaultMarkerLayer, NIMapView.LAYER_GROUPS.OPERATE_MARKER);
+    /**
+     * 文字大小
+     */
+    private val NUM_13 = 13
+
+
+    init {
         // 设置矢量图层均在12级以上才显示
         mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition ->
             if (e == Map.SCALE_EVENT) {
-                itemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12
+                qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12
             }
         })
-        initNoteData()
-        mMapView.updateMap()
     }
 
+    /**
+     * 设置marker 点击回调
+     */
     fun setOnQsRecordItemClickListener(listener: OnQsRecordItemClickListener?) {
         itemListener = listener
     }
 
-    //增加marker
+    /**
+     *    增加marker
+     */
+
     fun addMarker(
         geoPoint: GeoPoint,
         title: String?,
@@ -177,16 +261,16 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
             }
         }
         if (marker == null) {
-            var tempTitle = title;
+            var tempTitle = title
             if (tempTitle.isNullOrBlank()) {
-                tempTitle = StringUtil.createUUID();
+                tempTitle = StringUtil.createUUID()
             }
             val marker = MarkerItem(
                 tempTitle,
                 description,
                 geoPoint
             )
-            mDefaultMarkerLayer.addItem(marker);
+            mDefaultMarkerLayer.addItem(marker)
             mMapView.vtmMap.updateMap(true)
         } else {
             marker.description = description
@@ -218,26 +302,24 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     /**
      * 增加或更新marker
      */
-    suspend fun addOrUpdateQsRecordMark(data: QsRecordBean) {
-        for (item in itemizedLayer.itemList) {
+    fun addOrUpdateQsRecordMark(data: QsRecordBean) {
+        for (item in qsRecordItemizedLayer.itemList) {
             if (item is MarkerItem) {
                 if (item.title == data.id) {
-                    itemizedLayer.itemList.remove(item)
+                    qsRecordItemizedLayer.itemList.remove(item)
                     break
                 }
             }
         }
-        createMarkerItem(data)
-        withContext(Dispatchers.Main) {
-            mMapView.updateMap(true)
-        }
+        createQsRecordMarker(data)
+        mMapView.updateMap(true)
     }
 
 
     /**
      * 增加或更新便签
      */
-    suspend fun addOrUpdateNoteMark(data: NoteBean) {
+    fun addOrUpdateNoteMark(data: NoteBean) {
         for (item in noteLayer.itemList) {
             if (item is MarkerItem) {
                 if (item.title == data.id) {
@@ -248,9 +330,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
         }
         noteLineLayer.removeNoteBeanLines(data)
         createNoteMarkerItem(data)
-        withContext(Dispatchers.Main) {
-            mMapView.updateMap(true)
-        }
+        mMapView.updateMap(true)
     }
 
 
@@ -258,19 +338,13 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
         var resultDrawable: Drawable? = null
         if ("POINT" == geometry.geometryType.uppercase(Locale.getDefault())) {
             val geoPoint = GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
-            if (geoPoint != null) {
-                resultDrawable = PointDrawable(geoPoint, vectorLayerStyle)
-            }
+            resultDrawable = PointDrawable(geoPoint, vectorLayerStyle)
         } else if ("LINESTRING" == geometry.geometryType.uppercase(Locale.getDefault())) {
             val lineString = geometry as LineString
-            if (lineString != null) {
-                resultDrawable = LineDrawable(lineString, vectorLayerStyle)
-            }
+            resultDrawable = LineDrawable(lineString, vectorLayerStyle)
         } else if ("POLYGON" == geometry.geometryType.uppercase(Locale.getDefault())) {
             val polygon = geometry as Polygon
-            if (polygon != null) {
-                resultDrawable = PolygonDrawable(polygon, vectorLayerStyle)
-            }
+            resultDrawable = PolygonDrawable(polygon, vectorLayerStyle)
         }
         return resultDrawable
     }
@@ -279,12 +353,12 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     /**
      * 删除质检数据
      */
-    suspend fun removeQsRecordMark(data: QsRecordBean) {
-        for (item in itemizedLayer.itemList) {
+    fun removeQsRecordMark(data: QsRecordBean) {
+        for (item in qsRecordItemizedLayer.itemList) {
             if (item is MarkerItem) {
                 if (item.title == data.id) {
-                    itemizedLayer.itemList.remove(item)
-                    itemizedLayer.populate()
+                    qsRecordItemizedLayer.itemList.remove(item)
+                    qsRecordItemizedLayer.populate()
                     return
                 }
             }
@@ -294,141 +368,56 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     /**
      * 删除标签
      */
-    suspend fun removeNoteMark(data: NoteBean) {
+    fun removeNoteMark(data: NoteBean) {
         for (item in noteLayer.itemList) {
             if (item is MarkerItem) {
                 if (item.title == data.id) {
                     noteLayer.itemList.remove(item)
                     noteLineLayer.removeNoteBeanLines(data)
                     noteLayer.populate()
-                    withContext(Dispatchers.Main) {
-                        mMapView.updateMap(true)
-                    }
+                    mMapView.updateMap(true)
                     return
                 }
             }
         }
     }
 
-    /**
-     * 初始化便签
-     */
-    private fun initNoteData() {
-        mContext.lifecycleScope.launch(Dispatchers.IO) {
-            var list = mutableListOf<NoteBean>()
-            val realm = Realm.getDefaultInstance()
-            realm.executeTransaction {
-                val objects = realm.where<NoteBean>().findAll()
-                list = realm.copyFromRealm(objects)
-            }
 
-            for (item in list) {
-                createNoteMarkerItem(item)
-            }
-        }
-    }
-
-    /**
-     * 初始话质检数据图层
-     */
-    private fun initQsRecordDataLayer() {
-
-        canvas = CanvasAdapter.newCanvas()
-        paint = CanvasAdapter.newPaint()
-        paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL)
-        paint.setTextSize(NUM_13 * CanvasAdapter.getScale())
-        paint.strokeWidth = 2 * CanvasAdapter.getScale()
-        paint.color = Color.parseColor(mDefaultTextColor)
-        val bitmapPoi: Bitmap = AndroidBitmap(
-            BitmapFactory.decodeResource(
-                mContext.resources,
-                R.mipmap.map_icon_blue2
-            )
-        )
-        val symbol = MarkerSymbol(bitmapPoi, MarkerSymbol.HotspotPlace.BOTTOM_CENTER)
-        markerRendererFactory = MarkerRendererFactory { markerLayer ->
-            object : ClusterMarkerRenderer(
-                mContext,
-                markerLayer,
-                symbol,
-                ClusterStyle(
-                    org.oscim.backend.canvas.Color.WHITE,
-                    org.oscim.backend.canvas.Color.BLUE
-                )
-            ) {
-//                override fun getClusterBitmap(size: Int): Bitmap? {
-//                    return super.getclusterbitmap(size)
-//                }
-            }
-        }
-
-        itemizedLayer =
-            MyItemizedLayer(
-                mMapView.vtmMap,
-                mutableListOf(),
-                markerRendererFactory,
-                object : MyItemizedLayer.OnItemGestureListener {
-                    override fun onItemSingleTapUp(
-                        list: MutableList<Int>,
-                        nearest: Int
-                    ): Boolean {
-                        itemListener?.let {
-                            val idList = mutableListOf<String>()
-                            if (list.size == 0) {
-                            } else {
-                                for (i in list) {
-                                    val markerInterface: MarkerInterface =
-                                        itemizedLayer.itemList[i]
-                                    if (markerInterface is MarkerItem) {
-                                        idList.add(markerInterface.title)
-                                    }
-                                }
-                                it.onQsRecordList(idList.distinct().toMutableList())
-                            }
-                        }
-                        return true
-                    }
-
-                    override fun onItemLongPress(
-                        list: MutableList<Int>?,
-                        nearest: Int
-                    ): Boolean {
-                        return true
-                    }
-                })
-        addLayer(itemizedLayer, NIMapView.LAYER_GROUPS.OPERATE_MARKER)
-        mContext.lifecycleScope.launch(Dispatchers.IO) {
-            var list = mutableListOf<QsRecordBean>()
-            val realm = Realm.getDefaultInstance()
-            realm.executeTransaction {
-                val objects = realm.where<QsRecordBean>().findAll()
-                list = realm.copyFromRealm(objects)
-            }
-//            realm.close()
-
-            for (item in list) {
-                createMarkerItem(item)
-            }
-        }
-
-    }
+//    /**
+//     * 初始话质检数据图层
+//     */
+//    private fun initQsRecordDataLayer() {
+//
+//        mContext.lifecycleScope.launch(Dispatchers.IO) {
+//            var list = mutableListOf<QsRecordBean>()
+//            val realm = Realm.getDefaultInstance()
+//            realm.executeTransaction {
+//                val objects = realm.where<QsRecordBean>().findAll()
+//                list = realm.copyFromRealm(objects)
+//            }
+//            for (item in list) {
+//                createMarkerItem(item)
+//            }
+//        }
+//
+//    }
 
     /**
      * 添加质检数据marker
      */
-    private suspend fun createNoteMarkerItem(item: NoteBean) {
+    private fun createNoteMarkerItem(item: NoteBean) {
         val bitmap: Bitmap = createTextMarkerBitmap(mContext, item.description, noteResId)
         val geometry: Geometry? = GeometryTools.createGeometry(item.guideGeometry)
         if (geometry != null) {
-            var geoPoint: org.oscim.core.GeoPoint? = null
+            var geoPoint: GeoPoint? = null
             if (geometry.geometryType != null) {
                 when (geometry.geometryType.uppercase(Locale.getDefault())) {
                     "POINT" -> geoPoint =
-                        org.oscim.core.GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
+                        GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
                 }
             }
             if (geoPoint != null) {
-                var geoMarkerItem: MarkerItem
+                val geoMarkerItem: MarkerItem
                 geoMarkerItem = ClusterMarkerItem(
                     1, item.id, item.description, geoPoint
                 )
@@ -446,16 +435,16 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
     /**
      * 添加质检数据marker
      */
-    private suspend fun createMarkerItem(item: QsRecordBean) {
+    private fun createQsRecordMarker(item: QsRecordBean) {
         val bitmap: Bitmap = createTextMarkerBitmap(mContext, item.description, resId)
         if (item.t_lifecycle != 2) {
             val geometry: Geometry? = GeometryTools.createGeometry(item.geometry)
             if (geometry != null) {
-                var geoPoint: org.oscim.core.GeoPoint? = null
+                var geoPoint: GeoPoint? = null
                 if (geometry.geometryType != null) {
                     when (geometry.geometryType.uppercase(Locale.getDefault())) {
                         "POINT" -> geoPoint =
-                            org.oscim.core.GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
+                            GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
 //                                "LINESTRING" -> {
 //                                    val lineString = geometry as LineString
 //                                    if (lineString != null && lineString.coordinates.size > 0) {
@@ -487,7 +476,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
                     }
                 }
                 if (geoPoint != null) {
-                    var geoMarkerItem: MarkerItem
+                    val geoMarkerItem: MarkerItem
 //                            if (item.getType() === 1) {
                     geoMarkerItem = ClusterMarkerItem(
                         1, item.id, item.description, geoPoint
@@ -503,11 +492,11 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
                     val markerSymbol =
                         MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.CENTER)
                     geoMarkerItem.marker = markerSymbol
-                    itemizedLayer.itemList.add(geoMarkerItem)
+                    qsRecordItemizedLayer.itemList.add(geoMarkerItem)
                 }
             }
         }
-        itemizedLayer.populate()
+        qsRecordItemizedLayer.populate()
     }
 
 
@@ -700,7 +689,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
             val originBitmap = android.graphics.Bitmap.createBitmap(
                 if (drawable.intrinsicWidth > maxWidth) drawable.intrinsicWidth else maxWidth.toInt(),
                 drawable.intrinsicHeight * 2,
-                android.graphics.Bitmap.Config.ARGB_4444
+                android.graphics.Bitmap.Config.ARGB_8888
             )
             val androidCanvas = Canvas(originBitmap)
             val startX = (originBitmap.width - drawable.intrinsicWidth) / 2