Puoi utilizzare i dispositivi di scorrimento per mostrare una barra di caricamento, di avanzamento o di navigazione nella parte inferiore dello schermo. I dispositivi di scorrimento sono componenti UX globali e devono essere trattati con cautela durante l'implementazione nel Glassware.
Dispositivo di scorrimento
I dispositivi di scorrimento sono utilizzati per indicare la posizione di una scheda mentre scorri più schede. Puoi creare lo stesso tipo di effetto utilizzando Slider.Scroller
.
- Usa
Slider.from()
per creare unaSlider
che utilizza unView
per visualizzare il dispositivo di scorrimento. - Crea
Slider.Scroller
utilizzandostartScroller()
e imposta le posizioni massime e iniziali.
Di seguito è riportata una semplice implementazione che anima uno scorrimento fino alla posizione successiva quando l'utente tocca:
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();
}
}
Dispositivo di scorrimento del periodo di tolleranza
I dispositivi di scorrimento del periodo di tolleranza funzionano in attività in cui è utile per un utente
visualizzare una notifica, ma non è richiesta alcuna interazione da parte dell'utente. Puoi aggiungere questa animazione utilizzando Slider.GracePeriod
.
- Usa
Slider.from()
per creare unaSlider
che utilizza unView
per visualizzare il dispositivo di scorrimento. - Creare un elemento
GracePeriod.Listener
e implementareonGracePeriodEnd()
eonGracePeriodCancel()
per gestire questi eventi. - Crea un elemento
Slider.GracePeriod
e avvia l'animazione passando daGracePeriod.Listener
al metodostartGracePeriod()
. - Sostituisci
onBackPressed()
dell'attività per gestire il gesto di scorrimento verso il basso. - Se l'utente scorre verso il basso, chiama
cancel()
suSlider.GracePeriod
per ignorare il dispositivo di scorrimento.
Nell'esempio seguente, lo scorrimento del periodo di tolleranza è avviato con un listener che riproduce un suono riuscito al termine del periodo e un suono ignorato se il dispositivo di scorrimento del periodo di tolleranza è annullato:
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();
}
}
}
Dispositivo di scorrimento Determina
Determina che i dispositivi di scorrimento vengono utilizzati principalmente per mostrare i progressi in cui puoi calcolare al termine di un'attività. Puoi aggiungere questa animazione utilizzando Slider.Determinate
.
- Usa
Slider.from()
per creare unaSlider
che utilizza unView
per visualizzare il dispositivo di scorrimento. - Crea
Slider.Determinate
utilizzandostartScroller()
e imposta le posizioni massime e iniziali. - Al termine dell'animazione, chiama il metodo
hide()
all'interno diSlider.Determinate
per nascondere il dispositivo di scorrimento.
Di seguito è riportata una semplice implementazione che anima lo scorrimento fino a raggiungere la posizione impostata quando l'utente tocca:
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);
}
}
Dispositivo di scorrimento indeterminato
Puoi utilizzare i dispositivi di scorrimento indeterminato per caricare le schermate in cui è difficile calcolare al termine dell'attività. Puoi aggiungere questa animazione utilizzando Slider.Indeterminate
.
- Usa
Slider.from()
per creare unaSlider
che utilizza unView
per visualizzare il dispositivo di scorrimento. - Avvia l'animazione con il metodo
Slider.startIndeterminate()
. - Quando vuoi interrompere l'animazione, chiama il metodo
hide()
inSlider.Indeterminate
.
Di seguito è riportata una semplice implementazione che crea lo strumento di scorrimento indeterminato quando l'utente tocca la scheda e la nasconde quando l'utente tocca di nuovo:
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);
}
}