大家对于v4包都已经很熟悉了,现在在新建android项目时,v4包是默认导入的。
v7包需要v4包的支持,在新建android项目时,v7包默认不导入,我们需要自己导入。主要对3.0以下版本提供ActionBar支持,以及SearchView,PopupMenu等控件的支持。
我们看看v7 都有什么实用的东西,然后再具体介绍
1. recyclerview
com.android.support:recyclerview-v7:xx
可以用来代替ListView / GridView,(现ListView,GirdView,瀑布流等效果是非常容易的)。但也有不足的地方,它没有提供添加头尾的方法,对item 的监听,分割线,这个需要我们自己实现。
目前这个控件在开发中很流行,网的例子也特别多,我就不多做介绍。推荐博客 http://blog.youkuaiyun.com/lmj623565791/article/details/45059587
2 . Toolbar
android.support.v7.widget.Toolbar
ToolBar直接成了Layout中可以控制的东西是个容器,相对于过去的actionbar来说,设计与可操控性大幅提升。
使用方法:
1.引用v7 的appcompat 包 添加依赖
dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.1.1'
}
2.使用Toolbar的Activity要继承AppCompatActivity
3.需要更改主题为NoActionbBar的主题
4.在布局文件中引用Toolbar , 需引用v7包中的Toolbar , 默认的Toolbar 仅支持 API >= 21 (android 5.0)的系统
5.在代码中调用setSupportActionBar(toobar) 方法将Toolbar绑定到当前界面
推荐网站两个结合着看
http://blog.youkuaiyun.com/javazejian/article/details/50451853
http://www.jianshu.com/p/79604c3ddcae
http://blog.youkuaiyun.com/jdsjlzx/article/details/41441083/
3. TabLayout
android.support.design.widget.TabLayout 控件
封装好了tab页和指示器 ,这个非常的实用。
常用方法有
addTab(TabLayout.Tab tab, boolean setSelected) //添加Tab名称
addTab(TabLayout.Tab tab, int position)
addTab(TabLayout.Tab tab, int position, boolean setSelected)
newTab() //创建Tab
setOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener) //设置监听
setTabTextColors(int normalColor, int selectedColor) //设置被选中Tab的文字的颜色
setSelectedTabIndicatorColor(int color) //设置被选中Tab指示条的颜色
setSelectedTabIndicatorHeight(int height) //设置被选中Tab指示条的高度
setTabMode(int mode) //设置Tab的模式 MODE_FIXED/MODE_SCROLLABLE
布局中常用属性
tabIndicatorColor://菜单下方移动的横线的颜色
tabSelectedTextColor ://菜单被选中之后的颜色
tabTextColor :// 菜单正常的颜色
app:tabTextAppearance :
//添加样式,样式主要在文字前面加一个图所用,就是textAllCaps设置成false
推荐网站
http://blog.youkuaiyun.com/chenguang79/article/details/49306339
http://www.cnblogs.com/JohnTsai/p/4715454.html
4 CoordinatorLayout
com.android.support:design.CoordinatorLayout
简单来说,CoordinatorLayout是用来协调其子view们之间动作的一个父view,而Behavior就是用来给CoordinatorLayout的子view们实现交互的,产生各种效果。
CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能:
1、作为顶层布局
2、调度协调子布局
推荐网站
http://www.bkjia.com/Androidjc/1050951.html
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0717/3196.html
5 CollapsingToolbarLayout
com.android.support:design.CollapsingToolbarLayout
提供一个可折叠的Toolbar容器,它继承至FrameLayout,对容器中的不同视图设置layout_collapseMode折叠模式,来达到不同的折叠效果
给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。
当设置了layout_behavior的控件响应起了CollapsingToolbarLayout中的layout_scrollFlags事件时,ImageView会有视差效果的向上滚动移除屏幕,当开始折叠时CollapsingToolbarLayout的背景色(也就是Toolbar的背景色)就会变为我们设置好的背景色,Toolbar也一直会固定在最顶端。
指定childView折叠模式使用
app:layout_collapseMode
值:1.parallax 视差模式 , 需要增加 app:layout_collapseParallaxMultiplier 属性 , 属性值范围为 0.0-1.0 , 必须是float类型
2.pin 固定模式
注意事项:
1.CollapsingToolbarLayout的高度必须是固定值而且要大于Toolbar的高度 , 不能使用wrap_content , 否则不会有折叠效果
2.所有需要折叠的childView必须指定app:layout_collapseMode 属性
3.如果要添加一个自动折叠的FloatingActionBar , 必须指定锚点,锚点需为CollapsingToolbarLayout的父容器
使用parallax模式的时候,app:layout_scrollFlags的属性值不能包含enterAlwaysCollapsed或enterAlways
推荐网站 http://www.jianshu.com/p/06c0ae8d9a96
http://www.open-open.com/lib/view/open1438265746378.html
6 palette
com.android.support:palette包
dependencies {
compile 'com.android.support:palette-v7:21.0.+'
}
色彩 获取视图里的颜色,我们通常就是拿它标题颜色,和沉浸的状态栏不同的是,它获取的是视图颜色,(沉浸)是透明的,
由于在Android设备中,对图像的处理有可能是耗时操作,因此,Palette类通过异步接口onGenerated回调的方法
来获得Bitmap的颜色值。Palette类获得的颜色值有以下几种类型:
Palette.Swatch a = palette.getVibrantSwatch();//有活力
Palette.Swatch b = palette.getDarkVibrantSwatch();//有活力 暗色
Palette.Swatch c = palette.getLightVibrantSwatch();//有活力 亮色
Palette.Swatch d = palette.getMutedSwatch();//柔和
Palette.Swatch e = palette.getDarkMutedSwatch();//柔和 暗色
Palette.Swatch f = palette.getLightMutedSwatch();//柔和 亮色
我们从以上颜色中可以获取到如下颜色值:
int color1 = a.getBodyTextColor();//内容颜色
int color2 = a.getTitleTextColor();//标题颜色
int color3 = a.getRgb();//rgb颜色
推荐网站
http://www.open-open.com/lib/view/open1434014850864.html
7 .AppBarLayout
com.android.support:design包.
AppBarLayout 是继承LinerLayout实现的一个ViewGroup容器组件,
AppBarLayout要点:
功能:
——让子View(AppBar)可以选择他们自己的滚动行为。
先说AppBarLayout这个类的使用,先看官方文档的描述:
AppBarLayout是一个实现了很多材料设计特性的垂直的LinearLayout,它能响应滑动事件。必须在它的子view上设置app:layout_scrollFlags属性或者是在代码中调用setScrollFlags()设置这个属性。这个类的特性强烈依赖于它是否是一个CoordinatorLayout的直接子view,如果不是,那么它的很多特性不能够使用。AppBarLayout需要一个具有滑动属性的兄弟节点view,并且在这个兄弟节点View中指定behavior属性为AppBarLayout.ScrollingViewBehavior的类实例,可以使用一个内置的string表示这个默认的实例@string/appbar_scrolling_view_behavior.
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.arenas.appbarlayouttest.MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- AppBarLayout,作为CoordinatorLayout的子类 -->
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:layout_height="wrap_content"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
<!--设置app:layout_scrollFlags=”scroll|enterAlways” 属性 -->
/>
</android.support.design.widget.AppBarLayout>
<!--NestedScrollView 是兄弟节点,或者兄弟节点的子view 一定要可以滚动 -->
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- 该属性必须设置 -->
<TextView
android:layout_width="match_parent"
android:layout_margin="20dp"
android:text="text"
android:layout_height="wrap_content"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
注意:
兄弟节点的app:layout_behavior=”@string/appbar_scrolling_view_behavior”属性很重要;
AppBarLayout子view的app:layout_scrollFlags属性很重要,其值有三个:
scroll: 所有想滚动出屏幕的view都需要设置这个flag(所以,这里的toolbar设置了),没有设置这个flag的view将被固定在屏幕顶部。
enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见(向下滚动,toolbar又出现),启用”快速返回”模式。
enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只会在最小高度处进入,只有当滚动视图到达顶部时才扩大到完整高度。
exitUntilCollapsed: 在滚动过程中,只有当视图折叠到最小高度的时候,它才退出屏幕。
注意AppBarLayout的兄弟节点(或兄弟节点的子view)一定要是可以滚动的View/ViewGroup,如:NestedScrollView,RecycleView;(据说ListView不行,木有测试了)
推荐网站 http://www.jianshu.com/p/d159f0176576
8 CardView
android.support.v7.widget.CardView
CardView 属于Support v7 里面的新的Widget. 继承于FrameLayout,
UI显示主要包括
1.边框圆角
2.有阴影Shadow
用来突出个性,比如展览,相册等。
http://blog.youkuaiyun.com/birdsaction/article/details/45197499
3 有点击效果
当使用 CardView 的场合是作为列表中的一个 Item 且直接单击 Item 有相应的操作,那么就有必要加上视觉反馈来告诉用户这个 Card 是可点击的。
直接给 CardView 加上 android:foreground=”?attr/selectableItemBackground” 这个属性会在 Lollipop 上自动加上 Ripple 效果,在旧版本则是一个变深/变亮的效果。
http://blog.youkuaiyun.com/jdsjlzx/article/details/51243716
dependencies {
compile 'com.android.support:cardview-v7:21.+'
}
9 . TextInputLayout
com.android.support:design包.
TextInputLayout 作为一个父容器,包装了 EditText。
通常单独使用 EditText 时,使用 hint 定义的提示信息会随着用户输入的第一个数据开始,就自动隐藏了;而使用用 TextInputLayout 包裹的 EditText 时,就不会出现这种现象。同时也可以给 EditText 增加监听事件。
注意:
android:hint需要设置在EditText身上
改变hint的颜色需要更改主题的 颜色值
推荐网站
http://blog.youkuaiyun.com/antimage08/article/details/50366696
http://www.jcodecraeer.com/a/basictutorial/2015/0821/3338.html
Snackbar
介于Toast和AlertDialog之间的轻量级控件
跟Toast不同的地方是SnackBar允许用户向右滑动消除它,同时,也允许在SnackBar中设定一个Action,当用户点击了SnackBar里面的按钮的时候,可以进行一些操作,所以,功能绝对是很强大的。SnackBar的构造:
// 参数分别是父容器,提示信息,持续时间
public static Snackbar make(@NonNull View view, @NonNull CharSequence text,@Duration int duration)
常用方法
// 用于给SnackBar设定一个Action,点击之后会回调OnclickListener中的Onclick方法
public Snackbar setAction(CharSequence text, final View.OnClickListener listener)
// 用于设定Action的字体颜色
public Snackbar setActionTextColor(@ColorInt int color)
// 设定提示的字体
public Snackbar setText(@NonNull CharSequence message)
// 展示SnackBar
public void show()
// 清除SnackBar
public void dismiss()
// 设置回调,比如OnDismissed或者OnShown
public Snackbar setCallback(Callback callback)
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0714/3185.html
11 .FloatingActionButton
com.android.support:design包
FloatingActionButton继承自ImageView所以像setOnClickListener、setImageDrawable这些都是一样的。
FloatingActionButton默认的底色是theme中的colorAccent,想要修改颜色就要这样:
app:backgroundTint="#56abe4"
点击颜色:
app:backgroundTint="#56abe4"
FloatingActionButton的阴影效果怎么修
app:elevation="6dp"//显示的阴影大小
app:pressedTranslationZ="12dp"//点击时的阴影大小
推荐网站 http://blog.youkuaiyun.com/lmj623565791/article/details/46678867
12.NavigationViewcom
android.support:design包.
侧滑菜单在我们开发中非常常用,例如QQ等应用,在没有这个NavigationView之前,我们考虑的是通过FrameLayout+DrawerLayout实现,现在有了这个控件,我们就不在需要再考虑那么多了。有了NavigationView之后,我们只需要写一下布局就可以实现了,而且非常符合Google的MD设计风格,效果也非常好,并且向下兼容到2.1,
具体使用就不多说了。看我给大家推荐网站。
博客里也写的有
http://blog.youkuaiyun.com/lmj623565791/article/details/46405409