วิธีโหลด ImageView ด้วย URL ใน Android [ปิด]


530

คุณจะทำอย่างไรใช้ภาพอ้างอิงโดย URL ในImageView?


1
ลองใช้หนึ่งstackoverflow.com/questions/14332296/
comeGetSome

คำตอบ:


713

จากนักพัฒนา Android :

// show The Image in a ImageView
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
            .execute("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");

public void onClick(View v) {
    startActivity(new Intent(this, IndexActivity.class));
    finish();

}

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ต่อไปนี้ที่ตั้งไว้ในAndroidManifest.xmlการเข้าถึงอินเทอร์เน็ต

<uses-permission android:name="android.permission.INTERNET" />

39
นี่มันเจ๋งมาก. และควรจะสูงกว่ามากในรายการ asynctask อนุญาตให้โหลดโดยไม่ต้องแช่แข็ง UI!
Kyle Clegg

3
AsyncTasks ใช้ตัวจัดการแบบอนุกรมซึ่งหมายความว่าแต่ละภาพจะโหลดทีละภาพและไม่โหลดเธรดแบบขนาน
Blundell

2
ลิงก์ซอร์สไม่ทำงานอีกต่อไป ...
hecvd

10
สตรีมอินพุตไม่ได้ปิดในตัวอย่างของคุณ ทำได้ดีที่สุดในที่สุดบล็อกของลอง / จับของคุณ
Risadinha

2
วิธีนี้ยังคงเกี่ยวข้องหรือไม่ ฉันสับสนเล็กน้อยเกี่ยวกับวิธี OnClick () และจุดประสงค์ของมัน
tccpg288

170

1. Picassoอนุญาตให้โหลดภาพที่ไม่ยุ่งยากในแอปพลิเคชันของคุณ - บ่อยครั้งในโค้ดหนึ่งบรรทัด!

ใช้ Gradle:

implementation 'com.squareup.picasso:picasso:2.71828'

เพียงหนึ่งบรรทัดของรหัส!

Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);

2 Glideการโหลดรูปภาพและไลบรารีแคชสำหรับ Android ที่เน้นการเลื่อนที่ราบรื่น

ใช้ Gradle:

repositories {
  mavenCentral() 
  google()
}

dependencies {
   implementation 'com.github.bumptech.glide:glide:4.7.1'
   annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

// สำหรับมุมมองง่ายๆ:

  Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(imageView);

3 fresco เป็นระบบที่มีประสิทธิภาพสำหรับการแสดงภาพในแอปพลิเคชั่น Android Frescoดูแลการโหลดและการแสดงภาพดังนั้นคุณไม่จำเป็นต้องทำอะไร

เริ่มต้นกับ Fresco


2
ดังนั้นหาก url คือ localhost หมายถึงอิมเมจอยู่ในฐานข้อมูลโลคัลเซิร์ฟเวอร์ของระบบที่กำลังพัฒนาเช่น xampp ยังคงสามารถรับอิมเมจจาก url =
กระบอง

2
@blackjack - localhost จากแอพจะเป็นสมาร์ทโฟนนั้นเอง ในการเข้าถึงระบบที่กำลังพัฒนาสมาร์ทโฟนและระบบที่กำลังพัฒนาของคุณจะต้องอยู่ในเครือข่ายเดียวกันและคุณจะต้องใช้ที่อยู่ IP ของระบบที่กำลังพัฒนาของคุณในเครือข่ายนั้น
Ridcully

1
เป็นไปได้ไหมที่จะใช้ปิกัสโซเพื่อโหลดภาพบนปุ่ม?
มาห์ดี

1
@ chiragkyada ฉันลองด้วยรหัสนี้ Picasso.with (บริบท) .load (url) .into (button_view); แต่มันแสดงข้อผิดพลาดสำหรับ: เป็น (button_view)
mahdi

1
ฉันคิดว่านี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Udo

150

คุณจะต้องดาวน์โหลดภาพก่อน

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
        in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

        final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
        out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
        copy(in, out);
        out.flush();

        final byte[] data = dataStream.toByteArray();
        BitmapFactory.Options options = new BitmapFactory.Options();
        //options.inSampleSize = 1;

        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
        Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
        closeStream(in);
        closeStream(out);
    }

    return bitmap;
}

