完整代码:3D相册(Gallery 3D + 倒影效果) GalleryFlow

 

 

部分代码:

 
  
  1. package com.p_w_picpath.galleryFlow;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.GestureDetector;  
  6. import android.view.GestureDetector.SimpleOnGestureListener;  
  7. import android.view.MotionEvent;  
  8.  
  9. public class GalleryFlowActivity extends Activity {  
  10.     private GalleryFlow galleryFlow;  
  11.     private ImageAdapter adapter;  
  12.     private GestureDetector detector;  
  13.  
  14.     /** Called when the activity is first created. */ 
  15.     @Override 
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.layout_gallery);  
  19.  
  20.         detector = new GestureDetector(new MyGestureListener());  
  21.         int[] p_w_picpaths = { R.drawable.p01, R.drawable.p02, R.drawable.p03,  
  22.                 R.drawable.p04, R.drawable.p05 };  
  23.         adapter = new ImageAdapter(this, p_w_picpaths);  
  24.         adapter.createReflectedImages();  
  25.  
  26.         galleryFlow = (GalleryFlow) findViewById(R.id.gallery_flow);  
  27.         galleryFlow.setAdapter(adapter);  
  28.         galleryFlow.setSelection(1);  
  29.     }  
  30.  
  31.     private class MyGestureListener extends SimpleOnGestureListener {  
  32.  
  33.         @Override 
  34.         public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  35.                 float velocityY) {  
  36.             // TODO Auto-generated method stub  
  37.             int currentPosition = galleryFlow.getSelectedItemPosition();  
  38.             if (e1.getX() - e2.getX() > 50 && Math.abs(velocityX) > 100) {  
  39.                 if (currentPosition + 1 == adapter.getCount()) {  
  40.                     galleryFlow.setSelection(0);  
  41.                 } else {  
  42.                     galleryFlow.setSelection(currentPosition + 1);  
  43.                 }  
  44.             } else if (e2.getX() - e1.getX() > 50 && Math.abs(velocityX) > 100) {  
  45.                 if (currentPosition - 1 < 0) {  
  46.                     galleryFlow.setSelection(adapter.getCount() - 1);  
  47.                 } else {  
  48.                     galleryFlow.setSelection(currentPosition - 1);  
  49.                 }  
  50.             }  
  51.             return super.onFling(e1, e2, velocityX, velocityY);  
  52.         }  
  53.  
  54.     }  
  55.  
  56.     @Override 
  57.     public boolean onTouchEvent(MotionEvent event) {  
  58.         // TODO Auto-generated method stub  
  59.         return detector.onTouchEvent(event);  
  60.     }