yuyashuai / frameanimation Goto Github PK
View Code? Open in Web Editor NEWHigh-Performance Frame Animation Library For Android
License: Apache License 2.0
High-Performance Frame Animation Library For Android
License: Apache License 2.0
如题,需要对SurfaceView进行圆角处理时设置背景,但是设置背景后无法显示动画了
animationView.playAnimationFromAssets("login");
animationView.setRepeatMode(FrameAnimation.RepeatMode.INFINITE);
animationView.setSupportInBitmap(true);
animationView.freezeLastFrame(true);
03-23 15:04:10.792 18340 18340 E AndroidRuntime: java.lang.IllegalStateException: can't start animation after release
03-23 15:04:10.793 18340 18340 E uncaughtException: can't start animation after releasecom.yuyashuai.frameanimation.io.BitmapPoolImpl.start(BitmapPoolImpl.kt:92)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.yuyashuai.frameanimation.FrameAnimation.playAnimation(FrameAnimation.kt:220)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.yuyashuai.frameanimation.FrameAnimationView.playAnimation(Unknown Source:7)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.qingshu520.chat.modules.chatroom.widget.RoomNobleInView.setAnimationData(RoomNobleInView.java:324)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.qingshu520.chat.modules.chatroom.widget.RoomNobleInView.access$400(RoomNobleInView.java:44)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.qingshu520.chat.modules.chatroom.widget.RoomNobleInView$2.downloadSuccess(RoomNobleInView.java:301)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.qingshu520.chat.modules.chatroom.helper.ZipHelper$1$1.onPostExecute(ZipHelper.java:107)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.qingshu520.chat.modules.chatroom.helper.ZipHelper$1$1.onPostExecute(ZipHelper.java:93)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.os.AsyncTask.finish(AsyncTask.java:695)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.os.AsyncTask.access$600(AsyncTask.java:180)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.os.Handler.dispatchMessage(Handler.java:106)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.os.Looper.loop(Looper.java:224)
03-23 15:04:10.793 18340 18340 E uncaughtException: android.app.ActivityThread.main(ActivityThread.java:7060)
03-23 15:04:10.793 18340 18340 E uncaughtException: java.lang.reflect.Method.invoke(Native Method)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)
03-23 15:04:10.793 18340 18340 E uncaughtException: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)
java.lang.NullPointerException
03-20 14:59:51.700 9058 17550 E AndroidRuntime: at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1019)
03-20 14:59:51.700 9058 17550 E AndroidRuntime: at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1014)
03-20 14:59:51.700 9058 17550 E AndroidRuntime: at com.yuyashuai.frameanimation.io.DefaultBitmapPool$decodeBitmap$$inlined$repeat$lambda$1.run(DefaultBitmapPool.kt:138)
03-20 14:59:51.700 9058 17550 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
03-20 14:59:51.700 9058 17550 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
我这边在release版本被用户调用时,bugly抓到了native的崩溃,log如下:
2 #1 pc 0010f135 /system/lib/libhwui.so (SkCanvas::writePixels(SkImageInfo const&, void const*, unsigned int, int, int)+72) [armeabi-v7a]
3 #2 pc 00372843 /system/lib/libhwui.so [armeabi-v7a]
4 #3 pc 0036ac37 /system/lib/libhwui.so [armeabi-v7a]
5 #4 pc 0033dbf5 /system/lib/libhwui.so (SkCanvas::internalDrawPaint(SkPaint const&)+224) [armeabi-v7a]
6 #5 pc 00370bd9 /system/lib/libhwui.so (SkCanvas::drawColor(unsigned int, SkBlendMode)+40) [armeabi-v7a]
7 #6 pc 003f3d61 /system/framework/arm/boot-framework.oat [armeabi]
8 java:
9 android.graphics.BaseCanvas.drawColor(BaseCanvas.java:243)
10 android.graphics.Canvas.drawColor(Canvas.java:1631)
11 g.h.a.f.c.clear(TextureBitmapDrawer.kt:2)
12 g.h.a.d.invoke(FrameAnimation.kt:50)
13 g.h.a.d.invoke(FrameAnimation.kt:1)
14 h.x.a.run(Thread.kt:1)
D/dalvikvm: GC_FOR_ALLOC freed 7108K, 22% free 29340K/37516K, paused 27ms, total 27ms
一直在跑gc,但是没有内存泄漏。
你好,使用FrameAnimation有一些问题想要请教下您,可能加个qq啊,方便沟通
当前遇到的问题:
出现了FileMAP:OOM
代码中写:
1、framAnimation与OnStop绑定(动画暂停),是不是不合适呢
2、一个frameAnimation控件,不断加载不同的Asset文件
这种写法是不是不太对
烦请您加一个qq(2857035110),感谢
当频繁加载assets路径中的多个动画资源时候,出现多个动画混在一起的情况,方便的话请加我qq:1126996548 ,我给你发个视频看看,谢谢。祝工作顺利!
dispatcherThread = thread(start = true, name = "FA-DispatcherThread") {
try {
while (state == WORKING && !Thread.currentThread().isInterrupted) {
decodeBitmap()
}
} catch (e: InterruptedException) {
Log.e("test", "BitmapPoolImp error=" + e.toString());
//java.lang.InterruptedException这里会有异常,导致动画提前结束
Thread.currentThread().interrupt()
}
clearAndStop()
}
如何让没开始之前就出现第一帧,播放完之后停留在最后一帧?谢谢
XML 报错导入失败 com.yuyashuai.frameanimation.FrameAnimationSurfaceView
再小米手机上运行,运动速度非常快,但是在其他手机型上不会,查看了开发者动画的速度并没有调整过
你好 我想用你这个做成切换图片不会卡顿 也不是透明 就是直接切换另一个帧动画 这得如果调用 或者说改动
我这边有较大图片的帧动画需求,不过现在版本的压缩导致显示变成了小马赛克了。
调用方法animationView1.playAnimationFromFile(“/storage/emulated/0/testimage/image1/”);
然后就报下面错误了。
07-30 13:45:16.031 2430-2430/AndroidRuntime: FATAL EXCEPTION: main
Process: com.**.test, PID: 2430
java.lang.StackOverflowError: stack size 8MB
at com.yuyashuai.frameanimation.FrameAnimationUtil.getPathList(FrameAnimationUtil.kt)
at com.yuyashuai.frameanimation.FrameAnimationUtil.getPathList(FrameAnimationUtil.kt:76)
at com.yuyashuai.frameanimation.FrameAnimationUtil.getPathList(FrameAnimationUtil.kt:76)
at com.yuyashuai.frameanimation.FrameAnimationUtil.getPathList(FrameAnimationUtil.kt:76)
at com.yuyashuai.frameanimation.FrameAnimationUtil.getPathList(FrameAnimationUtil.kt:76)
支持外部控制播放指定帧功能
动画播放时间长一点的话 会报native crash,下面是log,播放时长不一定,有的时候很长才crash有的时候一下就crash了,下面是log:
backtrace:
#00 pc 000000000007eec4 /dev/ashmem/dalvik-jit-code-cache (deleted) (java.util.concurrent.locks.AbstractQueuedSynchronizer.unparkSuccessor+68)
#1 pc 00000000000773b0 /dev/ashmem/dalvik-jit-code-cache (deleted) (java.util.concurrent.locks.AbstractQueuedSynchronizer.release+128)
#2 pc 000000000007b34c /dev/ashmem/dalvik-jit-code-cache (deleted) (java.util.concurrent.locks.ReentrantLock.unlock+60)
#3 pc 00000000000857d4 /dev/ashmem/dalvik-jit-code-cache (deleted) (java.util.concurrent.LinkedBlockingQueue.signalNotEmpty+164)
#4 pc 0000000000080124 /dev/ashmem/dalvik-jit-code-cache (deleted) (java.util.concurrent.LinkedBlockingQueue.offer+436)
#5 pc 0000000000081730 /dev/ashmem/dalvik-jit-code-cache (deleted) (com.yuyashuai.frameanimation.io.BitmapPoolImpl.recycle+192)
#6 pc 0000000000554988 /system/lib64/libart.so (art_quick_invoke_stub+584)
#7 pc 00000000000cf6c8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
#8 pc 000000000027f2b4 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
#9 pc 00000000002792bc /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+968)
#10 pc 000000000052568c /system/lib64/libart.so (MterpInvokeInterface+1392)
#11 pc 0000000000547214 /system/lib64/libart.so (ExecuteMterpImpl+14740)
#12 pc 0000000001c7f4c4 /data/app/com.xxx.profile-iEw6z-i4Q-Hxrbwo9rzKww==/oat/arm64/base.vdex (com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke+514)
#13 pc 0000000000252fc0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.2118865428+488)
#14 pc 0000000000258ab4 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#15 pc 00000000002792a0 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#16 pc 0000000000524710 /system/lib64/libart.so (MterpInvokeVirtual+588)
#17 pc 0000000000547014 /system/lib64/libart.so (ExecuteMterpImpl+14228)
#18 pc 0000000001c7f2a0 /data/app/com.xxx.profile-iEw6z-i4Q-Hxrbwo9rzKww==/oat/arm64/base.vdex (com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke)
#19 pc 0000000000252fc0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.2118865428+488)
#20 pc 0000000000258ab4 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#21 pc 00000000002792a0 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#22 pc 000000000052568c /system/lib64/libart.so (MterpInvokeInterface+1392)
#23 pc 0000000000547214 /system/lib64/libart.so (ExecuteMterpImpl+14740)
#24 pc 0000000001d28d14 /data/app/com.xxx.profile-iEw6z-i4Q-Hxrbwo9rzKww==/oat/arm64/base.vdex (kotlin.concurrent.ThreadsKt$thread$thread$1.run+4)
#25 pc 0000000000252fc0 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.2118865428+488)
#26 pc 0000000000514fa4 /system/lib64/libart.so (artQuickToInterpreterBridge+1020)
#27 pc 000000000055dafc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
#28 pc 0000000000554988 /system/lib64/libart.so (art_quick_invoke_stub+584)
#29 pc 00000000000cf6c8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
#30 pc 000000000045c840 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#31 pc 000000000045d8fc /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+424)
#32 pc 0000000000488798 /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
#33 pc 00000000000819b4 /system/lib64/libc.so (__pthread_start(void*)+36)
#34 pc 0000000000023478 /system/lib64/libc.so (__start_thread+68)
蛮不错的,赞!
但是我看到里面有很多内部类和匿名内部类,有没有考虑内存泄漏的问题?
simpleDraweeView.setFrameInterval(60);
simpleDraweeView.setScaleType(FrameAnimation.ScaleType.FIT_XY);
if(simpleDraweeView.isPlaying()) {
simpleDraweeView.stopAnimation();
}
simpleDraweeView.playAnimationFromAssets("gift_level_5");
当我一直尝试重复播放一段帧动画时,有很大概率曝出以下异常并且动画不显示。也就是以上一段代码。
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2034)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2068)
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.take(DefaultBitmapPool.kt:203)
at com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:245)
at com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:24)
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
java.util.concurrent.RejectedExecutionException: Task com.yuyashuai.frameanimation.io.DefaultBitmapPool$decodeBitmap$$inlined$repeat$lambda$1@ea3110c rejected from java.util.concurrent.ThreadPoolExecutor@5e81a55[Shutting down, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2078)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:843)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1389)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:121)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.util.concurrent.RejectedExecutionException: Task com.yuyashuai.frameanimation.io.DefaultBitmapPool$decodeBitmap$$inlined$repeat$lambda$1@2f631f8 rejected from java.util.concurrent.ThreadPoolExecutor@5e81a55[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2078)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:843)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1389)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:121)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.util.concurrent.RejectedExecutionException: Task com.yuyashuai.frameanimation.io.DefaultBitmapPool$decodeBitmap$$inlined$repeat$lambda$1@7b0fec2 rejected from java.util.concurrent.ThreadPoolExecutor@5e81a55[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2078)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:843)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1389)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:121)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.util.concurrent.RejectedExecutionException: Task com.yuyashuai.frameanimation.io.DefaultBitmapPool$decodeBitmap$$inlined$repeat$lambda$1@f794810 rejected from java.util.concurrent.ThreadPoolExecutor@5e81a55[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2078)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:843)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1389)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:121)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1326)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:150)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1022)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1328)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.decodeBitmap(DefaultBitmapPool.kt:150)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.access$decodeBitmap(DefaultBitmapPool.kt:13)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool$start$2.run(DefaultBitmapPool.kt:86)
at java.lang.Thread.run(Thread.java:764)
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2034)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2068)
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
at com.yuyashuai.frameanimation.io.DefaultBitmapPool.take(DefaultBitmapPool.kt:203)
at com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:245)
at com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:24)
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
您好,您的开源框架是少数几个能在机顶盒上做复杂序列帧动画不卡的。
现在我遇到一个比较严重的内存泄露问题,我再一个页面中,不断的清除、新增 多个 FrameAnimation控件播放多个序列帧,平均1小时左右,内存占用会在1分钟内突然持续大量增长,直到最终由decodeBitmap()触发OOM。OOM页面闪退后,泄露内存依然无法释放
。
#125006 java.lang.OutOfMemoryError
pthread_create (1040KB stack) failed: Try again
com.yuyashuai.frameanimation.io.BitmapPoolImpl.void decodeBitmap()(BitmapPoolImpl.java:154)
11-21 12:50:54.120 4760-4832/com.yuyashuai.surfaceviewanimation E/SurfaceHolder: Exception locking surface
java.lang.IllegalArgumentException: Surface was already locked
at android.view.Surface.lockCanvas(Surface.java:262)
at android.view.SurfaceView$4.internalLockCanvas(SurfaceView.java:826)
at android.view.SurfaceView$4.lockCanvas(SurfaceView.java:794)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.clearSurface(SurfaceViewAnimation.java:324)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.drawBitmap(SurfaceViewAnimation.java:307)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.access$1600(SurfaceViewAnimation.java:261)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack$1.run(SurfaceViewAnimation.java:345)
11-21 12:50:54.220 4760-4832/com.yuyashuai.surfaceviewanimation E/AndroidRuntime: FATAL EXCEPTION: Thread-3543
Process: com.yuyashuai.surfaceviewanimation, PID: 4760
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Canvas.drawColor(int, android.graphics.PorterDuff$Mode)' on a null object reference
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.clearSurface(SurfaceViewAnimation.java:326)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.drawBitmap(SurfaceViewAnimation.java:307)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack.access$1600(SurfaceViewAnimation.java:261)
at com.yuyashuai.surfaceanimation.SurfaceViewAnimation$MyCallBack$1.run(SurfaceViewAnimation.java:345)
传了文件夹的路径,没有判断文件夹里是否含有其他非图片文件
播放完一次如何设置不消失
第一次成功dismiss,第二次之后就不会执行onAnimationEnd
Android studio导入这个jar,用不了。经排查,问题在jar包
会导致sleep的时候, 这个线程被杀,然后报异常
W/System.err: java.lang.InterruptedException
W/System.err: at java.lang.Thread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:1031)
at java.lang.Thread.sleep(Thread.java:985)
at com.yuyashuai.silkyanimation.SilkyAnimation$MyCallBack$1.run(SilkyAnimation.java:822)
赞!赞!
通过触摸点击事件调用可以生效。在代码中直接调用该方法 无效。因为 isPlay=false ,神了
2 #1 pc 001ebcb0 /system/lib/libskia.so (SkARGB32_Shader_Blitter::blitRect(int, int, int, int)+1936) [armeabi-v7a]
3 java:
4 android.graphics.Canvas.drawBitmap(Canvas.java:1500)
5 com.yuyashuai.frameanimation.drawer.TextureBitmapDrawer.draw(TextureBitmapDrawer.kt:22)
6 com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:254)
7 com.yuyashuai.frameanimation.FrameAnimation$draw$1.invoke(FrameAnimation.kt:25)
8 kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
报错如下:
ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.
尝试按照建议也无法解决,貌似是AndroidX包的引入冲突问题
机型:Google Pixel一代
系统:8.1.0
前置条件:设置播放模式FrameAnimation.RepeatMode.ONCE
表现:动画提前结束,出现surface报错。
出错日志:
2019-07-10 18:24:32.844 2476-2669/com.yuyashuai.silkyanimation I/System.out: progress:0.9502488 frameIndex:191 totalFrames:201
2019-07-10 18:24:32.888 2476-2669/com.yuyashuai.silkyanimation I/System.out: progress:0.95522386 frameIndex:192 totalFrames:201
2019-07-10 18:24:32.933 2476-2669/com.yuyashuai.silkyanimation I/System.out: progress:0.960199 frameIndex:193 totalFrames:201
2019-07-10 18:24:32.976 2476-2669/com.yuyashuai.silkyanimation I/System.out: progress:0.96517414 frameIndex:194 totalFrames:201
2019-07-10 18:24:33.004 2476-2476/com.yuyashuai.silkyanimation E/Surface: Surface::lock failed, already locked
2019-07-10 18:24:33.017 2476-2669/com.yuyashuai.silkyanimation I/System.out: progress:0.0049751243 frameIndex:1 totalFrames:201
Dialog帧动画布局位置,show和dismiss瞬间,会有黑块
// show代码块
reward_badge.run {
autoRelease = false
setScaleType(FrameAnimation.ScaleType.FIT_XY)
setFrameInterval(135)
setRepeatMode(FrameAnimation.RepeatMode.INFINITE)
playAnimationFromAssets("anim/live_reward")
}
// dismiss代码块
reward_badge.stopAnimationSafely()
调用了stopAnimationSafely后动画没有停止,还在继续。
初次使用体验确实很好 。但我关闭界面在 反复多次进入界面后播放动画 使用内存会一路累加 。。直至APP卡死(页面关闭时onDestroy 里有调用stopAnimation)
decodeStream很慢.每张都在40到60ms 导致播放帧动画的时候报错
get bitmap in position: 5 is null ,animation was forced to stop
动画线程就被关掉了.
有什么解决办法吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.