2010-07-22 31 views
10

Bazı özel 3D animasyon/efektlerini görüntülemek için kullandığım GridView'dan alt sınıflara ayrılmış özel bir görünümüm var. Bunu yapmam yolu dispatchDraw()'u geçersiz kılmak.GridView kaydırma hızını tespit edin - Android

İdeal olarak, çizim yaparken kaydırma hızının güncel hızını bilmek isterim. Şu anda, GestureDetector.OnGestureListener kullanıyorum ve onScroll olaylarını yakalarım ve bu durum çok iyi çalışıyor, ancak kaydırma olaylarını da kaydırma olayları olarak algılamıyor.

Akla gelen bir fikir, onFling olaylarını yakalamak ve daha sonra hızı daha sonra algılamak için kendi başıma yapacağım işlemdir.

Bunu başarmanın daha iyi bir yolu var mı? GridView'ın geçerli kaydırma hızını sorgulamanın basit bir yolu var mı?

Teşekkürler.

+0

Büyük sorular, hiç sorunu çözmek? – Noah

cevap

1

Eh, şimdiye kadar cevabın hazır umut, ama hala

Sen OnScrollListener geçersiz kılmak ve kendiniz için hızını hesaplamak gerekir ... ileride kullanmak üzere, bir yayınlayacağız. Kinematics itibaren : Distance/Time = Speed

private class SpeedDetectorOnScrollListener implements OnScrollListener { 

    private long timeStamp; 
    private int prevFirstVisibleItem; 
    private int scrollingSpeed; 

    public SpeedDetectorOnScrollListener() { 
     timeStamp = System.currentTimeMillis(); 
     lastFirstVisibleItem = 0; 
    } 

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     long lastTime = System.currentTimeMillis(); 
     timeStamp = lastTime; 
     lastFirstVisibleItem = firstVisibleItem; 
     scrollingSpeed = (firstVisibleItem - lastFirstVisibleItem)/(lastTime-timeStamp) 

    } 

    public int getSpeed() 
    { 
     return scrollingSpeed; 
    } 
} 
İlgili konular