Nah*_*ana 4 java android fatal-error samsung-mobile
我试图在onDraw方法中使用Android Movie类在ImageView中显示动画gif,如下所示:
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
long now = android.os.SystemClock.uptimeMillis();
if (movieStart == 0) {
movieStart = now;
}
movie = getMovieFromGif();
if (movie != null && movie.duration() > 0) {
try {
int relTime = (int) ((now - movieStart) % movie.duration());
movie.setTime(relTime);
float movie_height = convertDpToPixels(movie.height());
float movie_width = convertDpToPixels(movie.width());
float new_movie_height = movie_height;
float new_movie_width = movie_width;
float movie_ratio = movie_width / movie_height;
if (new_movie_width > container_width) {
new_movie_width = container_width;
new_movie_height = new_movie_width / movie_ratio;
}
if (new_movie_height > container_height) {
new_movie_height = container_height;
new_movie_width = new_movie_height * movie_ratio;
}
float scale_x = container_width / new_movie_width;
float scale_y = container_height / new_movie_height;
scale_x = new_movie_width / (float) movie.width();
scale_y = new_movie_height / (float) movie.height();
canvas.scale(scale_x, scale_y);
float x = 0;
if ((float) this.getWidth() > new_movie_width) {
x = ((this.getWidth() - (movie.width() * scale_x)) / 2f)
/ scale_x;
}
movie.draw(canvas, x, 0);
this.invalidate();
} catch (Exception ex) {
Log.i("onDraw()", "Error: " + ex.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码在大多数设备上运行良好,但在华为Ascend P7和三星galaxy a5上,应用程序在movie.draw(canvas,x,0)上崩溃,但有异常:
A/libc(23632):0x00000000(代码= 1)处的致命信号11(SIGSEGV),线程23632
知道movie.draw在这些设备上有什么问题吗?
更新:以下是完整的堆栈跟踪
04-29 12:09:24.979:D/Activity(18951):#2 setTransGradationModeColor为true
04-29 12:09:25.049:I/Adreno-EGL(18951):: EGL 1.4 QUALCOMM build :()
04-29 12:09:25.049:I/Adreno-EGL(18951):OpenGL ES Shader编译器版本:E031.24.02.07 04-29
12:09:25.049:I/Adreno-EGL(18951):生成日期:08/06/14 Wed
04-29 12:09:25.049:I/Adreno-EGL(18951):Local Branch:rb1 04-29
12:09:25.049:I/Adreno-EGL(18951):Remote Branch:
04-29 12 :09:25.049:I/Adreno-EGL(18951):Local Patches:
04-29 12:09:25.049:I/Adreno-EGL(18951):Reconstruct Branch
:04-29 12:09:25.079:D/OpenGLRenderer (18951):启用调试模式0
04-29 12:09:25.109:D/skia(18951):streamToByte:输入大于30MB的agif图像.
04-29 12:09:25.109:D/skia(18951):streamToByte:Quram agif - 篇幅:10473 04-29
12:09:25.109:D/skia(18951):Wink AGIF Move Constructer End 9,totalTime:2700
04-29 12:09:25.109:A/libc(18951):致命信号11(SIGSEGV)位于0x00000000(代码= 1),线程18951(com.android.gif)
在执行代码movie.draw()之后发生致命信号错误,rest是在movie.draw()之前执行行的堆栈跟踪.
| 归档时间: |
|
| 查看次数: |
4407 次 |
| 最近记录: |