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

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Elly

    Elly

    3 EKİM 2005