Google在android5.0之后推出新设计标准Material Design,为了能在低版本上使用Material Design,google发布了Android Support Design支持库。

  下面我们看看该库中提供的一些组件的用法

  SnackBar该组件是介于Toast和Dialog之间的一种提示信息组件,用法和Toast有点类似。SnackBar中常用的方法如下:

1、public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration):静态方法,使用字符串资源构建一个SnackBar对象
2、public static Snackbar make(@NonNull View view, @NonNull CharSequence text,
        @Duration int duration) :静态方法,用于构建一个SnackBar对象。
3、public Snackbar setAction(@StringRes int resId, View.OnClickListener listener):设置SnackBar的动作
4、public Snackbar setAction(CharSequence text, final View.OnClickListener listener):设置SnackBar动作
5、public Snackbar setActionTextColor(ColorStateList colors):设置操作文字颜色
6、public void show():显示SnackBar。
  具体使用案例代码如下:
Snackbar.make(v,"别乱点!!!!",Snackbar.LENGTH_LONG).setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
show.setText("你点了什么?");
}
}).show();

   FloatingActionButton组件是一个项目中常见的圆形按钮,该组件是继承自ImageView,该组件提供了一些属性用于设置样式,具体如下:

1、app:borderWidth:边框的宽度

2、app:backgroundTint:FloatingActionButton的背景色

3、app:rippleColor:FloatingActionButton被点击时的颜色

4、app:fabSize:FloatingActionButton的大

5、app:elevation:FloatingActionButton的海拔高度

  CoordinatorLayout组件是一个布局组件,实现了Material Design中滚动动画效果,主要功能一是作为布局容器,而是协调子View实现滚动动画效果。

  使用以上三个组件完成案例效果如下图所示:


  具体的布局文件内容如下:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
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"
android:fitsSystemWindows="true"> <TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp" /> <android.support.design.widget.FloatingActionButton
android:id="@+id/btnFloating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"
app:backgroundTint="#ff0000"
app:borderWidth="5dp"
app:elevation="10dp"
app:fabSize="normal"
app:pressedTranslationZ="5dp"
app:rippleColor="#00ff00" /> </android.support.design.widget.CoordinatorLayout>

  TabLayout是tab容器,有了TabLayout我们可以方便的实现Tabs+ViewPager+Fragment的经典界面结构。TabLayout是继承了HorizontalScrollView,所有具备ScollView的特性。使用如下属性可定制Tab的显示样式

1、  app:tabIndicatorColor:指示器的颜色
2、  app:tabIndicatorHeight:指示器的高度
3、  app:tabSelectedTextColor:选中Tab的文字颜色
4、  app:tabMode:Tab的模式
5、  app:tabTextAppearance:Tab字体样式
  使用TabLayout案例的具体展示效果如下:

  在该案例中要注意的地方有两点:

1、ViewPager的adapter要实现getPageTitle方法,TabLayout中的Tab中文字内容从该方法中获取。
2、要先为ViewPager设置adapter,后再依次调用TabLayout的方法
  a)  setTabsFromPagerAdapter
  b)  setupWithViewPager
  具体代码如下:
public class TabsActivity extends AppCompatActivity {

    private Toolbar toolbar;
private TabLayout tabs;
private ViewPager viewPager; private List<View> pagerData ;
String[] titles=new String[]{"推荐","热点","烟台","社会","视频"}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs_layout);
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("杰瑞教育");
actionBar.setDisplayHomeAsUpEnabled(true); tabs = (TabLayout)findViewById(R.id.tabs);
viewPager=(ViewPager)findViewById(R.id.viewPager); initPagerData();
MyPageAdapter adapter = new MyPageAdapter();
viewPager.setAdapter(adapter);
tabs.setTabsFromPagerAdapter(viewPager.getAdapter());
tabs.setupWithViewPager(viewPager);
} private void initPagerData(){
pagerData = new ArrayList<>();
for(int i=0;i<titles.length;i++) {
TextView textView = new TextView(this);
textView.setText(titles[i]);
pagerData.add(textView);
}
} private class MyPageAdapter extends PagerAdapter{
@Override
public int getCount() {
return pagerData.size();
} @Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
} @Override
public Object instantiateItem(ViewGroup container, int position) {
View view = pagerData.get(position);
container.addView(view);
return view;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(pagerData.get(position));
} @Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
}
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:
 

Android之ASD组件(一)的更多相关文章

  1. Android消息传递之组件间传递消息

    前言: 上篇学习总结了Android通过Handler消息机制实现了工作线程与UI线程之间的通信,今天来学习一下如何实现组件之间的通信.本文依然是为学习EventBus做铺垫,有对比才能进步,今天主要 ...

  2. Android的四大组件之Activity

    Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...

  3. android中四大组件之间相互通信

    好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...

  4. Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...

  5. Android开发之 Android 的基本组件的概述

    Android是一个为组件化而搭建的平台,它的应用是由一些零散的有联系的组件组成,并通过AndroidManifest.xml文件 把它们绑定起来. Android常用的组件有: Activity(活 ...

  6. Android的四大组件

    Android的四大组件:Activity.Service.BroadcastReceiver.Content Provider. Content Provider 属于Android应用程序的组件之 ...

  7. Android中Intent组件详解

    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...

  8. Android的主要组件

    (一)Activity(活动) 作用:提供可视化用户界面 只能通过setContentView(View)来显示指定组件 View组件是所有UI控件.容器控件的基类,View组件就是android应用 ...

  9. Android之桌面组件AppWidget

    转载:Android之桌面组件App Widget初探 Android开发应用除了程序应用,还有App Widget应用.好多人会开发程序应用而不会开发App Widget应用.本帖子就是帮助大家学习 ...

随机推荐

  1. 吴恩达-coursera-机器学习-week4

    第八.神经网络:表述(Neural Networks: Representation) 8.1 非线性假设 8.2 神经元和大脑 8.3 模型表示1 8.4 模型表示2 8.5 样本和直观理解1 8. ...

  2. hdu 5784 How Many Triangles 计算几何,平面有多少个锐角三角形

    How Many Triangles 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5784 Description Alice has n poin ...

  3. Redis主从同步分析(转)

    一.Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接 ...

  4. 用.Net如何访问Linux下目录

    很多Windows下的应用需要访问和监控Linux下的目录,本文便介绍如何实现. 只需要搭建配置samba服务,即可将Linux下的目录变得如同Windows下共享可写. 1.服务查询 默认情况下,L ...

  5. asp.net core中的razor页面

    Razor 页面(Razor Pages)是 ASP.NET Core 2.0 中新增的一种Web页面模型,相对MVC形式更加简单易用,可以说是一个服务端的MVVM模型,本文简单的介绍一下它的用法. ...

  6. php里面bcadd是什么意思

    PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述 bcadd — 加法bccomp — 比较bcdiv — 相除bcmo ...

  7. fritshoogland 大神ORACLE :pga-memory-operation latch

    https://fritshoogland.wordpress.com/2017/03/01/oracle-12-2-wait-event-pga-memory-operation/#comment- ...

  8. lodash用法系列(6),函数种种

    Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.clou ...

  9. C#复制数组的两种方式,以及效率比较

    如何高效地进行数组复制? 如果把一个变量值复制给另外一个数组变量,那么2个变量指向托管堆上同一个引用. 如果想在托管堆上创建另外的一份数组实例,通常使用Array.Copy方法. class Prog ...

  10. Xcode工程文件打不开:cannot be opened because the project file cannot be parsed

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed ...