1
public class LoadImageActivity extends Activity {

    ImageView image_view;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        image_view = (ImageView)findViewById(R.id.imageview);
        me m1=new me();
        m1.execute("http://wallbase1.org/thumbs/rozne/thumb-499842.jpg");
        me m2=new me();
        m2.execute( "http://wallbase1.org/thumbs/rozne/thumb-637449.jpg"); 
        me m3=new me();
        m3.execute( "http://wallbase1.org/thumbs/rozne/thumb-2509834.jpg"); 
        me m4=new me();
        m4.execute( "http://wallbase1.org/thumbs/rozne/thumb-2501884.jpg"); 
        me m5=new me();
        m5.execute( "http://wallbase1.org/thumbs/rozne/thumb-2514440.jpg");
     };


     class me extends AsyncTask<String, Integer, Bitmap> {

        Bitmap b1;

        // private MainActivity m1;
        protected Bitmap doInBackground(String...params) {
            // TODO Auto-generated method stub
             try {

                  /* Open a new URL and get the InputStream to load data from it. */

                  URL aURL = new URL(params[0]);
                  URLConnection conn = aURL.openConnection();
                  conn.connect();
                  InputStream is = conn.getInputStream();

                  /* Buffered is always good for a performance plus. */
                  BufferedInputStream bis = new BufferedInputStream(is);

                  /* Decode url-data to a bitmap. */
                  Bitmap bm = BitmapFactory.decodeStream(bis);
                  b1=bm;

                  bis.close();
                  is.close();

              } catch (IOException e) 
              {

                  Log.e("DEBUGTAG", "Remote Image Exception", e);

              }

           return null;
       }

    @Override
        protected void onPostExecute(Bitmap result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);

            image_view.setImageBitmap(b1);
            Animation rotation = AnimationUtils.loadAnimation(LoadImageActivity.this, R.anim.rotate);
         image_view.startAnimation(rotation);
    }
        }}

我试图通过将图像解码为位图来显示来自互联网的图像,我想显示来自多个 url 的多个图像。有没有更好的方法来实现它?

4

2 回答 2

1

下载的持续时间取决于很多不同的东西。您当前生成了 5 个 AsyncTask,并且无法保证交付/执行的顺序与您生成它们的顺序相同。很可能第五张图片可能是您收到的第一张图片,这将导致完全错误的顺序。因此,您应该首先下载所有图像,可能只使用一个 AsyncTask。之后,如果成功,您应该启动动画并在图像之间切换。

于 2012-12-20T10:52:22.127 回答
0

有几种更好的方法可以做到这一点,所有这些方法都比您的代码复杂得多。但你确实有一个好的开始。

这个来自 Google I/O 的视频有一些很好的图像技术,在 4:40 左右查看https://www.youtube.com/watch?v=gbQb1PVjfqM

这需要不同的时间,因为它们是不同尺寸的不同图像。

请发布您的 XMLR.anim.rotate代码,以便有人可以尝试检查动画不工作的原因。

于 2012-12-20T10:50:31.170 回答