SORU
16 Kasım 2011, ÇARŞAMBA


Android Viewpager denetleyicisi yavaşlama hızı

Android viewpager adaptör ile kaydırma hızını yavaşlatmak için bir yolu var mı?


Bu kod bakıyordum. Dong yanlış ben ne olduğunu çözemiyorum.

try{ 
    Field mScroller = mPager.getClass().getDeclaredField("mScroller"); 
    mScroller.setAccessible(true); 
    Scroller scroll = new Scroller(cxt);
    Field scrollDuration = scroll.getClass().getDeclaredField("mDuration");
    scrollDuration.setAccessible(true);
    scrollDuration.set(scroll, 1000);
    mScroller.set(mPager, scroll);
}catch (Exception e){
    Toast.makeText(cxt, "something happened", Toast.LENGTH_LONG).show();
} 

Bu hiçbir şeyi değiştirmez henüz hiçbir özel durum oluşur?

CEVAP
16 Mart 2012, Cuma


Başladım ile HighFlyer kodu olan gerçekten değişmiş mScroller alanı (çok güzel bir başlangıç ama işe yaramadı uzatma süresi kaydırma beri ViewPager açıkça geçiş süresi için mScroller talep halinde ilerleyin.

Önemli yöntem (smoothScrollTo) olarak işe yaramadı ViewPager uzanan kılınabilir.

Bu kod ile Nick genişleterek bu sabitleme sona erdi:

public class FixedSpeedScroller extends Scroller {

    private int mDuration = 5000;

    public FixedSpeedScroller(Context context) {
        super(context);
    }

    public FixedSpeedScroller(Context context, Interpolator interpolator) {
        super(context, interpolator);
    }

    public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) {
        super(context, interpolator, flywheel);
    }


    @Override
    public void startScroll(int startX, int startY, int dx, int dy, int duration) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }

    @Override
    public void startScroll(int startX, int startY, int dx, int dy) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }
}

Ve bunu kullanarak: bunun gibi

try {
    Field mScroller;
    mScroller = ViewPager.class.getDeclaredField("mScroller");
    mScroller.setAccessible(true); 
    FixedSpeedScroller scroller = new FixedSpeedScroller(mPager.getContext(), sInterpolator);
    // scroller.setFixedDuration(5000);
    mScroller.set(mPager, scroller);
} catch (NoSuchFieldException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}

5 saniye için bu kodları süresini ettim ve benim ViewPager bunu kullandı.

Bu yardımcı olur umarım.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • joshsnice

    joshsnice

    28 Kasım 2006
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009