为什么我的imageview没有在for循环中更新,只有最后一个url的图像在imageview中显示的并不是所有的图像,我做错了什么?
public class LoadImageActivity extends Activity {
ImageView image_view;
Bitmap bitmap;
String[] imageLocation={
"http://wallbase1.org/thumbs/rozne/thumb-499842.jpg",
"http://ns3002439.ovh.net/thumbs/rozne/thumb-2493796.jpg",
"http://ns3002439.ovh.net/thumbs/rozne/thumb-2486664.jpg" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image_view = (ImageView)findViewById(R.id.imageview);
for (int i = 0; i < 2; i++) {
bitmap = loadImage(imageLocation[i]);
image_view.setImageBitmap(bitmap);
Animation rotate = AnimationUtils.loadAnimation(LoadImageActivity.this, R.anim.rotate);
findViewById(R.id.imageview).startAnimation(rotate);
}
}
public Bitmap loadImage(String image_location){
URL imageURL = null;
try {
imageURL = new URL(image_location);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection connection = HttpURLConnection)imageURL.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream inputStream = connection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);//Convert to bitmap
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
}
答案 0 :(得分:1)
嗯,首先,您在两个成功的代码行中(有效地)在图像之间切换的设备有多慢?
其次,系统必须首先进行布局,这在onCreate()
返回后发生。你做的是:
-set reference to bitmap that will be shown when layouted
-changed that reference
-let the system do the layout (Question: Which reference will be read?)
看起来您想要设置第一个位图,旋转它然后设置另一个位图。 你需要做的是:
-set bitmap
-start animation with an Animation.AnimationListener, which sets the second bitmap in onAnimationEnd().
@谢谢亚当!
答案 1 :(得分:0)
您可以在第一个动画上放置Animation.AnimationListener
,然后可以加载下一个图像并在侦听器的onAnimationEnd(...)
方法中开始新的转换。
答案 2 :(得分:0)
尝试设置基础对象(位图),然后更新ImageView。
答案 3 :(得分:-1)
方法loadImage()
不在UI主线程中,使用处理程序用新图像更新ImageView。