[Design support Library] SwipeDismissBehaviorについて

こんにちは、KID.Aです。

 

今回もDesign support Libraryのクラスの説明をしていきます。

今回はBehaviorを簡単に実装していきたいと思います。
BehaviorはCoordinatorLayoutで動作するクラスで詳しくは「[Design support Library] CoordinatorLayoutについて」に記載しています。


 

Behaviorの実装はSwipeDismissBehaviorを使用して説明してきます。
SwipeDismissBehaviorはCoordinatorLayoutの子ビュー上で動作するbehaviorプラグインです。
スワイプ動作のジェスチャーのサポートを提供します。

 

・以下は開発サイトのAPIになります。
http://developer.android.com/intl/ja/reference/android/support/design/widget/SwipeDismissBehavior.html

 

実装

それでは実装していきます。

 

クラスはBlank Activityで生成したクラスを利用します。
SnapCrab_NoName_2016-2-29_19-7-56_No-00

 

MainActivity.javaを以下のように修正します。


import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.SwipeDismissBehavior;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super .onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // SwipeDismissBehaviorを実装する
        final SwipeDismissBehavior<FloatingActionButton> behavior = new SwipeDismissBehavior();
        behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END);
        behavior.setListener(new SwipeDismissBehavior.OnDismissListener() {
            @Override
            public void onDismiss(final View view) {
                Toast.makeText(getApplicationContext(), "SWIPE", Toast. LENGTH_SHORT).show();
            }

            @Override
            public void onDragStateChanged(int i) {
            }
        });

        // CoordinatorLayoutのパラメータを取得
        final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id. fab);
        CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
        
        // CoordinatorLayoutのbehaviorに設定する
        params.setBehavior(behavior);

    }
}

 

SwipeDismissBehavior#setSwipeDirectionでスワイプの動作を決められます。
SWIPE_DIRECTION_START_TO_ENDはスワイプの方向をスタートからエンドに設定します。
エンドからスタートにする場合はSWIPE_DIRECTION_END_TO_STARTがあります。
OnDismissListener#onDismissにスワイプが終わった場合の動作が入ります。
OnDismissListener#onDragStateChangedでドラックの状態を判定できます。

 

実行

 

それでは実行します。

 

・アプリを起動します。
device-2016-02-29-185634

 

・起動後、フローティングアクションボタンを右端までスワイプします。
device-2016-02-29-185721

 

・スワイプが終わるとトーストが表示されます。
device-2016-02-29-185738

 

Behaviorの実装イメージが少しわかったと思います。
1点気を付けるとしたら、BehaviorはCoordinatorLayoutの全ての子ビューにBehaviorが反映されます。
※今回の場合はテキストビューもスワイプできるようになっている。

 

以上です

 

 

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。 いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。 明日から本気出します。 よろしくお願いします。
カテゴリー: Android タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です