จากนั้นใช้ Imageview.setImageBitmap เพื่อตั้งค่าบิตแมปเป็น ImageView


126
ใช่แล้ว แต่เพียง 3 บรรทัดเหล่านี้ช่วยในการแก้ปัญหา URL newurl = URL ใหม่ (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); ขอบคุณสำหรับคำตอบของคุณ
Praveen

2
สำหรับ URL - นำเข้า java.net.URL; ส่วนตัวคงสุดท้าย int int IO_BUFFER_SIZE = 4 * 1024; สิ่งสุดท้ายคืออะไร
Steve

12
ดูรหัสที่นี่: stackoverflow.com/questions/3118691/…
OneWorld

@SACPK คุณควรเขียนความคิดเห็นของคุณเป็นคำตอบเพื่อที่จะได้รับการโหวต
จิมวอลเลซ

คำตอบที่ถูกต้องสำหรับผม ,, โพสต์เป็นคำตอบ :)
Omnia Mm

71

ฉันเขียนชั้นเรียนเพื่อจัดการสิ่งนี้เนื่องจากดูเหมือนว่าจะเป็นความต้องการที่เกิดขึ้นประจำในโครงการต่าง ๆ ของฉัน:

https://github.com/koush/UrlImageViewHelper

UrlImageViewHelper จะเติม ImageView ด้วยรูปภาพที่พบได้ใน URL

ตัวอย่างจะทำการค้นหารูปภาพของ Google และโหลด / แสดงผลลัพธ์แบบอะซิงโครนัส

UrlImageViewHelper จะดาวน์โหลดบันทึกและแคชรูปภาพทั้งหมดโดยอัตโนมัติที่เรียกว่า BitmapDrawables URL ซ้ำจะไม่ถูกโหลดในหน่วยความจำสองครั้ง หน่วยความจำบิตแมปได้รับการจัดการโดยใช้ตารางแฮชอ้างอิงอ่อนดังนั้นทันทีที่คุณไม่ใช้รูปภาพอีกต่อไปรูปภาพจะถูกรวบรวมโดยอัตโนมัติ


ใบอนุญาตเกี่ยวกับเรื่องนี้คืออะไร?
Ehtesh Choudhury

@Shurane - Apache ฉันจะบันทึกในภายหลัง
koush

1
ดูเหมือนว่าเราต้องใช้หนึ่งนี้แทนgithub.com/koush/ionเป็น UrlImageViewHelper ได้เลิกตามที่แสดงบนหน้าโครงการ GitHub ได้ที่github.com/koush/UrlImageViewHelper
Svetoslav Marinov

69

อย่างไรก็ตามมีคนถามความคิดเห็นของฉันเพื่อโพสต์เป็นคำตอบ ฉันกำลังโพสต์

URL newurl = new URL(photo_url_str); 
mIcon_val = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
profile_photo.setImageBitmap(mIcon_val);

นี่มันสั้นและยอดเยี่ยมขอบคุณ
Nactus

18
mm .. สิ่งนี้ไม่สามารถทำได้จากเธรด UI
Guy

2
สำหรับผู้ที่มีปัญหากับ "การยกเว้น URL ที่มีรูปแบบไม่ถูกต้อง" ให้ล้อมรอบบรรทัดด้านบนด้วยการลอง / จับ stackoverflow.com/a/24418607/2093088
Riot Goes Woof

1
สิ่งนี้ควรทำโดยใช้ AsyncTask ตามที่อธิบายไว้ข้างต้น
B-GangsteR

63

คำตอบที่ได้รับการยอมรับข้างต้นนั้นยอดเยี่ยมถ้าคุณกำลังโหลดรูปภาพโดยคลิกปุ่ม แต่ถ้าคุณทำในกิจกรรมใหม่มันจะหยุดค้าง UI เป็นเวลาหนึ่งหรือสองวินาที เมื่อมองไปรอบ ๆ ฉันพบว่า asynctask ง่าย ๆ กำจัดปัญหานี้

ในการใช้ asynctask ให้เพิ่มคลาสนี้ที่ท้ายกิจกรรมของคุณ:

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }    
}

และโทรจากวิธี onCreate () ของคุณโดยใช้:

new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
        .execute(MY_URL_STRING);

ผลที่ได้คือกิจกรรมที่โหลดอย่างรวดเร็วและมุมมองภาพที่แสดงแยกเป็นวินาทีในภายหลังขึ้นอยู่กับความเร็วเครือข่ายของผู้ใช้


