您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Android開發中怎么實現一個圖片下載功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
1.普通的下載方式
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:src="@drawable/icon" android:layout_width="wrap_content" android:id="@+id/imgPic" android:layout_gravity="center|center_vertical" android:layout_height="fill_parent"> </ImageView> </LinearLayout>
java文件
public class DownloadImage extends Activity { private ImageView imgPic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.download_image); imgPic = (ImageView) findViewById(R.id.imgPic); String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg"; loadRmoteImage(url); } /** * @param imgUrl * 遠程圖片文件的URL * * 下載遠程圖片 */ private void loadRmoteImage(String imgUrl) { URL fileURL = null; Bitmap bitmap = null; try { fileURL = new URL(imgUrl); } catch (MalformedURLException err) { err.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) fileURL .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); int length = (int) conn.getContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] buffer = new byte[512]; int readLen = 0; int destPos = 0; while ((readLen = is.read(buffer)) > 0) { System.arraycopy(buffer, 0, imgData, destPos, readLen); destPos += readLen; } bitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length); } } catch (IOException e) { e.printStackTrace(); } imgPic.setImageBitmap(bitmap); }
2.帶進度條的下載
有時候網絡差,或者是圖片太大,會出現黑屏的情況,用戶體驗比較差,那么增加一個進度條是提高用戶體驗的好方法
/** * @author xushilin xsl xushilin@kingtoneinfo.com * @version: 創建時間:2011-7-27 下午02:55:56 * 說 明: android中下載圖片 * 修改歷史: */ public class DownloadImage extends Activity { private ImageView imgPic; private ProgressBar progressBar; private int totalSize=0; private int size=0; private Handler mHandler; String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg"; private Bitmap bitmap=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.download_image); imgPic = (ImageView) findViewById(R.id.imgPic); progressBar = (ProgressBar) findViewById(R.id.progressBar); progressBar.setProgress(getProgressInt(progressBar.getMax())); mHandler = new Handler() { public void handleMessage(Message msg) { progressBar.setProgress(getProgressInt(progressBar.getMax())); if(bitmap!=null){ imgPic.setImageBitmap(bitmap); } } }; new Thread(){ public void run(){ loadRmoteImage(url); } }.start(); } /** * @param imgUrl * 遠程圖片文件的URL * * 下載遠程圖片 */ private void loadRmoteImage(String imgUrl) { URL fileURL = null; try { fileURL = new URL(imgUrl); } catch (MalformedURLException err) { err.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) fileURL .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); int length = (int) conn.getContentLength(); totalSize=length; if (length != -1) { byte[] imgData = new byte[length]; byte[] buffer = new byte[512]; int readLen = 0; int destPos = 0; while ((readLen = is.read(buffer)) > 0) { System.arraycopy(buffer, 0, imgData, destPos, readLen); destPos += readLen; size=destPos; mHandler.sendEmptyMessage(1); Thread.sleep(100); } bitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length); mHandler.sendEmptyMessage(1); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } private int getProgressInt(int max) { int result = (totalSize > 0) ? (int) (size * max * 1.0 / totalSize) : 0; return result; } }
以上就是Android開發中怎么實現一個圖片下載功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。