Android Design支持包控件介绍

来源:互联网 发布:周有贵seo教程 编辑:程序博客网 时间:2024/06/07 17:16

Android5.0是有史以来最重要的安卓版本之一,这其中有很大部分要归功于material design的引入,这种新的设计语言让整个安卓的用户体验焕然一新。歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支持库,让开发者更容易的实现材料设计的效果。这篇文章将介绍常用的一下几种控件。

1、CoordinatorLayout

用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。继承自framlayout,是framlayout的扩展类,比他功能更加强大,能够支持很多绚丽的效果,一般作为父布局。

2、CollapsingToolbarLayout

用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠,伸缩的App Bar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View,主要是提供一个可折叠的Toolbar容器,对容器中的不同View设置layout_collapseMode折叠模式,来达到不同的折叠效果。作为AppBarLayout的子布局进行配合使用。通常有两个子控件,一个是ImageView,一个是Toobar,Toobar主要是用来替换ActionBar的,所以在使用之前首先要隐藏掉。可以通过代码的方式隐藏,也可以通过配置文件的方式,还可以通过清单文件配置隐藏:

(1)在我们的styles.xml文件中的AppTheme标签中加入如下两行:

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

(2在清单文件中加入

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

相关属性设置如下:

app:contentScrim="@android:color/holo_blue_dark";//titebar的背景颜色
app:title="赵丽颖";//titlebar所
展示的字体
app:scrimAnimationDuration="50";//该属性控制toolbar收缩时,颜色变化的动画持续时间。即颜色变为contentScrim所指定的颜色进行的动画所需要的时间。
app:expandedTitleGravity="bottom|right";//titebar展开后字体显示的位置
app:collapsedTitleGravity="center_horizontal";//titlebar到最上边时候的显示位置
app:titleEnabled="true";//是否显示标题文本
app:expandedTitleMargin="20dp";//展开之后的文字margin
android:fitsSystemWindows="true";//预留空间,能够实现沉浸式状态栏效果
app:layout_collapseParallaxMultiplier="0.7";//设置视差的系数,介于0.0-1.0之间。越大视差越大

android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar";//主题颜色
app:layout_scrollFlags="scroll|exitUntilCollapsed";//支持滑动收缩效果

子类可收缩的View:
app:layout_collapseMode="parallax";//View随着控件的滑动而收缩

Toolbar:
app:layout_collapseMode="pin";//pin收缩后固定于最顶端,parallax随着控件滑动收缩而收缩

3、AppBarLayout

AppBarLayout主要用来设置头布局,继承自linearlayout,他包含CollapsingToolbarLayout子布局和其他布局,CollapsingToolbarLayout能够实现视差伸缩滑动效果,其他子布局一般是导航栏,例如TabLayout。

4、TabLayout

TabLayout:类似于viewpagerindicator,radiobutton+viewpager,实现叶签滑动效果http://blog.csdn.net/yoonerloop/article/details/70766002点击打开链接

5、CardView

CardView是在安卓5.0提出的卡片式控件。

app:cardBackgroundColor="#6699FF";//设置选项卡的背景
app:cardCornerRadius="7dp";//设置选项卡的圆角大小
app:cardElevation="7dp";//设置选项卡的阴影背景大小
app:cardMaxElevation="10dp"//设置z轴的最大高度值
app:cardUseCompatPadding="true";//兼容android5.0以上版本两个卡片之间的距离失效问题
android:clickable="true";//点击产生水波纹效果
padding设置:
app:contentPadding 设置内容的padding
app:contentPaddingLeft 设置内容的左padding
app:contentPaddingTop 设置内容的上padding
app:contentPaddingRight 设置内容的右padding
app:contentPaddingBottom 设置内容的底padding

6、FloatingActionButton

android:layout_gravity="end|bottom";//在布局上的显示 位置
app:borderWidth="0dp";//按钮内边框阴影带边框大小
app:backgroundTint="#f00";//按钮图片外围颜色
app:elevation="6dp";//按钮外边框阴影带的大小
app:pressedTranslationZ="52dp";//点击后阴影扩散的效果
app:rippleColor="#33728dff";//按钮边框阴影的颜色,默认取的是theme中的colorControlHighlight。
android:clickable="true";//点击产生水波纹效果

7、NestedScrollView

和ScrollView一样,区别是对新的控件做了一些兼容,类似于listview与recycleView。

8、NavigationView

NavitationView就是DrawerLayout侧边栏的那个菜单。这个菜单整体上分为两部分,上面一部分叫做HeaderLayout,下面的那些点击项都是menu。HeaderLayout是一个布局,根据需求设置,menu主要是每个item。

android:layout_gravity="left"属性表示该View是左边的滑出菜单。

app:headerLayout="@layout/header_layout";//表示引用一个头布局文件。

app:menu="@menu/main";//表示引用一个menu作为下面的点击项item。

app:itemIconTint="@color/blue";//标识为图片设置颜色,默认是灰色。

navigationView.setItemIconTintList(null); //设置图片颜色为图片显示的默认颜色

app:theme="@style/MenuTextStyle";//设置item字体大小,背景颜色等等主题

menu设置:

<item
    android:id="@+id/file"
    android:icon="@mipmap/ic_launcher"
    android:title="设置"/>

android:icon="@mipmap/ic_launcher";//设置item的左边图标

android:title="设置";//设置item右侧文字

默认没有分割线,如果需要分割线则需要在item外层嵌套一个<group android:id="@+id/g1"></group>,并加上id.

 View headerView = navigationView.getHeaderView(0);//获取头布局的第一个控件

//设置item点击事件

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {  
    @Override  
    public boolean onNavigationItemSelected(MenuItem item) {  
        //在这里处理item的点击事件  
        return true;  
    }  
});  

