I still believe that the stars will speak, through the summer and winter snow fence after, you will arrive.

Google发布android 5.0版本后并且发布Material Design设计标准,但是在android4.0版本与5.0版本可谓有着天然差距,对于整个项目的重新梳理变得困难。而Material Design的设计规范在众多的主流App中也不是被广泛应用。

本次着重整理关于Design包中的各大控件的使用。

gradle.build中添加依赖:

compile 'com.android.support:design:25.3.1'

对于androidstudio的compile依赖部分不了解的朋友,可以查看我的一篇文章:module进阶并将其上传至Jcenter仓库

在引用过后,该包会被引用在本地中:

关于部分的source code 可以进行查看。


一下是Design包中比较重要的一些类:

  1. android.support.design.widget.CoordinatorLayout
  2. android.support.design.widget.AppBarLayout
  3. android.support.design.widget.CollapsingToolbarLayout
  4. android.support.v7.widget.Toolbar
  5. android.support.v4.widget.DrawerLayout
  6. android.support.design.widget.NavigationView
  7. android.support.design.widget.TabLayout
  8. android.support.design.widget.FloatingActionButton
  9. android.support.v7.widget.RecyclerView
  10. android.support.v4.widget.SwipeRefreshLayout
  11. android.support.design.widget.TextInputLayout
  12. android.support.design.widget.TextInputEditText

android.support.design.widget.CoordinatorLayout

关于CoordinatorLayout是一个类似于FrameLayout,但是在Coordinator中功能更加强大,且与design包中相关的Layout联合使用会有更加不一样的效果。

关于Behavior的探索

在整个design的开发中,behavior的属性应用也有很多

app:layout_behavior="@string/appbar_scrolling_view_behavior"

对于behavior属性是属于CoordinatorLayout中的。

所以在实际的开发中,我们可以定制属于我们需求的Behavior。

step1:创建自己的Behavior并继承CoordinatorLayout.Behavior

/**** 自定义的Behavior** 两种设定模式** 1:在代码中设置** 2:在布局中,实现两个参数的构造方法*/public class myBehavior extends CoordinatorLayout.Behavior {private static final String TAG = "myBehavior";public myBehavior(Context context, AttributeSet attrs) {super(context, attrs);}/**** @param coordinatorLayout* @param child* @param directTargetChild* @param target* @param nestedScrollAxes* @return  返回值是否关心*/@Overridepublic boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) {
//        return super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);return true;}/*** 滚动* @param coordinatorLayout* @param child* @param target* @param dxConsumed* @param dyConsumed//向上滑动的距离* @param dxUnconsumed* @param dyUnconsumed*/@Overridepublic void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);Log.i(TAG, "onNestedScroll: dxConsumed--------------》"+dxConsumed);Log.i(TAG, "onNestedScroll: dyConsumed--------------》"+dyConsumed);Log.i(TAG, "onNestedScroll: dxUnconsumed--------------》"+dxUnconsumed);Log.i(TAG, "onNestedScroll: dyUnconsumed--------------》"+dyUnconsumed);//垂直滚动只需要判断y的值if(dyConsumed>0){//向上滚动,干什么事情呢?ViewCompat.animate(child).scaleX(0).scaleY(0).start();}else{//向下滚动ViewCompat.animate(child).scaleX(1).scaleY(1).start();}}
}

step2:应用在自己的实际效果中有两种方式

1: 直接在布局中使用,但是前提是你的控件必须是CoordinatorLayout的直接子布局

 <TextViewandroid:id="@+id/tv_behavior"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="wedfrend"android:textColor="@color/colorPrimary"android:textSize="16sp"  app:layout_behavior="wedfrend.wang.materialdesign.behavior.myBehavior" />

2:在代码中进行引用:

TextView textView = (TextView) findViewById(R.id.tv_behavior);CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) textView.getLayoutParams();myBehavior myBehavior = new myBehavior();params.setBehavior(myBehavior);

AppBarLayout

<android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:fitsSystemWindows="true"app:theme="@style/Base.ThemeOverlay.AppCompat.Dark.ActionBar"><android.support.design.widget.CollapsingToolbarLayoutandroid:id="@+id/collapsing"android:layout_width="match_parent"android:layout_height="wrap_content"android:fitsSystemWindows="true"app:contentScrim="@color/colorPrimary"app:layout_scrollFlags="scroll|exitUntilCollapsed"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:scaleType="centerCrop"android:src="@mipmap/benbenla"app:layout_collapseMode="parallax" /><android.support.v7.widget.Toolbarandroid:id="@+id/behavior_toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"></android.support.v7.widget.Toolbar></android.support.design.widget.CollapsingToolbarLayout><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="12dp"android:text="wedfrend"android:textSize="16sp"/></android.support.design.widget.AppBarLayout>
控件1:Tab栏,经常与ViewPage一起使用android.support.design.widget.TabLayout

TabLayout

