package com.wise.wawc; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.wise.data.Article; import com.wise.pubclas.Constant; import com.wise.pubclas.GetSystem; import com.wise.service.ImageAdapter; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Gallery; import android.widget.HorizontalScrollView; import android.widget.AdapterView.OnItemClickListener; public class ImageActivity extends Activity { private Gallery gallery = null; private HorizontalScrollView horizontalScroller; private Bitmap bitmap = null; private ImageAdapter adapter = null; private List<Bitmap> imageModel = new ArrayList<Bitmap>(); public static int screenHeight = 0; public static int screenWidth = 0; private Intent intent = null; private Article article = null; private MyHandler myHandler = null; private List<Map<String,String>> imageList = null; private MyThread mYThread = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.image_exalpoer); gallery = (Gallery) findViewById(R.id.gallery); gallery.setVerticalFadingEdgeEnabled(false); gallery.setHorizontalFadingEdgeEnabled(false); // 设置view在水平滚动时,水平边不淡出。 TODO adapter = new ImageAdapter(ImageActivity.this, imageModel); screenWidth = getWindow().getWindowManager().getDefaultDisplay().getWidth(); screenHeight = getWindow().getWindowManager().getDefaultDisplay().getHeight(); gallery.setAdapter(adapter); mYThread = new MyThread(); gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { ImageActivity.this.finish(); } }); myHandler = new MyHandler(); intent = getIntent(); article = (Article) intent.getSerializableExtra("article"); imageList = article.getImageList(); mYThread.start(); } class MyThread extends Thread{ public void run() { for(int j = 0 ; j < imageList.size() ; j ++){ Map<String,String> imageMap = imageList.get(j); String str = imageMap.get("big_pic"); Bitmap bitmap = imageIsExist(Constant.VehiclePath + str.substring(str.lastIndexOf("/")),str); if(bitmap != null){ imageModel.add(bitmap); } // if(j == (imageList.size() - 1)){ // myHandler.sendMessage(new Message()); // } // Log.e("加载"+ (j+1)+"张",imageModel.size() + ""); } super.run(); } } private Bitmap imageIsExist(String path,final String loadUrl) { File file = new File(path); if(file.exists()){ bitmap = BitmapFactory.decodeFile(path); Log.e("本地存在","本地存在"); return bitmap; }else{ Log.e("服务器获取","服务器获取"); new Thread(new Runnable() { public void run() { bitmap = GetSystem.getBitmapFromURL(loadUrl); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File imagePath = new File(Constant.VehiclePath); if(!imagePath.exists()){ imagePath.mkdir(); } if(bitmap != null){ createImage(Constant.VehiclePath + loadUrl.substring(loadUrl.lastIndexOf("/")),bitmap); } } } }).start(); } return null; } public void createImage(String fileName,Bitmap bitmap){ FileOutputStream b = null; try { b = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { b.flush(); b.close(); } catch (IOException e) { e.printStackTrace(); } } } class MyHandler extends Handler{ public void handleMessage(Message msg) { super.handleMessage(msg); Log.e("刷新...","刷新"); adapter.refreshDatas(imageModel); } } }