นี่มันเร็วและกะทัดรัด ได้พบกับความต้องการของฉันเป็นอย่างดี! ขอบคุณ!
Mark Murphy

จากการลงเวลาของฉันสิ่งนี้ใช้ได้กับฉัน!
Carpk

25

คุณสามารถใช้มุมมอง LoadingImageView นี้เพื่อโหลดรูปภาพจาก url:

http://blog.blundellapps.com/imageview-with-loading-spinner/

เมื่อคุณเพิ่มไฟล์คลาสจากลิงค์นั้นคุณสามารถยกตัวอย่างมุมมองภาพ URL:

ใน xml:

<com.blundell.tut.LoaderImageView
  android:id="@+id/loaderImageView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  image="http://developer.android.com/images/dialog_buttons.png"
 />

ในรหัส:

final LoaderImageView image = new LoaderImageView(this, "http://developer.android.com/images/dialog_buttons.png");

และอัปเดตโดยใช้:

image.setImageDrawable("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");

ตัวอย่างที่ดี แต่ฉันไม่เชื่อว่านี่เป็นหัวข้อที่ปลอดภัย ฉันพยายามที่จะใช้มันใน Async onPostExecute แต่บางครั้ง onPostExecute สามารถจบได้ก่อนที่จะได้รับการติดต่อกลับที่แสดงภาพเป็นศูนย์
Jimmy

สิ่งนี้จัดการเธรดของตัวเอง ดังนั้นทำไมไม่มี ASyncTask โทรกลับไปที่ UI เมื่อเสร็จแล้วด้วย url ที่คุณต้องการ ด้วยวิธีนี้คุณไม่มีเธรดที่วางไข่
Blundell

10
public class LoadWebImg extends Activity {

String image_URL=
 "http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png";

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       ImageView bmImage = (ImageView)findViewById(R.id.image);
    BitmapFactory.Options bmOptions;
    bmOptions = new BitmapFactory.Options();
    bmOptions.inSampleSize = 1;
    Bitmap bm = LoadImage(image_URL, bmOptions);
    bmImage.setImageBitmap(bm);
   }

   private Bitmap LoadImage(String URL, BitmapFactory.Options options)
   {       
    Bitmap bitmap = null;
    InputStream in = null;       
       try {
           in = OpenHttpConnection(URL);
           bitmap = BitmapFactory.decodeStream(in, null, options);
           in.close();
       } catch (IOException e1) {
       }
       return bitmap;               
   }

private InputStream OpenHttpConnection(String strURL) throws IOException{
 InputStream inputStream = null;
 URL url = new URL(strURL);
 URLConnection conn = url.openConnection();

 try{
  HttpURLConnection httpConn = (HttpURLConnection)conn;
  httpConn.setRequestMethod("GET");
  httpConn.connect();

  if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
   inputStream = httpConn.getInputStream();
  }
 }
 catch (Exception ex)
 {
 }
 return inputStream;
}
}

ขอบคุณมากตัวอย่างที่สมบูรณ์แบบที่ฉันกำลังมองหา ................ แต่ภายใต้หัวข้อที่ไม่ถูกต้องสิ่งนี้ควรอยู่ที่นี่ ==> วิธีตั้งค่ารูปภาพของ imageView จากสตริง ?
VenomVendor

10

สวัสดีฉันมีรหัสที่ง่ายที่สุดลองนี่

    public class ImageFromUrlExample extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);  
            ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
            Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png");
            imgView.setImageDrawable(drawable);

    }

    private Drawable LoadImageFromWebOperations(String url)
    {
          try{
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
      }catch (Exception e) {
        System.out.println("Exc="+e);
        return null;
      }
    }
   }

main.xml

  <LinearLayout 
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
   <ImageView 
       android:id="@+id/ImageView01"
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/>

ลองนี้


10

ห้องสมุดที่ทันสมัยที่สุดสำหรับงานในความคิดของฉันคือPicasso by Square มันช่วยให้การโหลดภาพไปยัง ImageView โดย URL ด้วยหนึ่งซับ:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

9

