Android開發之載入圖片的方法_Android

來源:互聯網
上載者:User

本文執行個體講述了Android開發之載入圖片的方法。分享給大家供大家參考。具體分析如下:

載入網路上的圖片需要在manifest中配置訪問網路的許可權,如下:

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

如果不配置這個許可權的話,會報錯:unknown host exception。

package com.example.loadimgfromweb; import java.io.InputStream; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.widget.ImageView; public class MainActivity extends Activity {   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     ImageView v = (ImageView) findViewById(R.id.imageView1);     String url = "yun_qi_img/134970028_200x150.jpg";     new DownLoadImage(v).execute(url);   }   @Override   public boolean onCreateOptionsMenu(Menu menu) {     // Inflate the menu; this adds items to the action bar if it is present.     getMenuInflater().inflate(R.menu.activity_main, menu);     return true;   }   public class DownLoadImage extends AsyncTask<String, Void, Bitmap> {    ImageView imageView;     public DownLoadImage(ImageView imageView) {       this.imageView = imageView;     }     @Override     protected Bitmap doInBackground(String... urls) {       String url = urls[0];       Bitmap tmpBitmap = null;       try {         InputStream is = new java.net.URL(url).openStream();         tmpBitmap = BitmapFactory.decodeStream(is);       } catch (Exception e) {         e.printStackTrace();       }       return tmpBitmap;     }     @Override     protected void onPostExecute(Bitmap result) {       imageView.setImageBitmap(result);     }   } }
上面的例子中使用了AsyncTask來與前端使用者介面進行互動。避免載入時間過長,影響介面的互動性。

如果是載入本地圖片的話,直接來:

ImageView v = (ImageView) findViewById(R.id.imageView1);     v.setImageResource(R.drawable.apic); 

在使用AsyncTask載入圖片的時候可以順便把圖片儲存在本地:

@Override protected Bitmap doInBackground(String... urls) {   String url = urls[0];   Bitmap tmpBitmap = null;   try {  InputStream is = new java.net.URL(url).openStream();  URL u = new URL(url);  HttpURLConnection conn = (HttpURLConnection) u.openConnection(); Bitmap bitmap = BitmapFactory.decodeStream(is);  // 判斷是否有記憶卡  if (Environment.getExternalStorageState().equals(  Environment.MEDIA_MOUNTED)) {   // 儲存圖片到本地    File sdCardDir = Environment.getExternalStorageDirectory();   String fileName = "a.jpg";    String filePath = sdCardDir + "/" + fileName;    FileOutputStream fos = new FileOutputStream(filePath);    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);  }  // 關閉流  is.close();  conn.disconnect();  return bitmap;   } catch (Exception e) {  e.printStackTrace();   }   return tmpBitmap; } 

希望本文所述對大家的Android程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.