Material Design (三),Snackbar的使用
2016-03-17 13:46
239 查看
前言:
另一个比较有趣的设计库中的UI组件是Snackbar,它的作用和Toast类似,显示吐司,但Snackbar的特别之处在于Snackbar显示的提示信息可以和用户交互,更好地获取用户反馈信息。同时,它显示的吐司带有动画效果,从屏幕下方慢慢展开显示。
引用设计库中的组件,需要引入相应的包:
1. 简单的Snackbar
Snackbar使用很简单,一个简单的Snackbar的使用如下所示:
2. 带有动作反馈的Snackbar
调用Snackbar的setAction()方法,第一参数是点击按钮显示的文本,第二个当然是点击事件监听。
3. 自定义显示样式的Snackbar
Snackbar是一个UI组件,它提供了一些接口(方法)让我们自定义显示样式:
3. 效果演示
为了演示上面的三种情况的Snackbar,写个测试的布局文件:
这个演示Activity的代码:
演示图片效果:
4. 结合CoordinatorLayout 和 FloatingActionButton展现不一样的风采
设计库中的CoordinatorLayout 是一个让其子view之间的更好地交互的容器,比如:当Snackbar出现的时候,FloatingActionButton则会浮动显示在Snackbar,而不会发生控件重叠的现象。
activity_snackbar.xml
设计库中的一些组件用到了额外自定义的属性,所以需要引入相应的命名控件
SnackbarActivity.java
其他和上面都基本一样,就是把Snackbar.make()的一个参数换成了CoordinatorLayout对象的实例,这样才可以让CoordinatorLayout发挥其艺术般的交互效果。
运行效果图:
参考文章:http://www.androidhive.info/2015/09/android-material-design-snackbar-example/
参考文章:http://www.truiton.com/2015/06/android-snackbar-example/
另一个比较有趣的设计库中的UI组件是Snackbar,它的作用和Toast类似,显示吐司,但Snackbar的特别之处在于Snackbar显示的提示信息可以和用户交互,更好地获取用户反馈信息。同时,它显示的吐司带有动画效果,从屏幕下方慢慢展开显示。
引用设计库中的组件,需要引入相应的包:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' }
1. 简单的Snackbar
Snackbar使用很简单,一个简单的Snackbar的使用如下所示:
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "I am Simple Snackbar", Snackbar.LENGTH_SHORT); snackbar.show();
2. 带有动作反馈的Snackbar
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); snackbar.show();
调用Snackbar的setAction()方法,第一参数是点击按钮显示的文本,第二个当然是点击事件监听。
3. 自定义显示样式的Snackbar
Snackbar是一个UI组件,它提供了一些接口(方法)让我们自定义显示样式:
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); // 改变右边反馈按钮字体颜色 snackbar.setActionTextColor(Color.YELLOW); // 其实我们看到的提示信息是一个TextView(子类) View sbView = snackbar.getView(); TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(Color.BLUE); snackbar.show();
3. 效果演示
为了演示上面的三种情况的Snackbar,写个测试的布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:onClick="showSimpleSnackbar" android:layout_width="match_parent" android:text="simple sanckbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> <Button android:onClick="showFeedbackSnackbar" android:layout_width="match_parent" android:text="with feedback snackbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> <Button android:onClick="showCustomStyleSnackbar" android:layout_width="match_parent" android:text="Custom Style snackbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> </LinearLayout>
这个演示Activity的代码:
package com.example.lt.meterialdesign;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by lt on 2016/3/17.
*/
public class SnackbarActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_snackbar);
}
public void showSimpleSnackbar(View view) {
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "I am Simple Snackbar", Snackbar.LENGTH_SHORT); snackbar.show();
}
public void showFeedbackSnackbar(View view){
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); snackbar.show();
}
public void showCustomStyleSnackbar(View view){
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); // 改变右边反馈按钮字体颜色 snackbar.setActionTextColor(Color.YELLOW); // 其实我们看到的提示信息是一个TextView(子类) View sbView = snackbar.getView(); TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(Color.BLUE); snackbar.show();
}
}
演示图片效果:
4. 结合CoordinatorLayout 和 FloatingActionButton展现不一样的风采
设计库中的CoordinatorLayout 是一个让其子view之间的更好地交互的容器,比如:当Snackbar出现的时候,FloatingActionButton则会浮动显示在Snackbar,而不会发生控件重叠的现象。
activity_snackbar.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/coordinatorLayout" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <RelativeLayout android:layout_width="match_parent" android:background="#00f" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:text="Snackbar" android:textSize="20sp" android:layout_margin="10dp" android:textColor="#fff" android:layout_height="wrap_content"/> </RelativeLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="20dp" android:layout_marginTop="60dp" android:paddingRight="20dp" > <Button android:onClick="showSimpleSnackbar" android:layout_width="match_parent" android:text="simple sanckbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> <Button android:onClick="showFeedbackSnackbar" android:layout_width="match_parent" android:text="with feedback snackbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> <Button android:onClick="showCustomStyleSnackbar" android:layout_width="match_parent" android:text="Custom Style snackbar" android:layout_margin="20dp" android:layout_height="wrap_content"> </Button> </LinearLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginRight="20dp" android:src="@drawable/abc_ic_menu_cut_mtrl_alpha" app:fabSize="normal" app:layout_anchor="@id/coordinatorLayout" app:layout_anchorGravity="bottom|right|end"/> </android.support.design.widget.CoordinatorLayout>
设计库中的一些组件用到了额外自定义的属性,所以需要引入相应的命名控件
SnackbarActivity.java
package com.example.lt.meterialdesign; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; import android.widget.Toast; /** * Created by lt on 2016/3/17. */ public class SnackbarActivity extends AppCompatActivity { private CoordinatorLayout mCoordinatorLayout; private Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_snackbar); mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout); } public void showSimpleSnackbar(View view) { Snackbar snackbar = Snackbar.make(mCoordinatorLayout, "I am Simple Snackbar", Snackbar.LENGTH_SHORT); snackbar.show(); } public void showFeedbackSnackbar(View view){ Snackbar snackbar = Snackbar.make(mCoordinatorLayout, "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); snackbar.show(); } public void showCustomStyleSnackbar(View view){ Snackbar snackbar = Snackbar.make(mCoordinatorLayout, "点击右边的反馈按钮", Snackbar.LENGTH_SHORT); snackbar.setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackbarActivity.this, "hello", Toast.LENGTH_SHORT).show(); } }); // 改变右边反馈按钮字体颜色 snackbar.setActionTextColor(Color.YELLOW); // 其实我们看到的提示信息是一个TextView(子类) View sbView = snackbar.getView(); TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(Color.BLUE); snackbar.show(); } }
其他和上面都基本一样,就是把Snackbar.make()的一个参数换成了CoordinatorLayout对象的实例,这样才可以让CoordinatorLayout发挥其艺术般的交互效果。
运行效果图:
参考文章:http://www.androidhive.info/2015/09/android-material-design-snackbar-example/
参考文章:http://www.truiton.com/2015/06/android-snackbar-example/
相关文章推荐
- 高逼格UI-ASD(Android Support Design)
- 让jquery.tmpl支持序号${index}
- ffmpeg相关网页
- PLsql设置
- Chrome通过Native Message 扩展程序获取windows MAC地址
- hdu5643 King's Game(约瑟夫环+线段树)
- LINUX CENTOS6.5 安装 SVN 以前权限的设置
- topshelf
- 【数字图像处理】浮雕效果和倒影效果
- HTML5 - 用<figure/>添加插图和图题
- 二叉树相关算法实现-iOS
- #1014 : Trie树
- Android 测试类工具
- 8个方法让你成为更优秀的程序员
- 脚本完成分区格式化
- 搭建高可用mongodb集群—— 副本集1
- Jetty 学习(一)
- 全球股市指数缩写及开盘时间
- tomcat架构分析(connector BIO 实现)
- sublime text3安装html模板