ฉันเพิ่งพบเธรดที่นี่เมื่อเร็ว ๆ นี้เนื่องจากฉันต้องทำสิ่งที่คล้ายกันสำหรับลิสต์วิวด้วยรูปภาพ แต่หลักการนั้นง่ายมากคุณสามารถอ่านในคลาสตัวอย่างแรกที่แสดงที่นั่น (โดย jleedev) คุณได้รับกระแสข้อมูลเข้าของรูปภาพ (จากเว็บ)

private InputStream fetch(String urlString) throws MalformedURLException, IOException {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(urlString);
    HttpResponse response = httpClient.execute(request);
    return response.getEntity().getContent();
}

จากนั้นคุณเก็บรูปภาพเป็น Drawable และคุณสามารถส่งไปยัง ImageView (ผ่าน setImageDrawable) อีกครั้งจากตัวอย่างโค้ดด้านบนลองดูที่หัวข้อทั้งหมด

InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");

ฉันไม่มี DefaultHttpClient ในโครงการของฉัน
Stepan Yakovenko

8

ข้อมูลที่ดีมากมายที่นี่ ... ฉันเพิ่งค้นพบชั้นเรียนที่เรียกว่า SmartImageView ซึ่งดูเหมือนว่าจะทำงานได้ดีจนถึงปัจจุบัน ง่ายมากที่จะรวมและใช้งาน

http://loopj.com/android-smart-image-view/

https://github.com/loopj/android-smart-image-view

อัปเดต : ฉันลงเอยด้วยการเขียนโพสต์บล็อกเกี่ยวกับเรื่องนี้ดังนั้นตรวจสอบเพื่อขอความช่วยเหลือในการใช้ SmartImageView

ปรับปรุงครั้งที่ 2 : ตอนนี้ฉันใช้ Picasso เสมอ (ดูด้านบน) และแนะนำเป็นอย่างยิ่ง :)


7

นี่คือการตอบกลับล่าช้าตามที่แนะนำข้างต้นAsyncTaskจะและหลังจาก googling บิตฉันพบวิธีหนึ่งเพิ่มเติมสำหรับปัญหานี้

Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");

imageView.setImageDrawable(drawable);

นี่คือฟังก์ชั่นที่สมบูรณ์:

