2011-10-24 19 views
1

私は、GridViewのアクティビティに、最大100個のイメージサムネイルをsdcardの場所から表示する単一のGridViewから構成しました。グリッド内のサムネイルのいずれかがタッチされたときに呼び出される別のアクティビティを作成しています。この他のアクティビティでは、選択したイメージをフルスクリーンで表示する必要があります(イメージuriを新しいアクティビティに渡すことでこれを行うことができます)。しかし、グリッドビューのアクティビティに戻り、フルスクリーン表示用に別の画像を選択するのではなく、選択した画像の全画面表示から左右にスワイプして次の画像に移動したいと考えています。GridViewから呼び出された全画面イメージブラウザ

スワイプジェスチャーを使用してフルスクリーンブラウジングを行うために、イメージをSDカードの場所から取得するこの画像ブラウザーのアクティビティーを達成するにはどうすればよいですか?

答えて

2

あなたは

  • プロジェクト内のlibとしてJARをインストールViewFlipper

    public class ImageViewTest extends Activity { 
    
        private static final int SWIPE_MIN_DISTANCE = 120; 
        private static final int SWIPE_MAX_OFF_PATH = 250; 
        private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
        private GestureDetector gestureDetector; 
        View.OnTouchListener gestureListener; 
    
        private Animation slideLeftIn; 
        private Animation slideLeftOut; 
        private Animation slideRightIn; 
        private Animation slideRightOut; 
        private ViewFlipper viewFlipper; 
    
        String message = "Initial Message"; 
        /** Called when the activity is first created. */ 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
    
         //Set up viewflipper 
         viewFlipper = new ViewFlipper(this);  
         ImageView i = new ImageView(this); 
         i.setImageResource(R.drawable.sample_1); 
         ImageView i2 = new ImageView(this); 
         i2.setImageResource(R.drawable.sample_2); 
         viewFlipper.addView(i); 
         viewFlipper.addView(i2); 
    
         //set up animations 
         slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); 
         slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); 
         slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); 
         slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 
    
         //put up a brownie as a starter 
         setContentView(viewFlipper); 
    
         gestureDetector = new GestureDetector(new MyGestureDetector()); 
        } 
    
        public class MyGestureDetector extends SimpleOnGestureListener { 
         @Override 
         public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
          try { 
           if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
            return false; 
           // right to left swipe 
           if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
            Log.v(LOGID,"right to left swipe detected"); 
            viewFlipper.setInAnimation(slideLeftIn); 
            viewFlipper.setOutAnimation(slideLeftOut); 
            viewFlipper.showNext(); 
            setContentView(viewFlipper); 
    
           } // left to right swipe 
           else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
            Log.v(LOGID,"left to right swipe detected");      
            viewFlipper.setInAnimation(slideRightIn); 
            viewFlipper.setOutAnimation(slideRightOut); 
            viewFlipper.showPrevious(); 
            setContentView(viewFlipper); 
    
           } 
          } catch (Exception e) { 
           // nothing 
          } 
          return false; 
         } 
        } 
    
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    if (gestureDetector.onTouchEvent(event)) 
    return true; 
    else 
    return false; 
    } 
    
    } 
    
  • 2
    1. グラブSDK Managerを介して互換パッケージの最新バージョン(またはhereを行く)
    2. を使用することができますアダプタビューのように動作し、すべてのスワイプジェスチャ管理があなたのために機能するViewGroupであるViewPagerを利用してください。

    また、Android開発者ブログのhere is an exampleもご利用いただけます。

    HTH

    関連する問題