如果您使用的是6.0(或更高版本)的最低BlackBerry操作系統,則BitmapField
類directly supports animated gifs。
如果您需要支持更低的OS版本,那麼你只需要一個方法添加到您的AnimatedGIFField
類淘汰掉舊圖像,並使用一個新問題:
public void setImage(EncodedImage image) {
// Call BitmapField#setImage()
super.setImage(image);
// Store the image and its dimensions.
_image = image;
_width = image.getWidth();
_height = image.getHeight();
_currentFrame = 0;
// Stop the previous thread.
_animatorThread.stop();
// Start a new animation thread.
_animatorThread = new AnimatorThread(this);
_animatorThread.start();
}
注意,這是一個UI操作。所以,如果你想從後臺線程更新圖像,請確保使用將其放在UI線程上的調用來包裝它。例如:
final EncodedImage eImage = EncodedImage.getEncodedImageResource("img/banner.gif");
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
_animatedBanner.setImage(eImage);
}
});
更新:我也注意到AnimatedGIFField
類的工作方式實在不行多線程實踐(停止線程)。如果你真的想讓代碼更好,你可以使用implement this solution或 use the technique I show in this answer。
閱讀more about this here。
是啊!我正在使用OS 5,並且setImage方法非常完美! 謝謝! – Mun0n 2013-04-30 07:52:03
不客氣! – Nate 2013-04-30 07:52:21