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

// TODO Auto-generated method stub
        super.onPostExecute(result);

        i1.setImageBitmap(b1);
        Animation rotation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate);
     i1.startAnimation(rotation);
    //System.out.println("imageview is working");
        try {
            System.out.println("thread going to sleep");
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        i1.setImageBitmap(b1);
        }

インターネットからの画像をビットマップを介してイメージビューに表示していますが、URLを更新してこのビットマップに別の画像を表示していますが、前の画像のみが表示されているこの画像を表示することはできません。最後の画像のみをループしますか?何か提案はありますか?

4

1 に答える 1

1

OnCreateから、またはネットワークからのコードのダウンロードを最初に開始したい場所からこれを呼び出します

new Thread(new Runnable() {
                public void run() {
                    Drawable drawable = createDrawableFromURL(_mDrawingURL);

                    Message msgURL = new Message();
                    msgURL.arg2 = URL_CONSTANT;
                    msgURL.obj = drawable;
                    _handler_url.sendMessage(msgURL);   
                }
            }).start();
        } catch (JSONException e) {
            e.printStackTrace();
        } 
    }

この方法は、インターネットから画像をダウンロードするために使用されます。

private Drawable createDrawableFromURL(String urlString) {
        Drawable image = null;
        try
        {
            InputStream inputStream = new URL(urlString).openStream();
            image = Drawable.createFromStream(inputStream, null);
            inputStream.close();
        }
        catch (MalformedURLException e) {
            e.printStackTrace();
            image = null;
        } catch (IOException e) {
            e.printStackTrace();
            image = null;
        }
        return image;
    }

画像をダウンロードすると、画像ビューが画像で更新されます。

private Handler _handler_url = new Handler(){
        public void dispatchMessage(Message msg) {
            switch (msg.arg2) {
            case URL_CONSTANT:
                Drawable drawable = (Drawable) msg.obj;
                if(drawable!=null)
                    _mImageView.setImageDrawable(drawable);

                break;
            default:
                break;
            }
        };
    };
于 2012-12-20T09:09:44.307 に答える