<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"app:tabBackground="@color/colorPrimaryDark"
<!--目标选中的下滑先颜色 -->             app:tabIndicatorColor="@android:color/holo_blue_bright"
<!-- tab的滚动模式,有两种选择  1:scrollable滚动2:fixed平分屏幕-->
app:tabMode="scrollable"
<!-- 选中的字体颜色-->
app:tabSelectedTextColor="@color/colorAccent"
<!-- 字体设置,这个只能使用这个style样式进行设置-->       app:tabTextAppearance="@android:style/TextAppearance.Large"
<!--未选中字体的颜色 -->
app:tabTextColor="@android:color/white"></android.support.design.widget.TabLayout>

之所以说TabLayout和ViewPager连用是有一个方法

//设置Tablayout的标题头部,但是要注意的是我们必须Adapter中设置一个方法,getPageTitle
tab.setupWithViewPager(viewPager);

这样可以将ViewPager和我们的TabLayout链接起来,但是需要在adapter中重写方法

 @Overridepublic CharSequence getPageTitle(int position) {return listString.get(position);}

android 新版的设计规范(Material Design)相关推荐

  1. Android(Lollipop/5.0) Material Design(六) 使用图像

    Material Design列 Android(Lollipop/5.0) Material Design(一) 简单介绍 Android(Lollipop/5.0) Material Design ...

  2. Android(Lollipop/5.0) Material Design(七) 自定义动画

    Material Design系列 Android(Lollipop/5.0) Material Design(一) 简介 Android(Lollipop/5.0) Material Design( ...

  3. Android UI 设计规范 ~Material Design

    Material Design是一个给视觉.动态或是跨平台互动的全面性指南,Android现在都有支援app的Material Design 安卓上严格遵循着栅格化系统,和平面设计一样.一切都是遵循8 ...

  4. Android 分享会:Material Design 在 Android 中的应用

    前言 我刚来这个公司的时候,每个周三都会有分享会,主题自定,分享对象尽量是面向大众,一开始觉得不错,但是到后面发现分享的内容不是那么有营养,而且积极性不是很高,都是当做任务进行分享. 程序员因为较为腼 ...

  5. Material Design设计规范

    作为技术开发者需不需要了解设计规范?个人认为非常需要,一个交流的需要,另一就是了解相关的设计才能储备相应地知识,知道UI开发的方向.这问题非常希望读者能留言讨论. **Android**的设计风格变迁 ...

  6. (10.1.4) Material Design设计规范

    下面的内容是在<移动互联网沙龙开年篇>做的一点分享,关于Material Design设计规范相关的. 作为技术开发者需不需要了解设计规范?个人认为非常需要,一个交流的需要,另一就是了解相 ...

  7. Android Material Design按钮样式设计

    Today we'll dive deep into Android Buttons in Material Design and develop an application that showca ...

  8. Android开发的UI设计——Material Design

    前言 Material Design 是用于指导用户在各种平台和设备上进行视觉.动作和互动设计的全面指南.如需在您的 Android 应用中使用 Material Design,请遵循 Materia ...

  9. Android Material Design Icon Genenerator 插件为个人开发者提供 Icon 图标大全

    前言 如果你作为个人开发者,没有美工小姐姐的情况下,项目中的图标 icon 很是苦恼.之前用过阿里巴巴图标库 Iconfont,后来发现 Android studio 中有一个很牛逼的 icon 插件 ...

最新文章

  1. 最新(2019/3)CSDN博客Markdown编辑格式说明,包含效果图
  2. 002-Zabbix-网络设备自动监控(cisco)
  3. 从零单排学Redis【铂金一】
  4. [转]SQL语句资料
  5. 2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好
  6. RAID卡的安装配置
  7. linux添加计划任务(转载)
  8. python中sys.argv[]的使用
  9. Ps 初学者教程,如何使用色阶功能提高照片的对比度和亮度?
  10. 序列化Image到byte[]
  11. [CF617E]XOR and Favorite Number/[CQOI2018]异或序列
  12. 图书管理系统项目开发计划书
  13. foxmail设置,服务器备份(很实用)
  14. 小码哥C++:第一课
  15. 周末作业-循环练习题(未完)
  16. An internal error occurred during: Add Deployment.
  17. Java后台框架篇--Struts与SSH
  18. @优秀的你!CSDN高校俱乐部主席招募!
  19. Java,Swing 模拟在线考试系统(五:题目、图片处理+按钮功能+倒计时处理+提交查看成绩)
  20. xlsx筛选近三年学计算机,计算机二级Office:Excel数据筛选和分类汇总

热门文章

  1. Linux下进行C/C++编程配置
  2. 解决CMake Error: The source directory “*“ does not appear to contain CMakeLists.txt.
  3. 无忧资源库(电子书籍)
  4. 开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务
  5. DianNao系列加速器总结(1)——架构与运算单元
  6. Less、Sass\Scss
  7. 阿里云RDS导出数据库结构整理工具
  8. 自媒体1000W+推荐爆文分析,这么写标题,不火也难
  9. 计算机受控文件夹管理,自定义受控文件夹访问
  10. 35岁转行,是我人生中最正确的选择