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

來源:互聯網
上載者:User

在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; 
    } 
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.