为什么我的动画不合适,图像加载在一些图像中占用更多时间?

时间:2012-12-20 10:42:37

标签: android bitmap android-imageview

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);
    }
        }}

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

请发布您的XML R.anim.rotate代码,以便有人可以尝试检查动画无效的原因。