Android 下载图片
为了学习AsyncTask,网络连接下载图片,我就随便参照教程写了一个例子.代码如下:MainActivity:
package com.einverne.testdownloadpic; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.widget.ImageView; public class MainActivity extends Activity { ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView)findViewById(R.id.imageView1); String url = "http://f.hiphotos.baidu.com/album/pic/item/aa64034f78f0f7366a7c4bdf0a55b319eac41369.jpg?psign=6a7c4bdf0a55b319ebc4b74543a98226cefc1e178b823751"; new setImageViewData().execute(url); } /** * * 异步加载图片 * */ public class setImageViewData extends AsyncTask{ @Override protected Bitmap doInBackground(String... params) { Log.d("EV_DEBUG", "setImageViewData doInBackground"); return getBitmap(params[0]); } @Override protected void onPostExecute(Bitmap bitmap) { Log.d("EV_DEBUG", "setImageViewData onPostExecute"); iv.setImageBitmap(bitmap); } @Override protected void onPreExecute() { Log.d("EV_DEBUG", "setImageViewData onPreExecute"); } } /** * get url and return Bitmap * @param url * @return Bitmap */ public Bitmap getBitmap(String url){ URL myFileurl = null; Bitmap bitmap = null; try { myFileurl = new URL(url); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } try { HttpURLConnection httpURLConnection = (HttpURLConnection) myFileurl.openConnection(); httpURLConnection.setDoInput(true); httpURLConnection.connect(); InputStream inputStream = httpURLConnection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bitmap; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
最后别忘了在Android权限中添加Internet权限.很重要的,不然会出错.
0 评论 :
发表评论