Giter VIP home page Giter VIP logo

matisse's Introduction

matisse's People

Contributors

leavesczy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

matisse's Issues

能否支持仅加载相册、列表分页加载和缩略图展示

试用了一下app,感觉不错,但是有几个点不知道能不能优化一下:

首先是如果设备里有很多照片、分了很多相册的话,直接加载全部照片有较长的等待时间,不知道能不能实现仅加载相册(包括分页加载),可以提前按需选择相册;

还有就是现在列表页中的照片的读取加载也稍微有点慢,我了解到安卓系统有提供原生的缩略图加载功能,是否考虑在库中集成使用,例如说为MediaResource增加一个suspend fun getThumbNail(): Bitmap之类的函数直接调用?

uri Failed to load resource

/使用Gilde錯誤訊息如下
Glide: Load failed for [MediaResource(id=1000000500, bucketId=540528482, bucketName=Download, uri=content://media/external/file/1000000500, path=/storage/emulated/0/Download/下載 (10).jpeg, name=下載 (10).jpeg, mimeType=image/jpeg)] with dimensions [1080x2134]
class com.bumptech.glide.load.engine.GlideException: Failed to load resource

使用 Matisse 取得無法顯示的uri
content://media/external/file/1000000500

使用(PickMultipleVisualMedia)方式取得可正常顯示的 uri 範例如下
content://media/picker/0/com.android.providers.media.photopicker/media/1000000500

是否有解決的方式呢?謝謝

Java项目可以用吗

我们现在的项目是一个老的,全部用Java开发的项目,并且目前没有使用kotlin的想法。这样的话可否使用您的这个项目呢?

适配 Android 14 Selected Photos Access

如下图所示,点击Select photos and videos时,弹出的是 Android 新增的 PhotoPicker界面,选取一些图片之后,选中的图片,才会出现在项目的图片选择界面。

并且,之后不再弹出授权界面,导致后续只能选取第一次从PhotoPicker选取的照片。

image

0.0.13 版本,在真机 google/pixel3(os 12) 上,选择图片列表为空,问题已找到,作者要是看到了更新下吧

error log:
java.lang.NullPointerException: getString(columnIndex) must not be null at github.leavesczy.matisse.internal.logic.MediaProviderKt.getString(MediaProvider.kt:217) at github.leavesczy.matisse.internal.logic.MediaProviderKt.access$getString(MediaProvider.kt:1) at github.leavesczy.matisse.internal.logic.MediaProvider$loadResources$2.invokeSuspend(MediaProvider.kt:95) at github.leavesczy.matisse.internal.logic.MediaProvider$loadResources$2.invoke(Unknown Source:8) at github.leavesczy.matisse.internal.logic.MediaProvider$loadResources$2.invoke(Unknown Source:4) at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89) at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169) at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1) at github.leavesczy.matisse.internal.logic.MediaProvider.loadResources(MediaProvider.kt:57) at github.leavesczy.matisse.internal.logic.MediaProvider.access$loadResources(MediaProvider.kt:21) at github.leavesczy.matisse.internal.logic.MediaProvider$loadResources$4.invokeSuspend(MediaProvider.kt:145) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
错误定位
private fun Cursor.getString(columnName: String): String { val columnIndex = getColumnIndexOrThrow(columnName) return getString(columnIndex) }
改成如下,可以显示选择图片列表
return getString(columnIndex) ?: ""

类文件具有错误的版本 61.0, 应为 55.0

