android 新版的设计规范(Material Design)
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包中比较重要的一些类:
- android.support.design.widget.CoordinatorLayout
- android.support.design.widget.AppBarLayout
- android.support.design.widget.CollapsingToolbarLayout
- android.support.v7.widget.Toolbar
- android.support.v4.widget.DrawerLayout
- android.support.design.widget.NavigationView
- android.support.design.widget.TabLayout
- android.support.design.widget.FloatingActionButton
- android.support.v7.widget.RecyclerView
- android.support.v4.widget.SwipeRefreshLayout
- android.support.design.widget.TextInputLayout
- 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)相关推荐
- Android(Lollipop/5.0) Material Design(六) 使用图像
Material Design列 Android(Lollipop/5.0) Material Design(一) 简单介绍 Android(Lollipop/5.0) Material Design ...
- Android(Lollipop/5.0) Material Design(七) 自定义动画
Material Design系列 Android(Lollipop/5.0) Material Design(一) 简介 Android(Lollipop/5.0) Material Design( ...
- Android UI 设计规范 ~Material Design
Material Design是一个给视觉.动态或是跨平台互动的全面性指南,Android现在都有支援app的Material Design 安卓上严格遵循着栅格化系统,和平面设计一样.一切都是遵循8 ...
- Android 分享会:Material Design 在 Android 中的应用
前言 我刚来这个公司的时候,每个周三都会有分享会,主题自定,分享对象尽量是面向大众,一开始觉得不错,但是到后面发现分享的内容不是那么有营养,而且积极性不是很高,都是当做任务进行分享. 程序员因为较为腼 ...
- Material Design设计规范
作为技术开发者需不需要了解设计规范?个人认为非常需要,一个交流的需要,另一就是了解相关的设计才能储备相应地知识,知道UI开发的方向.这问题非常希望读者能留言讨论. **Android**的设计风格变迁 ...
- (10.1.4) Material Design设计规范
下面的内容是在<移动互联网沙龙开年篇>做的一点分享,关于Material Design设计规范相关的. 作为技术开发者需不需要了解设计规范?个人认为非常需要,一个交流的需要,另一就是了解相 ...
- Android Material Design按钮样式设计
Today we'll dive deep into Android Buttons in Material Design and develop an application that showca ...
- Android开发的UI设计——Material Design
前言 Material Design 是用于指导用户在各种平台和设备上进行视觉.动作和互动设计的全面指南.如需在您的 Android 应用中使用 Material Design,请遵循 Materia ...
- Android Material Design Icon Genenerator 插件为个人开发者提供 Icon 图标大全
前言 如果你作为个人开发者,没有美工小姐姐的情况下,项目中的图标 icon 很是苦恼.之前用过阿里巴巴图标库 Iconfont,后来发现 Android studio 中有一个很牛逼的 icon 插件 ...
最新文章
- 最新(2019/3)CSDN博客Markdown编辑格式说明,包含效果图
- 002-Zabbix-网络设备自动监控(cisco)
- 从零单排学Redis【铂金一】
- [转]SQL语句资料
- 2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好
- RAID卡的安装配置
- linux添加计划任务(转载)
- python中sys.argv[]的使用
- Ps 初学者教程,如何使用色阶功能提高照片的对比度和亮度?
- 序列化Image到byte[]
- [CF617E]XOR and Favorite Number/[CQOI2018]异或序列
- 图书管理系统项目开发计划书
- foxmail设置,服务器备份(很实用)
- 小码哥C++:第一课
- 周末作业-循环练习题(未完)
- An internal error occurred during: Add Deployment.
- Java后台框架篇--Struts与SSH
- @优秀的你!CSDN高校俱乐部主席招募!
- Java,Swing 模拟在线考试系统(五:题目、图片处理+按钮功能+倒计时处理+提交查看成绩)
- xlsx筛选近三年学计算机,计算机二级Office:Excel数据筛选和分类汇总
热门文章
- Linux下进行C/C++编程配置
- 解决CMake Error: The source directory “*“ does not appear to contain CMakeLists.txt.
- 无忧资源库(电子书籍)
- 开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务
- DianNao系列加速器总结(1)——架构与运算单元
- Less、Sass\Scss
- 阿里云RDS导出数据库结构整理工具
- 自媒体1000W+推荐爆文分析,这么写标题,不火也难
- 计算机受控文件夹管理,自定义受控文件夹访问
- 35岁转行,是我人生中最正确的选择