/ / स्क्रॉल स्क्रॉल को धीरे-धीरे स्क्रॉल करें - एंड्रॉइड, स्क्रॉल, स्क्रॉलव्यू

एक स्क्रॉलव्यू धीरे-धीरे स्क्रॉल करें - एंड्रॉइड, स्क्रॉल, स्क्रॉलव्यू

सवाल यह है कि "मैं एक स्क्रॉल दृश्य को बहुत आसानी से और धीरे से ऊपर कैसे स्क्रॉल करूं"।

मेरे विशेष मामले में मुझे लगभग 1-2 सेकंड में शीर्ष पर स्क्रॉल करने की आवश्यकता है। Ive मैन्युअल रूप से एक हैंडलर (स्क्रॉल स्क्रॉलो (0, y) कहकर) का उपयोग करके प्रक्षेपित करने की कोशिश की, लेकिन यह बिल्कुल काम नहीं किया।

मैंने अभी तक कुछ बुकर-ऐप पर इस प्रभाव को देखा है, इसलिए एक तरीका होना चाहिए, सुनिश्चित करें कि: डी। (पाठ बहुत धीरे-धीरे स्क्रॉल कर रहा है बिना स्क्रीन को पढ़े, इनपुट किए बिना)।

उत्तर:

उत्तर № 1 के लिए 10

2 सेकंड में स्क्रॉल दृश्य को 2000 के कब्जे में ले जाएं

new CountDownTimer(2000, 20) {

public void onTick(long millisUntilFinished) {
scrollView.scrollTo(0, (int) (2000 - millisUntilFinished)); // from zero to 2000
}

public void onFinish() {
}

}.start();

जवाब के लिए 26 № 2

मैंने इसे ऑब्जेक्ट एनिमेटर (एपीआई> 3 में उपलब्ध) का उपयोग करके किया था और यह बहुत अच्छा लगता है:

एक वस्तु को परिभाषित करें: final ObjectAnimator animScrollToTop = ObjectAnimator.ofInt(this, "scrollY", 0);

(this एंड्रॉइड के विस्तार के वर्ग को संदर्भित करता है ScrollView)

आप अपनी इच्छा के अनुसार इसकी अवधि निर्धारित कर सकते हैं:

animScrollToTop.setDuration(2000); (2 सेकेंड)

अनुलेख एनीमेशन शुरू करने के लिए मत भूलना।


जवाब के लिए 10 № 3

निम्नलिखित कोड आज़माएं:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
ValueAnimator realSmoothScrollAnimation =
ValueAnimator.ofInt(parentScrollView.getScrollY(), targetScrollY);
realSmoothScrollAnimation.setDuration(500);
realSmoothScrollAnimation.addUpdateListener(new AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
int scrollTo = (Integer) animation.getAnimatedValue();
parentScrollView.scrollTo(0, scrollTo);
}
});

realSmoothScrollAnimation.start();
}
else
{
parentScrollView.smoothScrollTo(0, targetScrollY);
}

जवाब के लिए 5 № 4

आपने कोशिश की है smoothScrollTo(int x, int y)? आप गति पैरामीटर सेट नहीं कर सकते, लेकिन शायद यह फ़ंक्शन आपके लिए ठीक होगा


जवाब के लिए 0 № 5

आप टाइमर और टाइमर क्लास का उपयोग कर सकते हैं। आप कुछ ऐसा कर सकते थे

scrollTimer = new Timer();
scrollerSchedule = new TimerTask(){
@Override
public void run(){
runOnUiThread(SCROLL TO CODE GOES HERE);
}
};
scrollTimer.schedule(scrollerSchedule, 30, 30);