GIF görüntüsünü görüntülemeye çalıştığım bir Android uygulaması geliştiriyorum. Bunun için Movie sınıfını kullanıyorum ve View'u genişleten bir sınıf GIFView oluşturdum. Movie.decodeFile yönteminden bir Movie örneği alıyorum.Bir film tuvali çizdiğinde Android 11 hata sinyali
Movie.draw (tuval) çağrıldığında bir hata alıyorum.
04-28 13:44:18.001: A/libc(24883): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 24883 (mple.channel002)
ilgili kod vardır:
public void setGif(File gif)
{
movie = Movie.decodeFile(gif.getAbsolutePath());
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
super.draw(canvas);
canvas.drawColor(0xFFCC3C6C);
if(movie != null)
{
if(movieStart == 0)
movieStart = android.os.SystemClock.uptimeMillis();
int duration = Math.max(movie.duration(), 1000);
movie.setTime((int)(duration - ((android.os.SystemClock.uptimeMillis() - movieStart)%duration)));
movie.draw(canvas, 10, 10);//TODO CRASH
invalidate();
}
}
Ben ana bir GifView oluşturmak, bunu yolunu verip FillParent parametresi ile düzeni eklemek için yukarıdaki setGIF yöntemini çağırın. Bu resmi bir ImageView uygulamasında yazdırdığımda çalışır. GIF yerine tuvalde çizilebilir çizim de çalışır. Yani sorun, Film örneğiyle ilgileniyor gibi görünüyor. Ben de bunu movie.draw bu kaba ama aynı hatayı çalıştı http://weavora.com/blog/2012/02/07/android-and-how-to-use-animated-gifs/
Ben GifView yapmak için bu bağlantıları kullanılan Info about the Movie class for Android
Edit1: Bir Oppo benim testler üzerinde 7a bul do Android 4.4.2/snapdragon 801/2GB movie.draw (canvas, 10, 10) film.draw (canvas, 10f, 10f) olarak değiştirilemiyor.
EDIT2: Sadece Android 2.3.5 ile eski ZTE cihaz üzerinde test ve Find7a cihazda başlatırken Yani bir şey yanlış .. çalıştı ama neyin :(
Ben çözüm bilmiyorum ama sorun hakkında bazı sorular var: biz zamanı ortamına hakkında bir şeyler biliyor musunuz sonraki satır kullanın? Emulator veya telefondan test ediyor musunuz? Ayrıca film.draw'in int yerine float için beklediğini gördüm. Float numaraları ile denediniz mi? benzeri: movie.draw (kanvas, 10f, 10f); – kisstajmi
Testlerimi Android 4.4.2/snapdragon 801/2GB üzerinde bir Oppo Find 7a üzerinde yapıyorum ve movie.draw (canvas, 10, 10) film.draw (canvas, 10f, 10f) olarak değiştirilemiyor. – Vrong
Belki de işletim sisteminde veya tam aygıtta bir sorun var. Mümkünse lütfen Emulator'de deneyin. Ayrıca aygıta özgü sorunları da arayabilirsiniz. – kisstajmi