1. FloatingActionButton类

FloatingActionButton是5.0版本出现的控件,显示一个圆形悬浮按钮。需要添加Design依赖库,并且使用Theme.AppCompat主题。

2. FloatingActionButton配置

FloatingActionButton的配置

  • android:src,显示的图标,最好是24dp的
  • app:backgroundTint,正常的背景颜色
  • app:rippleColor,按下时的背景颜色
  • app:elevation,正常的阴影大小(默认6dp)
  • app:pressedTranslationZ,按下时的阴影大小(默认12dp)
  • app:borderWidth,边框宽度
  • app:layout_anchor,设置FAB的锚点,即以哪个控件为参照设置位置
  • app:layout_anchorGravity,FAB相对于锚点的位置
  • app:fabSizenormalmini(对应56dp和40dp)

配置文件

效果如下

3. Snackbar交互

FloatingActionButton如果没有与Snackbar关联,容易被Snackbar覆盖。

设置FloatingActionButtonCoordinatorLayout内部,同时将这个CoordinatorLayout作为View参数传给Snackbarmake()方法。

查看了一下Snackbar的源码,如果父视图是CoordinatorLayout,创建Snackbar的时候,会设置LayoutParamsinsetEdge属性。

final void showView() {    if (mView.getParent() == null) {        final ViewGroup.LayoutParams lp = mView.getLayoutParams();        if (lp instanceof CoordinatorLayout.LayoutParams) {            // If our LayoutParams are from a CoordinatorLayout, we'll setup our Behavior            final CoordinatorLayout.LayoutParams clp = (CoordinatorLayout.LayoutParams) lp;            final Behavior behavior = new Behavior();            behavior.setStartAlphaSwipeDistance(0.1f);            behavior.setEndAlphaSwipeDistance(0.6f);            behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END);            behavior.setListener(new SwipeDismissBehavior.OnDismissListener() {                @Override                public void onDismiss(View view) {                    view.setVisibility(View.GONE);                    dispatchDismiss(BaseCallback.DISMISS_EVENT_SWIPE);                }                @Override                public void onDragStateChanged(int state) {                    switch (state) {                        case SwipeDismissBehavior.STATE_DRAGGING:                        case SwipeDismissBehavior.STATE_SETTLING:                            // If the view is being dragged or settling, pause the timeout                            SnackbarManager.getInstance().pauseTimeout(mManagerCallback);                            break;                        case SwipeDismissBehavior.STATE_IDLE:                            // If the view has been released and is idle, restore the timeout                            SnackbarManager.getInstance()                                    .restoreTimeoutIfPaused(mManagerCallback);                            break;                    }                }            });            clp.setBehavior(behavior);            // Also set the inset edge so that views can dodge the bar correctly            clp.insetEdge = Gravity.BOTTOM;        }        mTargetParent.addView(mView);    }    ... ...}

相关文章
Android Snackbar控件
Android FloatingActionButton控件
Android Toolbar控件
Android AppBarLayout控件
Android CollapsingToolbarLayout控件
Android CardView控件
Android SlidingPaneLayout和DrawerLayout控件
Android NavigationView控件
Android TabLayout控件

更多相关文章

  1. Android(安卓)- 永不锁屏,开机不锁屏,删除设置中休眠时间选项
  2. Android(安卓)- 绘画出圆并保存为图片(详)
  3. Android使用MQTT协议
  4. Android(安卓)--spinner构造下垃菜单
  5. Android(安卓)ImageView图片自适应
  6. Android之布局
  7. Android(安卓)自动化测试—robotium(三)EditText控件
  8. android 设置特殊字体
  9. 动画·界面

随机推荐

  1. 基于Socket的Android手机视频实时传输
  2. Android(安卓)报错处理:Android(安卓)reso
  3. 安卓USB开发教程 安卓 AOA 2.0
  4. android listview 的一些属性
  5. Android学习-ProgressBar、SeekBar
  6. Android(安卓)ListView去掉顶部阴影
  7. android 拖动图片/拖动浮动按钮
  8. 使用AndroidStudio编译NDK的方法及错误解
  9. 关于Android多项目依赖在Eclipse中无法关
  10. Android(安卓)studio instant run导致的c