SORU
18 Kasım 2011, Cuma


Android: ScrollView durur kaydırma sırasında Tespit

ScrollView görünen kısmı Scrollview içindeki hücrelerin aynı boyutta olduğu Android ScrollView kullanarak ve ben. "Hücre" aynı yükseklikte. her Bunu yapmak için çalışıyorum ScrollView kaydırılan sonra yerlerine oturtun.

Şu anda kullanıcı ScrollView dokundu ve kaydırma ve orada çalışmaya başladılar ne zaman tespit ediyorum, ama oldukça can sıkıcı olabiliyor. Ayrıca Kullanıcı sadece sinema ve gezinir ve sonra yavaşlamasını zaman çalışması gerekiyor.

İPhone didDecelerate gibi bir şey olduğunu bir işlevi yoktur ve ScrollView kaydırma bittiğinde istiyorum herhangi bir kod var. Android için böyle bir şey var mı? Ya bak ben bir kod, bunu yapmanın daha iyi bir yolunu bulmak mı?

Android üzerinde docs baktım ve böyle bir şey bulamadı.

CEVAP
17 NİSAN 2012, Salı


Geçenlerde açıklanan işlevi uygulamak zorunda kaldı. Benim yaptığım bir Çalıştırılabilir kontrol dışarı eğer ScrollView durdu ilerleyerek karşılaştırma tarafından döndürülen değeri getScrollY() onTouchEvent ilk tetikledi değeri döndükten sonra bir süre tarafından tanımlanan değişkennewCheck.

Kod (çalışma çözeltisi) aşağıya bakın:

public class MyScrollView extends ScrollView{

private Runnable scrollerTask;
private int initialPosition;

private int newCheck = 100;
private static final String TAG = "MyScrollView";

public interface OnScrollStoppedListener{
    void onScrollStopped();
}

private OnScrollStoppedListener onScrollStoppedListener;

public MyScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);

    scrollerTask = new Runnable() {

        public void run() {

            int newPosition = getScrollY();
            if(initialPosition - newPosition == 0){//has stopped

                if(onScrollStoppedListener!=null){

                    onScrollStoppedListener.onScrollStopped();
                }
            }else{
                initialPosition = getScrollY();
                MyScrollView.this.postDelayed(scrollerTask, newCheck);
            }
        }
    };
}

public void setOnScrollStoppedListener(MyScrollView.OnScrollStoppedListener listener){
    onScrollStoppedListener = listener;
}

public void startScrollerTask(){

    initialPosition = getScrollY();
    MyScrollView.this.postDelayed(scrollerTask, newCheck);
}

}

O zaman ben:

scroll.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_UP) {

                scroll.startScrollerTask();
            }

            return false;
        }
});
scroll.setOnScrollStoppedListener(new OnScrollStoppedListener() {

        public void onScrollStopped() {

            Log.i(TAG, "stopped");

        }
});

BTW diğer cevaplar ben birkaç fikir benim app bunu yapmak için kullandım. Bu yardımcı olur umarım. Herhangi bir soru sormaya çekinmeyin. Şerefe.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011