我正试图在谷歌地图中播放像动画这样的视频 - 标记的infoWindow。 以下是完美运作的事情:
现在,从我开发的APPLICATION [1]开始,我试图从SERVER [2]获取一系列图像(属于视频)而不是存储的图像,并在imageView中设置接收的图像。
我面临的问题是我正在获取新图像,我正在调用imageView.setImageBitmap(bt);但是在我强制更新视图(通过触摸事件)之前,imageView没有刷新
以下是我的代码:
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
BasicMapActivity.this.updateUI();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
public void updateUI() {
refreshHandler.sleep(200); // Handler type object which makes this function to call as if its on a different thread
Log.d("Update UI - in RUN", "liveOffset : " + liveOffset);
StreamElement se = getNextLiveView();
if (se != null) {
Bitmap bmp = BitmapFactory.decodeByteArray(se.getData(), 0, se.getData().length);
Bitmap bt=Bitmap.createScaledBitmap(bmp, 150, 150, false);
Log.d("Actual Refresh ", "liveOffset : " + liveOffset); // updates inside the above getNextLiveView function that fetches the new image
imageViewK = (ImageView) kv.findViewById(R.id.imageView1);
imageViewK.setImageBitmap(bt); // Received new image is set every time on the imageView
//imageViewK.postInvalidate();
} else{
Bitmap bMap = BitmapFactory.decodeResource(getResources(),
imgidK[1]);
Bitmap bt = Bitmap.createScaledBitmap(bMap, 75, 75, false);
imageViewK.setImageBitmap(bt);
}
}
我已经评论了上面的代码来解释我的情况。每次都会记录此日志(Log.d(“实际刷新”,“liveOffset:”+ liveOffset),其中包含更新的liveOffset值) - >这意味着,我每次都可以在线程循环执行中到达imageView设置行。正如您所看到的,我也尝试过使用imageView.postInvalidate(),因为我想这个方法是在非UI线程上运行的,但仍然没有自动更新imageView。我在这做错了什么?