这里用到了GridView,九宫格,fileAction主要是展示相册下面的文件
package com.example.testpro;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.example.entity.Constant;
import com.example.testpro.PictureAction.ItemClickListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
public class FileActivite extends Activity{
private static String imgPath ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pict);
imgPath = getSDPath();
List<String> files = readFileList();
GridView gridview = (GridView) findViewById(R.id.gridview);
//生成动态数组,并且转入数据
List<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for(String path : files)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.file);//添加图像资源的ID
map.put("ItemText", path);//按序号做ItemText
lstImageItem.add(map);
}
//生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
SimpleAdapter saImageItems = new SimpleAdapter(this, //没什么解释
lstImageItem,//数据来源
R.layout.night_item,//night_item的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemText});
//添加并且显示
gridview.setAdapter(saImageItems);
//添加消息处理
gridview.setOnItemClickListener(new ItemClickListener());
}
//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
class ItemClickListener implements OnItemClickListener
{
public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened
View arg1,//The view within the AdapterView that was clicked
int arg2,//The position of the view in the adapter
long arg3//The row id of the item that was clicked
) {
//在本例中arg2=arg3
HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);
// 显示所选Item的ItemText
// setTitle((String)item.get("ItemText"));
loginSuccess((String)item.get("ItemText"));
}
}
/**
* 登录成功后跳转的页面
*/
private void loginSuccess(String path) {
Intent intent = new Intent();
intent.setClass(FileActivite.this, PictureAction.class);
Bundle bd = new Bundle();
bd.putString("name", path);
intent.putExtras(bd);
startActivity(intent);
finish();
}
/**
* 获取SD卡中的所有图片路径
* @return
*/
private List<String> readFileList(){
List<String> fileList = new ArrayList<String>();
File fileDir = new File(imgPath+"/bwgc/capture");
File[] files = fileDir.listFiles();
if(files!=null){
for(File file:files){
// if(file.isFile()){
String fileName = file.getName();
fileList.add(fileName);
// }
}
}
return fileList;
}
public static String getSDPath() {
boolean hasSDCard = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
if (hasSDCard) {
return Environment.getExternalStorageDirectory().toString();
} else
return Environment.getDownloadCacheDirectory().toString();
}
}
PictureAction.java 类主要是对改文件下的相册进行整体的展示
package com.example.testpro;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.example.entity.Constant;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.SimpleAdapter;
public class PictureAction extends Activity{
private static String imgPath ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pict);
Intent intent = getIntent();
Bundle bd = intent.getExtras();
if(bd!=null){
String newPath = bd.get("name").toString();
imgPath = getSDPath()+"/bwgc/capture/"+newPath;
}
Constant.paths = readFileList();
GridView gridview = (GridView) findViewById(R.id.gridview);
//生成动态数组,并且转入数据
List<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for(String path : Constant.paths)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", path);//添加图像资源的ID
map.put("ItemText", changeName(path));//按序号做ItemText
lstImageItem.add(map);
}
//生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
SimpleAdapter saImageItems = new SimpleAdapter(this, //没什么解释
lstImageItem,//数据来源
R.layout.night_item,//night_item的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemText});
//添加并且显示
gridview.setAdapter(saImageItems);
//添加消息处理
gridview.setOnItemClickListener(new ItemClickListener());
}
//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
class ItemClickListener implements OnItemClickListener
{
public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened
View arg1,//The view within the AdapterView that was clicked
int arg2,//The position of the view in the adapter
long arg3//The row id of the item that was clicked
) {
//在本例中arg2=arg3
HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);
// 显示所选Item的ItemText
// setTitle((String)item.get("ItemText"));
loginSuccess((String)item.get("ItemImage"));
}
}
/**
* 登录成功后跳转的页面
*/
private void loginSuccess(String path) {
Intent intent = new Intent();
intent.setClass(PictureAction.this, PictureViewAct.class);
Bundle bd = new Bundle();
bd.putString("photePath", path);
intent.putExtras(bd);
startActivity(intent);
finish();
}
/**
* 获取SD卡中的所有图片路径
* @return
*/
private List<String> readFileList(){
List<String> fileList = new ArrayList<String>();
File fileDir = new File(imgPath);
File[] files = fileDir.listFiles();
if(files!=null){
for(File file:files){
String fileName = file.getName();
String temp = fileName.substring(fileName.lastIndexOf(".") + 1,
fileName.length());
if (fileName.lastIndexOf(".") > 0 && (temp.equals("jpg")||temp.equals("png"))){
fileList.add(file.getPath());
}
}
}
return fileList;
}
public static String getSDPath() {
boolean hasSDCard = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
if (hasSDCard) {
return Environment.getExternalStorageDirectory().toString();
} else
return Environment.getDownloadCacheDirectory().toString();
}
private String changeName(String path){
if(path.contains("/")){
return path.substring(path.lastIndexOf("/")+1, path.length());
}
return path;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent();
intent.setClass(PictureAction.this, FileActivite.class);
startActivity(intent);
finish();
}
return super.onKeyDown(keyCode, event);
}
}
点击图片,对单个图片进行展示,这里用到了Gallery
package com.example.testpro;
import com.example.adapter.ImageAdapter;
import com.example.entity.Constant;
import com.example.util.Util;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;
/**
* 图片浏览
* @author aokunsang
* @Date 2011-12-6
*/
public class PictureViewAct extends Activity implements ViewFactory{
// private static String imgPath = Environment.getExternalStorageDirectory().getPath() + "/"+"tempPic";
// private static String imgPath = Environment.getExternalStorageDirectory().getPath() + "/"+"image" ;
private static String imgPath1;
private boolean isFirst = true;
private ImageSwitcher imageSwitcher;
private Gallery gallery;
private int downX, upX;
private String newFilePath;
private int pathIndex;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rsu);
pathIndex = fixPathIndex(newFilePath);
imageSwitcher = (ImageSwitcher)findViewById(R.id.switcher);
imageSwitcher.setFactory(this);
textView = (TextView) findViewById(R.id.switcher_name);
textView.setText(Util.changeName(Constant.paths.get(pathIndex)));
/*
* 淡入淡出效果
*/
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
imageSwitcher.setOnTouchListener(touchListener);
gallery = (Gallery)findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter( Constant.paths,this));
gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long when) {
if (newFilePath != null) {
newFilePath = Constant.paths.get(position);
}else{
Intent intent = getIntent();
Bundle bd = intent.getExtras();
newFilePath = bd.get("photePath").toString();
}
Bitmap bm = BitmapFactory.decodeFile(newFilePath);
BitmapDrawable bd = new BitmapDrawable(bm);
imageSwitcher.setImageDrawable(bd);
textView.setText(Util.changeName(newFilePath));
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
gallery.setSelection(pathIndex, true);
}
private int fixPathIndex(String newFilePath2) {
Intent intent = getIntent();
Bundle bd = intent.getExtras();
String newPath = bd.get("photePath").toString();
for(int i=0;i<Constant.paths.size();i++){
if(Constant.paths.get(i).equals(newPath)){
return i;
}
}
return 0;
}
/**
* 注册一个触摸事件
*/
private OnTouchListener touchListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
downX=(int) event.getX();//取得按下时的坐标
return true;
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
upX=(int) event.getX();//取得松开时的坐标
int index=pathIndex;
if(upX-downX>100)//从左拖到右,即看前一张
{
//如果是第一,则去到尾部
if(gallery.getSelectedItemPosition()==0)
index=gallery.getCount()-1;
else
index=gallery.getSelectedItemPosition()-1;
}
else if(downX-upX>100)//从右拖到左,即看后一张
{
//如果是最后,则去到第一
if(gallery.getSelectedItemPosition()==(gallery.getCount()-1))
index=0;
else
index=gallery.getSelectedItemPosition()+1;
}
//改变gallery图片所选,自动触发ImageSwitcher的setOnItemSelectedListener
gallery.setSelection(index, true);
textView.setText(Util.changeName(Constant.paths.get(index)));
return true;
}
return false;
}
};
public View makeView() {
ImageView imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(//自适应图片大小
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
return imageView;
}
public static String getSDPath() {
boolean hasSDCard = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
if (hasSDCard) {
return Environment.getExternalStorageDirectory().toString();
} else
return Environment.getDownloadCacheDirectory().toString();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent();
intent.setClass(PictureViewAct.this, PictureAction.class);
startActivity(intent);
finish();
}
return super.onKeyDown(keyCode, event);
}
}
图片的配置器
package com.example.adapter;
import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public class ImageAdapter extends BaseAdapter {
private List<String> photoList; // 图片地址list
private Context context;
public ImageAdapter(List<String> photoList, Context context) {
this.photoList = photoList;
this.context = context;
}
public void addImage(String imageUrl) {
photoList.add(imageUrl);
}
public int getCount() {
return photoList.size();
}
public Object getItem(int position) {
return photoList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView image = new ImageView(context);
Bitmap bm = BitmapFactory.decodeFile(photoList.get(position));
image.setImageBitmap(bm);
image.setScaleType(ImageView.ScaleType.FIT_START);
image.setLayoutParams(new Gallery.LayoutParams(300, 300));
return image;
}
}
常值类
package com.example.entity;
import java.util.ArrayList;
import java.util.List;
public class Constant {
public static List<String> paths = new ArrayList<String>();
}
可以到这里下载源代码,如果这个代码不行,我可以发给你
http://download.csdn.net/detail/u011715213/8242667