คุณสามารถใช้แถบเลื่อนเพื่อแสดงการโหลด ความคืบหน้า หรือแถบนำทางบน ด้านล่างของหน้าจอ แถบเลื่อนเป็นคอมโพเนนต์ UX ที่ครอบคลุมซึ่งควรได้รับการจัดการ ด้วยความระมัดระวังเมื่อนำไปใช้ใน Glassware ของคุณ
แถบเลื่อนแถบเลื่อน
แถบเลื่อนแถบเลื่อนใช้เพื่อระบุตําแหน่งของการ์ดขณะที่คุณปัด
ผ่านการ์ดหลายใบ คุณสามารถสร้างเอฟเฟกต์ประเภทเดียวกันได้โดยใช้
Slider.Scroller
- ใช้
Slider.from()
เพื่อสร้างSlider
ที่ใช้View
เพื่อแสดงแถบเลื่อน - สร้าง
Slider.Scroller
โดยใช้startScroller()
และกำหนดตำแหน่งสูงสุดและตำแหน่งเริ่มต้น
นี่คือการติดตั้งใช้งานแบบง่ายๆ ซึ่งจะทำให้แถบเลื่อนเลื่อนไปที่ตำแหน่งถัดไป เมื่อผู้ใช้แตะ
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();
}
}
แถบเลื่อนระยะเวลาผ่อนผัน
แถบเลื่อนระยะเวลาผ่อนผันจะทำงานในกิจกรรมที่มีประโยชน์ต่อผู้ใช้ดังนี้
เห็นการแจ้งเตือน แต่ไม่จำเป็นต้องโต้ตอบของผู้ใช้ คุณสามารถเพิ่ม
ภาพเคลื่อนไหวโดยใช้
Slider.GracePeriod
- ใช้
Slider.from()
เพื่อสร้างSlider
ที่ใช้View
เพื่อแสดงแถบเลื่อน - สร้าง
GracePeriod.Listener
และใช้งานonGracePeriodEnd()
และonGracePeriodCancel()
ให้รองรับเหตุการณ์เหล่านั้น - สร้าง
Slider.GracePeriod
และเริ่มภาพเคลื่อนไหว ด้วยการส่งผ่านในGracePeriod.Listener
ไปยังstartGracePeriod()
- ลบล้าง
onBackPressed()
เพื่อจัดการท่าทางสัมผัสการปัดลง - หากผู้ใช้เลื่อนลง ให้โทร
cancel()
ในSlider.GracePeriod
เพื่อปิดแถบเลื่อน
ในตัวอย่างต่อไปนี้ แถบเลื่อนระยะเวลาผ่อนผันได้รับการเริ่มต้นโดยใช้ Listener ที่ส่งเสียงเตือนสำเร็จเมื่อช่วงเวลาสิ้นสุดลงและมีเสียงปิดหาก แถบเลื่อนระยะเวลาผ่อนผันถูกยกเลิก:
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();
}
}
}
แถบเลื่อนกำหนด
ใช้แถบเลื่อน "กำหนด" เป็นหลักเพื่อแสดงความคืบหน้าในจุดที่คุณสามารถคำนวณเวลาได้
งานที่เสร็จแล้ว คุณสามารถเพิ่มภาพเคลื่อนไหวนี้ได้โดยใช้
Slider.Determinate
- ใช้
Slider.from()
เพื่อสร้างSlider
ที่ใช้View
เพื่อแสดงแถบเลื่อน - สร้าง
Slider.Determinate
โดยใช้startScroller()
และกำหนดตำแหน่งสูงสุดและตำแหน่งเริ่มต้น - เมื่อภาพเคลื่อนไหวเสร็จสิ้น ให้เรียกใช้
hide()
ในSlider.Determinate
เพื่อซ่อนแถบเลื่อน
ต่อไปนี้เป็นการติดตั้งใช้งานง่ายๆ ที่จะทำให้แถบเลื่อนเลื่อนไปถึงตำแหน่งที่กำหนดไว้เมื่อ ผู้ใช้แตะ:
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);
}
}
แถบเลื่อนไม่ระบุสถานะ
แถบเลื่อนที่ไม่กำหนด สามารถใช้สำหรับการโหลดหน้าจอในบริเวณที่ทำได้ยาก
เพื่อคำนวณเมื่องานเสร็จสิ้น คุณสามารถเพิ่ม
ภาพเคลื่อนไหวโดยใช้
Slider.Indeterminate
- ใช้
Slider.from()
เพื่อสร้างSlider
ที่ใช้View
เพื่อแสดงแถบเลื่อน - เริ่มภาพเคลื่อนไหวด้วย
Slider.startIndeterminate()
- เมื่อคุณพร้อมที่จะหยุดภาพเคลื่อนไหว ให้เรียกใช้
hide()
ในSlider.Indeterminate
ต่อไปนี้เป็นการติดตั้งใช้งานที่ไม่ซับซ้อนซึ่งสร้างตัวเลื่อนที่ไม่กำหนดเมื่อ ผู้ใช้แตะบัตรและซ่อนบัตรเมื่อผู้ใช้แตะอีกครั้ง
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);
}
}