Kaydırma çubuğu

Ekranın alt kısmında yükleme, ilerleme durumu veya gezinme çubuğunu göstermek için kaydırma çubuklarını kullanabilirsiniz. Kaydırma çubukları, genel kullanıcı deneyimi bileşenleridir ve Glassware'e uygulanırken dikkatli bir şekilde kullanılmalıdır.


Kaydırma Çubuğu Kaydırma Çubuğu

Kaydırma çubukları, bir kartta birden fazla kart hızlıca kaydırarak ilgili konumunuzu belirtmek için kullanılır. Slider.Scroller kullanarak aynı türde efekt oluşturabilirsiniz.

  1. Kaydırma çubuğunu görüntülemek için View kullanan Slider oluşturmak için Slider.from() simgesini kullanın.
  2. startScroller() kullanarak Slider.Scroller oluşturup maks. ve başlangıç konumlarını ayarlayın.

Kullanıcı dokunduğunda bir kaydırma çubuğunu sonraki pozisyona hareket ettiren basit bir uygulamayı burada görebilirsiniz:

public final class SliderActivity extends Activity {

    private static final int MAX_SLIDER_VALUE = 5;
    private static final long ANIMATION_DURATION_MILLIS = 5000;

    private CardScrollView mCardScroller;
    private Slider mSlider;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        // Create the cards for the view
        mCardScroller = new CardScrollView(this);
        mCardScroller.setAdapter(new CardAdapter(createCards()));

        // Set the view for the Slider
        mSlider = Slider.from(mCardScroller);

        mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                processSliderRequest(position+1);
            }
        });

        setContentView(mCardScroller);
    }

    private void processSliderRequest(position) {
        Slider.Scroller scroller = mSlider.startScroller(MAX_SLIDER_VALUE, 0);

        // Animate the slider to the next position. The slider
        // automatically hides after the duration has elapsed
        ObjectAnimator.ofFloat(scroller, "position", 0, position)
            .setDuration(ANIMATION_DURATION_MILLIS)
            .start();
    }
}

Ek yayınlanma süresi kaydırma çubuğu

Ek süre kaydırma çubukları, kullanıcının bildirim almasının faydalı olduğu etkinliklerde çalışır ancak kullanıcı etkileşimi gerekmez. Slider.GracePeriod kullanarak bu animasyonu ekleyebilirsiniz.

  1. Kaydırma çubuğunu görüntülemek için View kullanan Slider oluşturmak için Slider.from() simgesini kullanın.
  2. Bu etkinlikleri yönetmek için bir GracePeriod.Listener oluşturup onGracePeriodEnd() ve onGracePeriodCancel() uygulayın.
  3. Bir Slider.GracePeriod oluşturun ve GracePeriod.Listener startGracePeriod() yöntemine geçirerek animasyonu başlatın.
  4. Aşağı kaydırma hareketini gerçekleştirmek için etkinliğin onBackPressed() öğesini geçersiz kılın.
  5. Kullanıcı aşağı kaydırırsa kaydırma çubuğunu kapatmak için Slider.GracePeriod üzerinden cancel() yöntemini çağırın.

Aşağıdaki örnekte, ek süre kaydırma çubuğu, bu süre sona erdiğinde başarılı bir ses ve ek kullanım süresi kaydırma çubuğu iptal edildiğinde reddedilmiş bir ses çalan bir dinleyiciyle başlatılır:

public final class SliderActivity extends Activity {

    ...
    private Slider.GracePeriod mGracePeriod;

    private final GracePeriod.Listener mGracePeriodListener =
        new GracePeriod.Listener() {

        @Override
        public void onGracePeriodEnd() {
            // Play a SUCCESS sound to indicate the end of the grace period.
            AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            am.playSoundEffect(Sounds.SUCCESS);
            mGracePeriod = null;
        }

        @Override
        public void onGracePeriodCancel() {
            // Play a DIMISS sound to indicate the cancellation of the grace period.
            AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            am.playSoundEffect(Sounds.DISMISSED);
            mGracePeriod = null;
        }
    };

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        // Create the cards for the view
        mCardScroller = new CardScrollView(this);
        mCardScroller.setAdapter(new CardAdapter(createCards()));

