Material Design认识

一、关于Material Design(MD)

1、简介

从Android5.0开始引入的,是一种全新的设计语言(翻译为“原材料设计”),其实是谷歌提倡的一种设计风格、理念、原则。
拟物设计和扁平化设计一种结合体验。还吸取了最新一些科技理念。层次感:View Z轴。
ps:官网链接如下
1、官方网站
2、国内有翻译网站

2、遵循

1.对于美工:遵循MD的界面设计、图标合集。
2.对于产品经理:遵循MD界面设计、页面的跳转及动画效果、交互设计。
3.对于开发人员:参与原型设计、辅助美工原型设计的素材准备。
开发实现MD的设计----界面、动画、转场动画等等。

二、MD的使用及开发

谷歌开放以及收集了一些最新的开源的项目(很多是自己开发的),汇集到最新的support兼容支持包以及最新的5.X API里面。
例如preference,PreferenceActivity(建议结合PreferenceFragment)实现配置文件构建app常见的设置界面。

1、常见的兼容包
  • android-support-v4:最低兼容到Android 1.6系统,里面有类似ViewPager等控件。
  • android-support-v7:最低兼容到Android 2.1的系统,appcompat 。(最低兼容到3.0)等。这个工程可以让开发人员统一开发标准,在任何的系统版本下保证兼容性。(比如:Theme,value,布局,新的控件,新的动画特效实现)所以现在AndrodStudio一般都会直接创建项目的时候就直接帮你新建或者引入了一个叫做appcompat(常见控件的兼容包)的依赖。

(1)关系总结:

1、android-support-v4包:含有ViewPager等控件,一般viewpager我们使用的多。
2、android-support-v7:含有 appcompatXxx常见系列兼容控件(如下图)
3、com.android.support:design:x.x.x:design 包依赖,含有一些material design控件:

0、recyclerview
1、CoordinatorLayout
2、CollapsingToolbarLayout
3、AppBarLayout
4、TabLayout
5、CardView
6、FloatingActionButton
7、NestedScrollView
8、NavigationView
9、BottomNavigationView
10、TextInputLayout
11、更多。。。。略
参考:Android Design支持包控件介绍
ps:这些控件也都是V7类型的兼容包(例如:android.support.v7.widget.CardView),不仅具有material design特性,还具有向下兼容的特点。

4、单独引入的依赖:其实support:design内的控件我们也可以单独添加依赖、比如、recyclerview、cardview等等、、、

在这里插入图片描述

v7包的常见兼容控件图

(2)v4、v7包组分详解

参考文章:彻底弄清support支持库,以及v4 v7重复依赖问题深究
写的真不错参考文章,可以看下。。。。

2、使用support-v7 兼容包进行全局样式的控制

对于初学者而言,有时候看到项目中会有values-v11,values-v14,values-v19等文件夹,里面有dimens,styles等。那具体代表是什么呢?

(1)代表含义

values-v11代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xml
values-v14代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml
values-v19代表在API 19 +的设备上,用该目录下的styles.xml代替res/values/styles.xml

所以,在不同版本上的手机跑项目时,会加载不同的样式。例如评分控件的背景色不同。

(2)在sdk manager中可以看到目前为止的android sdk版本和api对应的关系

26 -> android 8.0
25 -> android 7.1.1
24 -> android 7.0
23 -> android 6.0
22 -> android 5.1
21 -> android 5.0
20 -> android 4.4w
19 -> android 4.4

(3)兼容包全局样式控制简介
打开values 的style 文件

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

    </style>

</resources>

1、colorPrimary:主色
2、colorPrimaryDark:主色–深色,一般可以用于状态栏颜色、底部导航栏
3、colorAccent:代表各个控件的基调颜色–CheckBox、RadioButton、ProgressBar等等

出了上面默认的还有好多我们可以改变的:

在这里插入图片描述

很多我们都可以自定义设置,太多啦,这里先简单了解下。。。

3、常见的兼容控件

1、android.support.v7.app.AlertDialog
2、ProgressBar 的style="@style/Widget.AppCompat.ProgressBar.Horizontal"设置
3、SwipeRefreshLayout下拉刷新(v4包内)
4、android.support.v7.widget.LinearLayoutCompat (Compat系列控件)
5、PopupWindow
6、ListPopupWindow
7、PopupMenu

(1)栗子 带分隔线的LinearLayoutCompat

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat
        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"
        app:divider="@drawable/abc_list_divider_mtrl_alpha"
        app:showDividers="beginning|middle"
        android:orientation="vertical"
        >

    <TextView
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello World!"/>
    <TextView
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello World!"/>
    <TextView
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello World!"/>

</android.support.v7.widget.LinearLayoutCompat>

效果: 容器控件自带分割线,作用于子view。
使用十分简单只需要添加app:divider属性指定分割线,然后通过app:showDividers来展示分各项出现的位置。
参考:Material Design系列探究之LinearLayoutCompat

end

猜你喜欢

转载自blog.csdn.net/qq_38350635/article/details/100520276