先直接上代码:

photoscan.xml

<?xml version="1.0" encoding="utf-8"?>  <RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent">          <ImageSwitcher           android:id="@+id/switcher"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          android:layout_gravity="center"        android:scaleType="matrix"    ></ImageSwitcher>           <Gallery           android:id="@+id/gallery"          android:layout_width="fill_parent"          android:background="#55000000"          android:layout_height="100dip"          android:layout_alignParentBottom="true"            android:layout_alignParentLeft="true"          android:gravity="center_vertical"          android:spacing="8dip"     />   </RelativeLayout>  


PictureViewAct.java

package com.liang.picdemo;import java.io.File;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.os.Environment;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.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 imgPath = Environment.getExternalStorageDirectory().getPath() ;            private ImageSwitcher imageSwitcher;        private Gallery gallery;      private List<String> photoList;      private int downX,upX;      private String newFilePath;            @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.photoscan);                   photoList = readFileList();          imageSwitcher = (ImageSwitcher)findViewById(R.id.switcher);          imageSwitcher.setFactory(this);          /*          * 淡入淡出效果          */          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( photoList,this));          gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {              public void onItemSelected(AdapterView<?> arg0, View arg1,                      int position, long when) {                  newFilePath = photoList.get(position);                  Bitmap bm = BitmapFactory.decodeFile(photoList.get(position));                  BitmapDrawable bd = new BitmapDrawable(bm);                  imageSwitcher.setImageDrawable(bd);              }              public void onNothingSelected(AdapterView<?> arg0) {}          });      }            /**      * 注册一个触摸事件      */      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=0;                        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);                        return true;                    }                    return false;                }      };      /**      * 获取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();                  if (fileName.lastIndexOf(".") > 0                            && fileName.substring(fileName.lastIndexOf(".") + 1,                            fileName.length()).equals("jpg")){                      fileList.add(file.getPath());                  }              }          }          return fileList;      }        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;      }          }  


图片适配器:

ImageAdapter.java

package com.liang.picdemo;import java.util.List;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;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; // 图片地址listprivate 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.CENTER_CROP);image.setLayoutParams(new Gallery.LayoutParams(100, 100));return image;}}

更多相关文章

  1. ImageView 设置图片
  2. 阅读《Android 从入门到精通》(24)——切换图片
  3. android 删除SD卡或者手机的缓存图片和目录
  4. android 视频图片混合轮播实现
  5. android用ImageView显示网络图片
  6. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出
  7. android 运用AsyncTask 获取图片并显示
  8. android中网络图片的显示

随机推荐

  1. 独家教程:用PHP编写Android应用程序
  2. android环境搭建步骤
  3. [PHP]通过 PHP for Android 利用PHP编写A
  4. Android下 使用百度地图sdk
  5. Unity3D研究院之Android全自动打包生成ap
  6. Android分享笔记(5) Android(安卓)与 JS
  7. android 与JS之间的交互
  8. Android跨进程通信之Proxy与Stub(三)
  9. Android扫描条形码实现
  10. Android 解决自定义 CheckBox 样式时的背