        // Set the view for the Slider
        mSlider = Slider.from(mCardScroller);

        mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                mGracePeriod = mSlider.startGracePeriod(mGracePeriodListener);
            }
        });

        setContentView(mCardScroller);
    }

    @Override
    public void onBackPressed() {
        // If the Grace Period is running,
        // cancel it instead of finishing the Activity.
        if (mGracePeriod != null) {
            mGracePeriod.cancel();
        } else {
            super.onBackPressed();
        }
    }
}

Belirli Kaydırma Çubuğu

Belirli kaydırma çubukları esas olarak, bir görevin ne zaman tamamlandığını hesaplayabildiğiniz ilerlemeyi göstermek için kullanılır. Slider.Determinate kullanarak bu animasyonu ekleyebilirsiniz.

  1. Kaydırma çubuğunu görüntülemek için View kullanan Slider oluşturmak için Slider.from() simgesini kullanın.
  2. startScroller() kullanarak Slider.Determinate oluşturup maks. ve başlangıç konumlarını ayarlayın.
  3. Animasyon bittiğinde kaydırma çubuğunu gizlemek için Slider.Determinate üzerinden hide() yöntemini çağırın.

Kullanıcı dokunduğunda kaydırma çubuğunu belirli bir konuma canlandıran basit bir uygulamayı burada görebilirsiniz:

public final class SliderActivity extends Activity {

    ...
    private Slider.Determinate mDeterminate;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        // Create the cards for the view
        mCardScroller = new CardScrollView(this);
        mCardScroller.setAdapter(new CardAdapter(createCards()));

        // Set the view for the Slider
        mSlider = Slider.from(mCardScroller);

        mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                   int position, long id) {
                mDeterminate = mSlider.startDeterminate(MAX_SLIDER_VALUE, 0);
                ObjectAnimator animator = ObjectAnimator.ofFloat(mDeterminate,
                    "position", 0, MAX_SLIDER_VALUE);

                // Hide the slider when the animation stops.
                animator.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        mDeterminate.hide();
                    }
                });

                // Start an animation showing the different positions of the slider.
                animator.setDuration(ANIMATION_DURATION_MILLIS).start();
            }
        });

        setContentView(mCardScroller);
    }
}

Belirsiz Kaydırma Çubuğu

Belirsiz kaydırma çubukları, görevin ne zaman tamamlandığını hesaplamanın zor olduğu yükleme ekranlarında kullanılabilir. Slider.Indeterminate kullanarak bu animasyonu ekleyebilirsiniz.

  1. Kaydırma çubuğunu görüntülemek için View kullanan Slider oluşturmak için Slider.from() simgesini kullanın.
  2. Animasyonu Slider.startIndeterminate() yöntemiyle başlatın.
  3. Animasyonu durdurmaya hazır olduğunuzda Slider.Indeterminate üzerinden hide() yöntemini çağırın.

Kullanıcı karta dokunduğunda belirsiz bir kaydırma çubuğu oluşturan ve kullanıcı tekrar dokunduğunda kartı gizleyen basit bir uygulamayı burada görebilirsiniz:

public final class SliderActivity extends Activity {

    ...
    private Slider.Indeterminate mIndeterminate;

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        // Create the cards for the view
        mCardScroller = new CardScrollView(this);
        mCardScroller.setAdapter(new CardAdapter(createCards()));

        // Set the view for the Slider
        mSlider = Slider.from(mCardScroller);

        mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                   int position, long id) {
                // Toggle between showing/hiding the indeterminate slider.
                if (mIndeterminate != null) {
                    mIndeterminate.hide();
                    mIndeterminate = null;
                } else {
                    mIndeterminate = mSlider.startIndeterminate();
                }
        });

        setContentView(mCardScroller);
    }
}