こんにちは、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で生成したクラスを利用します。
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でドラックの状態を判定できます。
実行
それでは実行します。
・アプリを起動します。
・起動後、フローティングアクションボタンを右端までスワイプします。
・スワイプが終わるとトーストが表示されます。
Behaviorの実装イメージが少しわかったと思います。
1点気を付けるとしたら、BehaviorはCoordinatorLayoutの全ての子ビューにBehaviorが反映されます。
※今回の場合はテキストビューもスワイプできるようになっている。
以上です