public void loadMapPreview () {
    //start a background thread for networking
    new Thread(new Runnable() {
        public void run(){
            try {
                //download the drawable
                final Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
                //edit the view in the UI thread
                imageView.post(new Runnable() {
                    public void run() {
                        imageView.setImageDrawable(drawable);
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

อย่าลืมเพิ่มสิทธิ์ต่อไปนี้ในAndroidManifest.xmlการเข้าถึงอินเทอร์เน็ต

<uses-permission android:name="android.permission.INTERNET" />

ฉันลองตัวเองและฉันยังไม่ประสบปัญหาใด ๆ


นี่เป็นสิ่งที่ดีมากสำหรับการใช้ความเรียบง่าย! เพียงจำไว้ว่าต้องมีการเรียกใช้เป็นพิเศษThreadเนื่องจากเธรด UI ไม่อนุญาตสำหรับการดำเนินการเครือข่าย
creativecreatorormaybenot


5

สิ่งนี้จะช่วยคุณ ...

กำหนด imageview และโหลดภาพลงไป

Imageview i = (ImageView) vv.findViewById(R.id.img_country);
i.setImageBitmap(DownloadFullFromUrl(url));

จากนั้นกำหนดวิธีการนี้:

    public Bitmap DownloadFullFromUrl(String imageFullURL) {
    Bitmap bm = null;
    try {
        URL url = new URL(imageFullURL);
        URLConnection ucon = url.openConnection();
        InputStream is = ucon.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is);
        ByteArrayBuffer baf = new ByteArrayBuffer(50);
        int current = 0;
        while ((current = bis.read()) != -1) {
            baf.append((byte) current);
        }
        bm = BitmapFactory.decodeByteArray(baf.toByteArray(), 0,
                baf.toByteArray().length);
    } catch (IOException e) {
        Log.d("ImageManager", "Error: " + e);
    }
    return bm;
}

4
    String img_url= //url of the image
    URL url=new URL(img_url);
    Bitmap bmp; 
    bmp=BitmapFactory.decodeStream(url.openConnection().getInputStream());
    ImageView iv=(ImageView)findviewById(R.id.imageview);
    iv.setImageBitmap(bmp);

4

เวอร์ชันที่มีการจัดการข้อยกเว้นและงาน async:

AsyncTask<URL, Void, Boolean> asyncTask = new AsyncTask<URL, Void, Boolean>() {
    public Bitmap mIcon_val;
    public IOException error;

    @Override
    protected Boolean doInBackground(URL... params) {
        try {
            mIcon_val = BitmapFactory.decodeStream(params[0].openConnection().getInputStream());
        } catch (IOException e) {
            this.error = e;
            return false;
        }
        return true;
    }

    @Override
    protected void onPostExecute(Boolean success) {
        super.onPostExecute(success);
        if (success) {
            image.setImageBitmap(mIcon_val);
        } else {
            image.setImageBitmap(defaultImage);
        }
    }
};
try {
    URL url = new URL(url);
    asyncTask.execute(url);
} catch (MalformedURLException e) {
    e.printStackTrace();
}

3
    private Bitmap getImageBitmap(String url) {
        Bitmap bm = null;
        try {
            URL aURL = new URL(url);
            URLConnection conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();
       } catch (IOException e) {
           Log.e(TAG, "Error getting bitmap", e);
       }
       return bm;
    } 


3

รหัสนี้ได้รับการทดสอบว่าใช้งานได้สมบูรณ์

URL req = new URL(
"http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png"
);
Bitmap mIcon_val = BitmapFactory.decodeStream(req.openConnection()
                  .getInputStream());

3

ทำงานกับ imageView ในคอนเทนเนอร์ใด ๆ เช่น listview grid view, เค้าโครงปกติ

 private class LoadImagefromUrl extends AsyncTask< Object, Void, Bitmap > {
        ImageView ivPreview = null;

        @Override
        protected Bitmap doInBackground( Object... params ) {
            this.ivPreview = (ImageView) params[0];
            String url = (String) params[1];
            System.out.println(url);
            return loadBitmap( url );
        }

        @Override
        protected void onPostExecute( Bitmap result ) {
            super.onPostExecute( result );
            ivPreview.setImageBitmap( result );
        }
    }

    public Bitmap loadBitmap( String url ) {
        URL newurl = null;
        Bitmap bitmap = null;
        try {
            newurl = new URL( url );
            bitmap = BitmapFactory.decodeStream( newurl.openConnection( ).getInputStream( ) );
        } catch ( MalformedURLException e ) {
            e.printStackTrace( );
        } catch ( IOException e ) {

            e.printStackTrace( );
        }
        return bitmap;
    }
/** Usage **/
  new LoadImagefromUrl( ).execute( imageView, url );

+1 ขอบคุณสำหรับโซลูชันที่สมบูรณ์และใช้งานง่าย
PeteH

3

ลองใช้วิธีนี้หวังว่าจะช่วยให้คุณแก้ปัญหาได้

ที่นี่ฉันอธิบายเกี่ยวกับวิธีการใช้ห้องสมุดภายนอก "AndroidQuery" สำหรับการโหลดภาพจาก url / เซิร์ฟเวอร์ในลักษณะ asyncTask ด้วยแคชภาพที่โหลดไปยังไฟล์อุปกรณ์หรือพื้นที่แคช

  • ดาวน์โหลดไลบรารี "AndroidQuery" จากที่นี่
  • คัดลอก / วาง jar นี้ไปยังโฟลเดอร์ lib โครงการและเพิ่มไลบรารีนี้ไปยัง project build-path
  • ตอนนี้ฉันแสดงการสาธิตวิธีใช้งาน

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center">

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/imageFromUrl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"/>
            <ProgressBar
                android:id="@+id/pbrLoadImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"/>

        </FrameLayout>
    </LinearLayout>

MainActivity.java

public class MainActivity extends Activity {

private AQuery aQuery;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    aQuery = new AQuery(this);
    aQuery.id(R.id.imageFromUrl).progress(R.id.pbrLoadImage).image("http://itechthereforeiam.com/wp-content/uploads/2013/11/android-gone-packing.jpg",true,true);
 }
}

Note : Here I just implemented common method to load image from url/server but you can use various types of method which can be provided by "AndroidQuery"to load your image easily.

3

Android Query สามารถจัดการสิ่งนั้นให้คุณและอีกมากมาย (เช่นแคชและความคืบหน้าในการโหลด)

ลองดูที่นี่นี่

ฉันคิดว่าเป็นวิธีที่ดีที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.