9、BottomNavigationView

BottomNavigationView是Google推出的底部导航栏组件,在没有这些底部导航组件之前,开发者多使用的是RadioGroup,他的用法和上面的NavitationView比较类似,看看他的属性:

app:itemIconTint是设置底部导航按钮图标颜色的属性

app:itemTextColor是设置底部导航按钮文字颜色的属性

xml中的布局如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout    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:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.administrator.glidedemo.MainActivity">    <android.support.v4.view.ViewPager        android:layout_width="match_parent"        android:layout_height="match_parent">    </android.support.v4.view.ViewPager>    <android.support.design.widget.BottomNavigationView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="?android:attr/windowBackground"        app:itemIconTint="@drawable/tab_text_color_selector"        app:itemTextColor="@drawable/tab_text_color_selector"        app:menu="@menu/navigation">    </android.support.design.widget.BottomNavigationView></LinearLayout>
menu文件夹和上面的也很类似:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/tab_one"        android:icon="@drawable/tab_text_color_selector"        android:title="综合"/>    <item        android:id="@+id/tab_two"        android:icon="@drawable/tab_text_color_selector"        android:title="本地"/>    <item        android:id="@+id/tab_three"        android:icon="@drawable/tab_text_color_selector"        android:title="我的"/></menu>
在Activity中点击事件的切换的监听如下:

 mNavigationView.setOnNavigationItemSelectedListener(                new BottomNavigationView.OnNavigationItemSelectedListener() {                    @Override                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {                        mTextView.setText(item.getTitle().toString().toUpperCase());                        return true;                    }                });    }

注意:这控件有以下坑:

1、底部导航栏高度默认是 56dp。
2、菜单元素只能是 3~5 个。如果个数少于3个或者多于5个,则会报错。
3、菜单元素如果大于3个,会出现切换时选中菜单的放大效果,无法设置,只能通过反射取消。
4、底部导航栏背景颜色默认是当前样式的背景色(白色/黑色),你可以使用 app:itemBackground="@android:color/black" 来更改。

以上就是material design包中常用的控件,以后还会陆续补充,关于这些新控件的应用见下一篇博文:点击打开链接

http://blog.csdn.net/yoonerloop/article/details/71411499



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 耳朵掏伤了很痛怎么办 掏伤耳朵发炎了怎么办 耳朵被掏发炎了怎么办 打的耳洞化脓了怎么办 打了耳洞流脓了怎么办 打了耳洞发炎怎么办 打了耳洞化脓了怎么办 3岁宝宝耳朵流脓怎么办 耳朵里面是湿的怎么办 耳朵里天天很痒怎么办 身上长湿疹很痒怎么办 嗓子干疼耳朵痒怎么办 上火了耳朵嗡嗡响怎么办 太阳凹颧骨外扩怎么办 4岁儿童脊柱侧弯怎么办 瘦的人得多囊怎么办 智齿刚长出来该怎么办 宝宝耳朵睡尖了怎么办 睡觉压的耳朵疼怎么办 月子里奶水越来越少怎么办 月子里生气回奶了怎么办 儿童疫苗本丢了怎么办 跖骨2-5骨折了怎么办 耳朵被水堵住了怎么办 耳朵一直流黄水怎么办 两个月宝宝脐疝怎么办 拔牙后一直渗血怎么办 耳朵滴药水堵了怎么办 刚打的耳洞化脓怎么办 耳朵进水了一直嗡嗡响怎么办 婴儿游泳呛水了怎么办 孩子游泳呛水了怎么办 婴儿洗澡呛水了怎么办 小孩脸上长湿疹老是不好怎么办 油耳堵住了耳朵怎么办 耳屎突然变湿该怎么办 小孩有耳屎好硬怎么办 小孩的耳屎深硬怎么办 1岁宝宝喉咙发炎怎么办 牙旁边的肉疼怎么办 鼻头软骨捏的痛怎么办