標籤:
1.布局xml檔案
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:onClick="download"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="點擊迴圈載入網片" />
<ImageView
android:id="@+id/iv"
android:layout_below="@id/btn"
android:layout_height="match_parent"
android:layout_width="match_parent"
/>
</RelativeLayout>
2.最佳化工具類ImageCach.javapackage com.example.day15_ex_loadimage; import java.util.HashMap; import android.graphics.Bitmap;/** * 圖片下載儲存最佳化工具類 * @author Administrator * */public class ImageCach { //儲存url 和 圖片解析流 Bitmap對象 public static HashMap<String,Bitmap>map=new HashMap<String, Bitmap>(); //擷取Bitmap對象 public static Bitmap getBitmap(String urlPath){ return ImageCach.map.get(urlPath); } //存放url Bitmap public void put(String urlPath,Bitmap bm){ ImageCach.map.put(urlPath, bm); } }3.連網擷取圖片類 HttpUtils.javapackage com.example.day15_ex_loadimage; import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL; import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log; public class HttpUtils { public static Bitmap getBitmap(String urlPath){ Bitmap bm=null; bm=ImageCach.getBitmap(urlPath);//最佳化 防止重複下載 if(bm==null){ try { URL url=new URL(urlPath); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); InputStream in=conn.getInputStream(); bm=BitmapFactory.decodeStream(in); ImageCach.map.put(urlPath, bm); Log.e("img","img"); in.close(); conn.disconnect(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } return bm; }}4.實作類別 MainActivity.javapackage com.example.day15_ex_loadimage; import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.LoaderManager;import android.app.LoaderManager.LoaderCallbacks;import android.content.AsyncTaskLoader;import android.content.Context;import android.content.Loader;import android.graphics.Bitmap;import android.view.Menu;import android.view.View;import android.widget.ImageView; @SuppressLint("NewApi")public class MainActivity extends Activity implements LoaderCallbacks<Bitmap>{ static int i=0;//控製圖片url路徑 ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控制項 iv=(ImageView) findViewById(R.id.iv); } public void download(View view){ LoaderManager loader=getLoaderManager(); loader.restartLoader(0,null,this); } @Override public Loader<Bitmap> onCreateLoader(int id, Bundle args) { MyLoader loader=new MyLoader(this);//建立loader對象 return loader; } @Override public void onLoadFinished(Loader<Bitmap> arg0, Bitmap arg1) { iv.setImageBitmap(arg1);//設定圖片在ImageView中顯示 } @Override public void onLoaderReset(Loader<Bitmap> arg0) { // TODO Auto-generated method stub } private static class MyLoader extends AsyncTaskLoader<Bitmap>{ public MyLoader(Context context) { super(context); // TODO Auto-generated constructor stub } @Override public Bitmap loadInBackground() { //只能載入4張圖片 1-4.jpg Bitmap bm=HttpUtils.getBitmap("http://www.ytmfdw.com/image/img"+(++i%4+1)+".jpg"); return bm; } @Override protected void onStartLoading() { // TODO Auto-generated method stub super.onStartLoading(); forceLoad(); } }}
實現LoaderCallbacks介面動態迴圈載入網片並展示在手機螢幕上 ...