슬라이더

슬라이더를 사용하여 화면 하단에 위치합니다. 슬라이더는 전역 UX 구성요소이며 주의를 기울여야 합니다.


스크롤러 슬라이더

스크롤러 슬라이더는 스와이프할 때 카드의 위치를 나타내는 데 사용됩니다. 여러 카드를 통해 이용할 수 있습니다. 다음 명령어를 사용하여 동일한 유형의 효과를 만들 수 있습니다. Slider.Scroller

  1. 사용 Slider.from() 드림 kubectl 명령어 SliderView 슬라이더를 표시합니다.
  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() 드림 kubectl 명령어 SliderView 슬라이더를 표시합니다.
  2. 만들기 GracePeriod.Listener 드림 kubectl run 명령어를 사용하여 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() 드림 kubectl 명령어 SliderView 슬라이더를 표시합니다.
  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() 드림 kubectl 명령어 SliderView 슬라이더를 표시합니다.
  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);
    }
}