3. fresco adalah sistem yang kuat untuk menampilkan gambar di aplikasi Android. Frco menangani pemuatan dan tampilan gambar, jadi Anda tidak perlu melakukannya.
Jadi jika url adalah localhost, berarti gambar berada dalam sistem database server lokal seperti xampp, masih bisa mendapatkan gambar dari url =.
blackjack
2
@blackjack - localhost dari aplikasi adalah smartphone itu sendiri. Untuk mengakses sistem pengembangan Anda, telepon pintar dan sistem pengembangan Anda harus berada di jaringan yang sama dan Anda harus menggunakan alamat IP sistem pengembangan Anda di jaringan itu.
Ridcully
1
apakah mungkin menggunakan picasso untuk memuat gambar pada tombol?
mahdi
1
@chiragkyada saya coba dengan kode ini Picasso.with (konteks) .load (url) .into (button_view); tapi itu menunjukkan kesalahan untuk: into (button_view)
mahdi
1
Saya pikir ini harus menjadi jawaban yang diterima
kamu benar. tetapi hanya 3 baris ini membantu untuk menyelesaikan masalah. URL newurl = URL baru (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); terima kasih atas balasan Anda.
Praveen
2
Untuk URL - impor java.net.URL; IO_BUFFER_SIZE int akhir statis pribadi = 4 * 1024; apa yang terakhir?
UrlImageViewHelper akan mengisi ImageView dengan gambar yang ditemukan di URL.
Sampel akan melakukan Pencarian Gambar Google dan memuat / menampilkan hasilnya secara tidak sinkron.
UrlImageViewHelper akan secara otomatis mengunduh, menyimpan, dan men-cache semua url gambar BitmapDrawables. URL duplikat tidak akan dimuat ke memori dua kali. Memori bitmap dikelola dengan menggunakan tabel hash referensi yang lemah, sehingga segera setelah gambar tidak lagi digunakan oleh Anda, itu akan menjadi sampah yang dikumpulkan secara otomatis.
mm .. ini tidak bisa dilakukan dari utas UI sekalipun.
Guy
2
Untuk orang-orang yang memiliki masalah dengan "Pengecualian URL Berubah", mengelilingi baris di atas dalam coba / tangkap. stackoverflow.com/a/24418607/2093088
Riot Goes Woof
1
Ini harus dilakukan dengan menggunakan AsyncTask seperti dijelaskan di atas
B-GangsteR
63
Jawaban yang diterima di atas sangat bagus jika Anda memuat gambar berdasarkan klik tombol, namun jika Anda melakukannya dalam aktivitas baru, itu membekukan UI untuk satu atau dua detik. Melihat sekeliling saya menemukan bahwa asynctask sederhana menghilangkan masalah ini.
Untuk menggunakan asynctask, tambahkan kelas ini di akhir aktivitas Anda:
Hasilnya adalah aktivitas yang dimuat dengan cepat dan tampilan gambar yang muncul sepersekian detik kemudian tergantung pada kecepatan jaringan pengguna.
Sampel yang bagus, tapi saya tidak percaya ini aman untuk thread. Saya mencoba menggunakannya dalam Async onPostExecute, namun onPostExecute kadang-kadang bisa berakhir sebelum callback diterima menghasilkan gambar nol.
Jimmy
Ini mengelola utasnya sendiri. Jadi mengapa tidak meminta ASyncTask Anda kembali ke UI setelah selesai, dengan url yang Anda inginkan. Dengan begitu Anda tidak memiliki utas pemijahan utas.
Perpustakaan modern terbaik untuk tugas seperti itu menurut saya adalah Picasso by Square. Memungkinkan memuat gambar ke ImageView oleh URL dengan satu-liner:
Saya baru-baru ini menemukan utas di sini , karena saya harus melakukan hal serupa untuk tampilan daftar dengan gambar, tetapi prinsipnya sederhana, karena Anda dapat membaca di kelas sampel pertama yang ditunjukkan di sana (oleh jleedev). Anda mendapatkan aliran input gambar (dari web)
Kemudian Anda menyimpan gambar sebagai Drawable dan Anda dapat meneruskannya ke ImageView (via setImageDrawable). Sekali lagi dari cuplikan kode atas lihat seluruh utas.
Saya tidak memiliki DefaultHttpClient di proyek saya.
Stepan Yakovenko
8
Banyak info bagus di sini ... Baru-baru ini saya menemukan kelas bernama SmartImageView yang tampaknya berfungsi sangat baik sejauh ini. Sangat mudah untuk digabungkan dan digunakan.
Ini adalah jawaban yang terlambat, seperti yang disarankan di atas AsyncTaskakan dan setelah googling sedikit saya menemukan satu cara lagi untuk masalah ini.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Inilah fungsi lengkapnya:
publicvoid loadMapPreview (){//start a background thread for networkingnewThread(newRunnable(){publicvoid run(){try{//download the drawablefinalDrawable drawable =Drawable.createFromStream((InputStream)new URL("url").getContent(),"src");//edit the view in the UI thread
imageView.post(newRunnable(){publicvoid run(){
imageView.setImageDrawable(drawable);}});}catch(IOException e){
e.printStackTrace();}}}).start();}
Jangan lupa untuk menambahkan izin berikut di Anda AndroidManifest.xmluntuk mengakses internet.
Ini sebenarnya sangat bagus untuk minimalis! Perlu diingat bahwa itu diperlukan untuk berjalan di tambahan Threadkarena utas UI tidak memungkinkan untuk operasi jaringan.
creativecreatorormaybenot
6
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside
Coba dengan cara ini, semoga ini akan membantu Anda untuk menyelesaikan masalah Anda.
Di sini saya menjelaskan tentang cara menggunakan perpustakaan eksternal "AndroidQuery" untuk memuat gambar dari url / server secara asyncTask dengan juga gambar yang dimuat ke cache file perangkat atau area cache.
publicclassMainActivityextendsActivity{privateAQuery aQuery;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aQuery =newAQuery(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.
Jawaban:
Dari pengembang Android :
Pastikan Anda memiliki izin berikut yang ditetapkan
AndroidManifest.xml
untuk mengakses internet.sumber
1. Picasso memungkinkan pemuatan gambar tanpa repot di aplikasi Anda — sering kali dalam satu baris kode!
Gunakan Gradle:
Hanya satu baris kode!
2. Glide Perpustakaan pemuatan dan penyimpanan gambar untuk Android yang berfokus pada pengguliran yang lancar
Gunakan Gradle:
// Untuk tampilan sederhana:
3. fresco adalah sistem yang kuat untuk menampilkan gambar di aplikasi Android. Frco menangani pemuatan dan tampilan gambar, jadi Anda tidak perlu melakukannya.
Memulai dengan Fresco
sumber
Anda harus mengunduh gambar terlebih dahulu
Kemudian gunakan Imageview.setImageBitmap untuk mengatur bitmap ke dalam ImageView
sumber
Saya menulis sebuah kelas untuk menangani hal ini, karena tampaknya menjadi kebutuhan berulang dalam berbagai proyek saya:
https://github.com/koush/UrlImageViewHelper
sumber
Pokoknya orang meminta komentar saya untuk mempostingnya sebagai jawaban. saya memposting
sumber
Jawaban yang diterima di atas sangat bagus jika Anda memuat gambar berdasarkan klik tombol, namun jika Anda melakukannya dalam aktivitas baru, itu membekukan UI untuk satu atau dua detik. Melihat sekeliling saya menemukan bahwa asynctask sederhana menghilangkan masalah ini.
Untuk menggunakan asynctask, tambahkan kelas ini di akhir aktivitas Anda:
Dan panggil dari metode onCreate () Anda menggunakan:
Hasilnya adalah aktivitas yang dimuat dengan cepat dan tampilan gambar yang muncul sepersekian detik kemudian tergantung pada kecepatan jaringan pengguna.
sumber
Anda juga bisa menggunakan tampilan LoadingImageView ini untuk memuat gambar dari url:
http://blog.blundellapps.com/imageview-with-loading-spinner/
Setelah Anda menambahkan file kelas dari tautan itu, Anda dapat membuat tampilan gambar url:
dalam xml:
Dalam kode:
Dan perbarui dengan menggunakan:
sumber
sumber
Hai Saya punya kode yang paling mudah coba ini
main.xml
coba ini
sumber
Perpustakaan modern terbaik untuk tugas seperti itu menurut saya adalah Picasso by Square. Memungkinkan memuat gambar ke ImageView oleh URL dengan satu-liner:
sumber
Saya baru-baru ini menemukan utas di sini , karena saya harus melakukan hal serupa untuk tampilan daftar dengan gambar, tetapi prinsipnya sederhana, karena Anda dapat membaca di kelas sampel pertama yang ditunjukkan di sana (oleh jleedev). Anda mendapatkan aliran input gambar (dari web)
Kemudian Anda menyimpan gambar sebagai Drawable dan Anda dapat meneruskannya ke ImageView (via setImageDrawable). Sekali lagi dari cuplikan kode atas lihat seluruh utas.
sumber
Banyak info bagus di sini ... Baru-baru ini saya menemukan kelas bernama SmartImageView yang tampaknya berfungsi sangat baik sejauh ini. Sangat mudah untuk digabungkan dan digunakan.
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
UPDATE : Saya akhirnya menulis posting blog tentang ini , jadi periksalah untuk bantuan menggunakan SmartImageView.
PEMBARUAN 2 : Sekarang saya selalu menggunakan Picasso untuk ini (lihat di atas) dan sangat merekomendasikannya. :)
sumber
Ini adalah jawaban yang terlambat, seperti yang disarankan di atas
AsyncTask
akan dan setelah googling sedikit saya menemukan satu cara lagi untuk masalah ini.Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Inilah fungsi lengkapnya:
Jangan lupa untuk menambahkan izin berikut di Anda
AndroidManifest.xml
untuk mengakses internet.<uses-permission android:name="android.permission.INTERNET" />
Saya mencoba ini sendiri dan saya belum menghadapi masalah apa pun.
sumber
Thread
karena utas UI tidak memungkinkan untuk operasi jaringan.sumber
Ini akan membantu Anda ...
Tetapkan tampilan gambar dan muat gambar ke dalamnya .....
Kemudian Tetapkan metode ini:
sumber
sumber
Versi dengan penanganan pengecualian dan tugas async:
sumber
sumber
Cara sederhana dan bersih untuk melakukan ini adalah dengan menggunakan perpustakaan open source Prime .
sumber
Kode ini diuji, benar-benar berfungsi.
sumber
Bekerja untuk imageView dalam wadah apa pun, seperti tampilan kisi listview, tata letak normal
sumber
Coba dengan cara ini, semoga ini akan membantu Anda untuk menyelesaikan masalah Anda.
Di sini saya menjelaskan tentang cara menggunakan perpustakaan eksternal "AndroidQuery" untuk memuat gambar dari url / server secara asyncTask dengan juga gambar yang dimuat ke cache file perangkat atau area cache.
activity_main.xml
MainActivity.java
sumber
Android Query dapat menanganinya untuk Anda dan banyak lagi (seperti cache dan proses pemuatan).
Lihatlah di sini .
Saya pikir adalah pendekatan terbaik.
sumber