Android FloatingActionButton,Snackbar
来源:互联网 发布:大英帝国 知乎 编辑:程序博客网 时间:2024/04/28 08:08
FloatingActionButton 浮动按钮
<android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:id="@+id/float_btn"/>
Snackbar可以用来代替Toast
//coordinatorLayout为Snackbar显示的容器//float btn为显示内容//Undo为提示框右侧点击按钮的文字Snackbar.make(coordinatorLayout, "float btn", Snackbar.LENGTH_SHORT) .setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { } }) .show();
只要使用CoordinatorLayout作为基本布局,将自动产生向上移动的动画。浮动操作按钮有一个 默认的 behavior来检测Snackbar的添加并让按钮在Snackbar之上呈现上移与Snackbar等高的动画。
<android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent">
自定义FloatingActionButton在CoordinatorLayout中的动画
参考http://blog.csdn.net/xyz_lmn/article/details/48055919
神奇之处在于Behavior对象,CoordinatorLayout自己并不控制View,所有的控制权都在Behavior。
通过 CoordinatorLayout.Behavior(YourView.Behavior.class) 来定义自己的Behavior,并在layout 文件中设置 app:layout_behavior=”com.example.app.YourView$Behavior” 来达到效果。
如下面的例子,实现了点击FloatingActionButton点击旋转90度,并适配Snackbar。
public class RotateBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> { private static final String TAG = RotateBehavior.class.getSimpleName(); public RotateBehavior() { } public RotateBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { return dependency instanceof Snackbar.SnackbarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { float translationY = getFabTranslationYForSnackbar(parent, child); float percentComplete = -translationY / dependency.getHeight(); child.setRotation(-90 * percentComplete); child.setTranslationY(translationY); return false; } private float getFabTranslationYForSnackbar(CoordinatorLayout parent, FloatingActionButton fab) { float minOffset = 0; final List<View> dependencies = parent.getDependencies(fab); for (int i = 0, z = dependencies.size(); i < z; i++) { final View view = dependencies.get(i); if (view instanceof Snackbar.SnackbarLayout && parent.doViewsOverlap(fab, view)) { minOffset = Math.min(minOffset, ViewCompat.getTranslationY(view) - view.getHeight()); } } return minOffset; }}
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="@dimen/fab_margin" android:src="@drawable/ic_done" app:layout_behavior="com.meizu.coordinatorlayoutdemo.RotateBehavior"/></android.support.design.widget.CoordinatorLayout>
0 0
- Android FloatingActionButton,Snackbar
- Android开发--FloatingActionButton/Snackbar/CoordinatorLayout
- FloatingActionButton&Snackbar
- Android design library(二)----------FloatingActionButton + Snackbar
- FloatingActionButton,TextInputLayout,Snackbar,TabLayout
- TextInputLayout,FloatingActionButton与Snackbar
- SnackBar--FloatingActionButton--CoordinatorLayout
- Iwfu-TextInputLayout,FloatingActionButton,SnackBar
- TextInputLayout,Snackbar,FloatingActionButton, SwipeRefreshLayout
- android新控件之toolbar,floatingActionButton,SnackBar,CollapsingToolbarLayout
- Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout
- Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout
- Android中Material Desgin风格的Snackbar、TextInputLayout、FloatingActionButton使用
- Android Material Design系列之FloatingActionButton和Snackbar
- Android 5.0 之FloatingActionButton,TextInputLayout,Snackbar的使用
- Android Support Design常用控件Snackbar,FloatingActionButton等
- Android M新控件之FloatingActionButton,TextInputLayout,Snackbar的使用
- android新特性:CoordinatorLayout与FloatingActionButton、Snackbar的使用
- 关于openssl几个API的一点小收获
- 1121: [POI2008]激光发射器SZK
- 基于DragonBoard410C的红外人体监测实现
- uva6623
- maven工程下 读取resource下配置文件
- Android FloatingActionButton,Snackbar
- 数据按某个字段分组,且取每个分组的最大值
- Android语言国际化values资源文件命名规则
- 安卓 activity过渡动画
- 使用ApkTool以及dex2jar对apk进行反编译-更新异常以及解决方案
- 透明栏颜色改变
- log4j配置详解
- Boost程序库学习-bind与function
- Android内存泄漏的各种原因详解