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

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • nigahiga

    nigahiga

    21 Temmuz 2006