您可以使用滑桿在 。滑桿是全域使用者體驗元件,應處理 在 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
。 以關閉滑桿。
在以下範例中,寬限期捲動器為事件監聽器貼合 會在經期結束時播放成功音效;如果 寬限期滑桿已取消:
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);
}
}