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

  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011