作者辛苦了。compose中用起来很方便。
在依赖了 kapt("androidx.room:room-compiler:2.5.1")之后,编译过程会失败。具体问题如下:
/Users/wangfeiwangfei/wangfei/xtd_program/Design/app/build/tmp/kapt3/stubs/debug/com/example/design/widget/engine/CoilImageEngine.java:9: 错误: 无法访问ImageEngine public final class CoilImageEngine implements github.leavesczy.matisse.ImageEngine { ^ 错误的类文件: /Users/wangfeiwangfei/.gradle/caches/transforms-3/bb316340c778c9fffa4ee71787e8cb2d/transformed/jetified-Matisse-1.0.1-api.jar(/github/leavesczy/matisse/ImageEngine.class) 类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。 /Users/wangfeiwangfei/wangfei/xtd_program/Design/app/build/tmp/kapt3/stubs/debug/com/example/design/widget/engine/CoilImageEngine.java:19: 错误: 无法访问MediaResource github.leavesczy.matisse.MediaResource mediaResource, @org.jetbrains.annotations.NotNull() ^ 错误的类文件: /Users/wangfeiwangfei/.gradle/caches/transforms-3/bb316340c778c9fffa4ee71787e8cb2d/transformed/jetified-Matisse-1.0.1-api.jar(/github/leavesczy/matisse/MediaResource.class) 类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。

选择图片后crash

implementation platform('androidx.compose:compose-bom:2023.04.01')
MatissePreviewPage 里使用了 val pagerState = rememberPagerState(initialPage = initialPage)
这个方法已经更新了

@ExperimentalFoundationApi @Composable fun rememberPagerState( initialPage: Int = 0, initialPageOffsetFraction: Float = 0f, pageCount: () -> Int ): PagerState

报错如下

java.lang.NoSuchMethodError: No static method HorizontalPager-AlbwjTQ(ILandroidx/compose/ui/Modifier;Landroidx/compose/foundation/pager/PagerState;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/pager/PageSize;IFLandroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/gestures/snapping/SnapFlingBehavior;ZZLkotlin/jvm/functions/Function1;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;III)V in class Landroidx/compose/foundation/pager/PagerKt; or its super classes (declaration of 'androidx.compose.foundation.pager.PagerKt' appears in /data/app/com.fantasy.naduo-lujl7-vPnSPpHzhg7xp-Ow==/base.apk)

一点小建议:图片缩放 & 加载状态

  • 逛 Github 的时候发现了个库:https://github.com/saket/telephoto,是专门用于支持图片的缩放的,或许可以参考?
  • 进入图片选择页面时要不加一个简单的 Loading?我的真机有大约 7k 张图片,进入到页面后就只有左上角的“拍照” item,要等待十几秒才能加载出图片,这期间的等待没有 UI 或者 提示文本。加一点简单的 Loading UI 似乎更好?

拍照保存的照片,可以定义目录吗?

我试了一下保存路径是:/storage/emulated/0/Pictures/1cdd49db-.jpg,
如果能在Picture下自定义一个文件夹就好了,比如:/storage/emulated/0/Pictures/MyPicture/1cdd49db-.jpg

框架是否有展示图片的接口?

我选择完图片后展示在我们自己的列表里。然后点击列表里这张图片在单独放大展示出来,咱们有直接传递uri或path展示图片的接口么?

升级到最新版本遇到的问题

最新版本的图片加载引擎怎么变必传的了
data class Matisse(
val maxSelectable: Int,
val mimeTypes: List,
val imageEngine: ImageEngine,
val captureStrategy: CaptureStrategy = NothingCaptureStrategy
) : Parcelable {

init {
    assert(value = maxSelectable >= 1)
    assert(value = mimeTypes.isNotEmpty())
}

}

Matisse 1.0.2 conflicts with glide 4.15.1 annotation dependencies, when `kotlin.jvmToolchain(8)`

conflicts

// build.gradle [app]
android {
    //...
    kotlin {
        jvmToolchain(8)
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.4.8'
    }
}
dependencies {
    //...
    implementation "com.github.leavesCZY:Matisse:1.0.2"
	
    def glide_version = "4.15.1"
    implementation "com.github.bumptech.glide:glide:${glide_version}"
    implementation 'com.github.bumptech.glide:compose:1.0.0-alpha.1'
    kapt "com.github.bumptech.glide:compiler:${glide_version}"
}

// build.gradle [project]
plugins {
    //...
    id 'org.jetbrains.kotlin.android' version '1.8.22' apply false
}

no conflicts

// build.gradle [app]
android {
    //...
    composeOptions {
        kotlinCompilerExtensionVersion '1.3.2'
    }
}
dependencies {
    //...
    implementation "com.github.leavesCZY:Matisse:1.0.2"
	
    def glide_version = "4.15.1"
    implementation "com.github.bumptech.glide:glide:${glide_version}"
    implementation 'com.github.bumptech.glide:compose:1.0.0-alpha.1'
    kapt "com.github.bumptech.glide:compiler:${glide_version}"
}

// build.gradle [project]
plugins {
    //...
    id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
}

Error

xxx\CoilImageEngine.java:5: 错误: 无法访问ImageEngine
public final class CoilImageEngine implements github.leavesczy.matisse.ImageEngine {
                                                                      ^
  错误的类文件: Z:\.repo\.gradle\caches\transforms-3\b0ef419255af1430b3c50e56e586e3cc\transformed\Matisse-1.0.2-api.jar(github/leavesczy/matisse/ImageEngine.class)
    类文件具有错误的版本 61.0, 应为 52.0
    请删除该文件或确保该文件位于正确的类路径子目录中。

图片裁剪

相册一般需要图片的裁剪功能。没看到有裁剪功能的支持

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@d00a93f

机型:魅族m15 Android 7.1
复现:第一次跳转Matisse选择图片后,跳转到目标页,接着退出当前页回到首页再次跳转Matisse
compose:composeBom = "2024.03.00"(1.6.4)尝试过1.5.4
coil:2.5.0
github-matisse = "2.0.0"


java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@f5cd1e3
at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1464)
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:259)
at android.graphics.Canvas.drawBitmap(Canvas.java:1672)
at androidx.compose.ui.graphics.AndroidCanvas.drawImageRect-HPBpro0(AndroidCanvas.android.kt:275)
at androidx.compose.ui.graphics.drawscope.CanvasDrawScope.drawImage-AZ2fEMs(CanvasDrawScope.kt:256)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawImage-AZ2fEMs(LayoutNodeDrawScope.kt)
at androidx.compose.ui.graphics.drawscope.DrawScope.drawImage-AZ2fEMs$default(DrawScope.kt:551)
at androidx.compose.ui.graphics.painter.BitmapPainter.onDraw(BitmapPainter.kt:93)
at androidx.compose.ui.graphics.painter.Painter.draw-x_KDEd0(Painter.kt:212)
at coil.compose.AsyncImagePainter.onDraw(AsyncImagePainter.kt:208)
at androidx.compose.ui.graphics.painter.Painter.draw-x_KDEd0(Painter.kt:212)
at coil.compose.ContentPainterModifier.draw(ContentPainterModifier.kt:197)
at androidx.compose.ui.node.BackwardsCompatNode.draw(BackwardsCompatNode.kt:349)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:364)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:383)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:380)
at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:280)
at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:335)
at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:277)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:348)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:926)
at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
2024-04-03 16:14:55.314 19678-19678 AndroidRuntime com.ming.opengl E at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:66)
at androidx.compose.material.ripple.AndroidRippleIndicationInstance.drawIndication(Ripple.android.kt:172)
at androidx.compose.foundation.IndicationModifier.draw(Indication.kt:183)
at androidx.compose.ui.node.BackwardsCompatNode.draw(BackwardsCompatNode.kt:349)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
at androidx.compose.ui.node.LayoutNodeDrawScope.performDraw(LayoutNodeDrawScope.kt:76)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:55)
at androidx.compose.foundation.BackgroundNode.draw(Background.kt:159)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:364)
at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:383)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:380)
at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:280)
at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:335)
at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:277)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:348)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:176)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:383)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:380)
at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:280)
2024-04-03 16:14:55.315 19678-19678 AndroidRuntime com.ming.opengl E at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:335)
at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:277)
at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:348)
at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:926)
at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:66)
at androidx.compose.foundation.DrawOverscrollModifier.draw(AndroidOverscroll.android.kt:81)
at androidx.compose.ui.node.BackwardsCompatNode.draw(BackwardsCompatNode.kt:349)
at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:105)
at androidx.compose.ui.node.LayoutNodeDrawScope.draw-x_KDEd0$ui_release(LayoutNodeDrawScope.kt:86)
at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:364)
at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:54)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:383)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2303)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:500)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:256)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:382)
at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:380)
at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:280)
at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:335)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1236)
at android.view.View.draw(View.java:17338)
at android.view.View.updateDisplayListIfDirty(View.java:16312)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16307)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16307)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16307)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16307)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16307)
at android.view.View.draw(View.java:17096)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.draw(View.java:17338)
at com.android.internal.policy.DecorView.draw(DecorView.java:779)
at android.view.View.updateDisplayListIfDirty(View.java:16312)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:661)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:667)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:775)
2024-04-03 16:14:55.315 19678-19678 AndroidRuntime com.ming.opengl E at android.view.ViewRootImpl.draw(ViewRootImpl.java:2957)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2765)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2351)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1383)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6592)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
at android.view.Choreographer.doCallbacks(Choreographer.java:778)
at android.view.Choreographer.doFrame(Choreographer.java:692)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1003)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:893)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.