我已经找到了关于如何通过从资产中读取动画或使用可绘制对象来在Android中播放动画GIF的教程.但我想要的是从SD卡读取一个gif文件.
我已经改变了从资产中读取gif的项目.
在主要活动中,我基本上创建了gifMovIEVIEw然后setContent(gifMovIEVIEw)
在GifMovIEVIEw类的构造函数中,我已经像项目“eu.andlabs.tutorial.animatedgifs”中那样初始化了MovIE对象.但我使用decodefile给出文件路径而不是decodeStream获取inputStream.
file file = new file (Environment.getExternalStorageDirectory().getabsolutePath(),"piggy.gif"); if(file.exists()){ mMovIE = MovIE.decodefile(file.getPath()); }
我有这条线的G / I I / O EXCEPTION.它找到了文件,但decodefile给出了异常.
在onDraw;
@OverrIDeprotected voID onDraw(Canvas canvas) { canvas.drawcolor(color.transparent); super.onDraw(canvas); final long Now = SystemClock.uptimeMillis(); if (mMovIEstart == 0) { mMovIEstart = Now; } Log.i("",""+mMovIE.duration()); Log.i("",""+mMovIEstart); final int relTime = (int)((Now - mMovIEstart) % mMovIE.duration()); mMovIE.setTime(relTime); mMovIE.draw(canvas, 10, 10); this.invalIDate();}
因为异常,movIE.duration变为0导致错误.
有什么建议?
先感谢您
https://gist.github.com/beyzakokcan/5488897/raw/e9c2afbf941d06ed0f1d3b75dc3d100ff9d7ee85/GifMovieView.java
解决方法:
使用动画:
1 – 在Link中提取您的gif并将图像保存在可绘制文件夹中
2 – 在drawable文件夹中创建image_background_animation.xml,其中“img_weel”是从gif中提取的图像:
<?xml version="1.0" enCoding="utf-8"?><animation-List xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:oneshot="false" > <item androID:drawable="@drawable/img_weel_1" androID:duration="100"/> <item androID:drawable="@drawable/img_weel_2" androID:duration="100"/> <item androID:drawable="@drawable/img_weel_3" androID:duration="100"/></animation-List>
3 – 在java代码中:
ImageVIEw imgWheel = (ImageVIEw) findVIEwByID(R.ID.img_wheel);imgWheel.setBackgroundResource(R.drawable.image_background_animation);AnimationDrawable frameAnimation = (AnimationDrawable) imgWheel.getBackground();frameAnimation.start();
4 – 如果你想要动画的确定时间:
new CountDownTimer(3000, 100) { voID onFinish() { frameAnimation.stop(); }}.start();
看here
总结以上是内存溢出为你收集整理的Android-从文件中播放动画GIF全部内容,希望文章能够帮你解决Android-从文件中播放动画GIF所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)