Android ImageView未使用从URL获取图像的异步任务刷新
我试图在谷歌地图标记的信息窗口中播放一个类似视频的动画。 以下是一些非常有效的方法:Android ImageView未使用从URL获取图像的异步任务刷新,android,android-imageview,google-maps-android-api-2,marker,android-handler,Android,Android Imageview,Google Maps Android Api 2,Marker,Android Handler,我试图在谷歌地图标记的信息窗口中播放一个类似视频的动画。 以下是一些非常有效的方法: 能够在markers信息窗口内显示图像幻灯片(存储在res/drawable文件夹中),使用更新Marker信息窗口内UI图像视图的处理程序 我还启动并运行了视频服务器,在请求时将图像位图作为流提供服务 我还开发了一个移动客户端,可以从服务器获取视频(一系列图像)并将其作为视频播放 现在,从我开发的应用程序[1]中,我尝试从服务器[2]获取一系列图像(属于视频),并在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仍然没有得到自动更新。我做错了什么?在您的
if
条件下,您不应该在ImageView
中设置一些东西吗?@Apoorv:对不起,我已经更新了代码。我的错。但它仍然不起作用。是的,这就是计划。如果您查看带有标记“Actual Refresh”的logcat行,每次都会打印它,这表明我处于“If”状态。Else部分用于在服务器返回null时显示默认图像。