滑桿

您可以使用滑桿在 。滑桿是全域使用者體驗元件,應處理 在 Glassware 中實作這些元件時必須小心謹慎


捲動式滑桿

捲動滑桿可用來在滑動時指出資訊卡的位置 建議使用多張資訊卡您可以使用 Slider.Scroller

  1. 使用 Slider.from()敬上 來建立 Slider。 使用 View 顯示滑桿。
  2. 建立 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

  1. 使用 Slider.from()敬上 來建立 Slider。 使用 View 顯示滑桿。
  2. 撰寫 GracePeriod.Listener敬上 並實作 onGracePeriodEnd()onGracePeriodCancel() 處理這些事件
  3. 撰寫 Slider.GracePeriod敬上 然後傳入 GracePeriod.Listener 加入 startGracePeriod() 方法。
  4. 覆寫活動的 onBackPressed()敬上 處理向下滑動手勢
  5. 使用者向下滑動時, 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

  1. 使用 Slider.from()敬上 來建立 Slider。 使用 View 顯示滑桿。
  2. 建立 Slider.Determinate敬上 使用 startScroller()。 並設定最高和初始位置
  3. 動畫結束後,請呼叫 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

  1. 使用 Slider.from()敬上 來建立 Slider。 使用 View 顯示滑桿。
  2. 使用 Slider.startIndeterminate() 方法,增加圍繞地圖邊緣的邊框間距。
  3. 準備停止動畫時,請呼叫 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);
    }
}