Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 解決Gallery下ScrollView滑動事件沖突

Android 解決Gallery下ScrollView滑動事件沖突

編輯:關於Android編程

在Gallery下,裡面內容過長超出屏幕,這時我們可以用ScrollView來滾動,但是這樣做了以後,會發現一個問題,Gallery的滑動事件和ScrollView的滑動事件起沖突,這時我們可以自定義Gallery控件來避免這個問題:

下面貼出代碼:


[java]
import android.content.Context; 
import android.util.AttributeSet; 
import android.view.KeyEvent; 
import android.view.MotionEvent; 
import android.widget.Gallery; 
 
public class TestGallery extends Gallery { 
    private float gTouchStartX; 
    private float gTouchStartY; 
 
    public TestGallery(Context context, AttributeSet attrs, int defStyle) { 
        super(context, attrs, defStyle); 
    } 
 
    public TestGallery(Context context, AttributeSet attrs) { 
        super(context, attrs); 
    } 
 
    public TestGallery(Context context) { 
        super(context); 
    } 
     
    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
        int action = ev.getAction(); 
        switch(action){ 
        case MotionEvent.ACTION_DOWN: 
            gTouchStartX = ev.getX(); 
            gTouchStartY = ev.getY(); 
            super.onTouchEvent(ev); 
            break; 
        case MotionEvent.ACTION_MOVE: 
            final float touchDistancesX = Math.abs(ev.getX()-gTouchStartX); 
            final float touchDistancesY = Math.abs(ev.getY()-gTouchStartY); 
            if(touchDistancesY *2 >= touchDistancesX){ 
                return false; 
            }else{ 
                return true; 
            } 
        case MotionEvent.ACTION_CANCEL: 
            break; 
        case MotionEvent.ACTION_UP: 
            break; 
        } 
        return false; 
    } 
     
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
            float velocityY) { 
        if(e2.getX() > e1.getX()){ 
            onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null); 
        }else{ 
            onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null); 
        } 
        return false; 
    } 
 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved