2010-07-08 135 views
4

我必須實現ViewFlipper上的Touch Scroll。例如。我有兩個圖像。首先,ViewFlipper顯示第一張圖片。現在我從右向左衝擊視圖。第一張圖片視圖向左滑出,第二張從左滑入。我可以通過這個Post來實現它。但我想滾動圖像。也就是說,在Action_Move事件中,我想要做觸摸滾動。例如,當我將觸摸從右向左移動時,它會拋出觸摸移動的距離。那時輸出應該部分顯示兩個圖像。在Android的觸摸屏上觸摸滾動?

如何做到這一點?我必須測量屏幕級別(高度&寬度)。示例代碼更有幫助。

回答

0

如果需要檢測僅viewflipper它不佔用整個屏幕滾動,然後嘗試以下

gestureDetector = new GestureDetector(new MyGestureDetector()); 

viewFlipper.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (gestureDetector.onTouchEvent(event)) { 
       return false; 
      } 
      return true; 
     } 
    }); 

和MyGestureDetector將相同http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/

1
package com.appaapps.flipper; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.*; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.ViewFlipper; 
//------------------------------------------------------------------------------ 
// Flipper - Philip R Brenan at gmail.com 
//------------------------------------------------------------------------------ 
public class FlipperActivity extends Activity { 
    ViewFlipper f; 
    DrawView a, b, c; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     f = new ViewFlipper(this); 
     a = new DrawView(this, "aaaaa"); 
     b = new DrawView(this, "BBBBB"); 
     c = new DrawView(this, "ccccc"); 
     f.addView(a); 
     f.addView(b); 
     f.addView(c); 
     setContentView(f); 
    } 
    //------------------------------------------------------------------------------ 
    // Draw 
    //------------------------------------------------------------------------------ 
    class DrawView extends View implements View.OnTouchListener { 
     final String text; 
     DrawView(Context Context, String Text) { 
      super(Context); 
      text = Text; 
      setOnTouchListener(this); 
     } 
     public void onDraw(Canvas Canvas) { 
      super.onDraw(Canvas); 
      Paint p = new Paint(); 
      p.setColor(0xffffffff); 
      p.setTextSize(20); 
      Canvas.drawText(text, 0, 20, p); 
     } 
     public boolean onTouch(View v, MotionEvent event) { 
      final int a = event.getAction(); 
      if (a == MotionEvent.ACTION_DOWN) { 
       final int i = f.getDisplayedChild(), n = f.getChildCount(); 
       f.setDisplayedChild((i + 1) % n); 
      } 
      return true; 
     } 
    } 
}