基础Android之Material Design
来源:互联网 发布:手机淘宝卖家在哪登陆 编辑:程序博客网 时间:2024/06/04 20:23
现在Android推出了一套全新的界面设计语言——Material Design。我总结一下目前常用的,但不具体的去写,喜欢的可以去搜一下具体的知识,研究一下
1.ToolBar
现在官方意见不再建议使用ActionBar,而更加推荐使用Toolbar,它不仅继承了ActionBar的所有功能,而且灵活性更高。实现出来的界面其实跟ActionBar一样。
setSupportActionBar(toolbar);这样既使用了Toolbar,又让它的外观与功能和ActionBar一致。
2. 滑动菜单DrawerLayout
它是一个布局,允许放入两个直接子控件,一个子控件是主屏幕中显示的内容,一个子控件是滑动菜单中显示的内容。第二个子控件必须知道layout_gravity属性,指定left表示滑动菜单在左边,指定right则表示滑动菜单在右边,start表示根据系统语言判断。然后我们试着点击菜单以外的区域,就可以关闭滑动菜单。
mDrawerLayout.openDrawer(GravityCompat.START)3.NavigationView
这是Design Support提供的另一个控件,使用的时候,需要添加依赖
compile 'com.android.support:design:24.2.1'compile 'de.hdodenhof:circleimageview:2.1.0'第二个依赖是圆形图片,写上以防忘记。
我们要注意NavigationView需要配置两个属性
app:menu="@menu/nav_menu"app:headerLayout="@layout/nav_header"
app:menu是在Navigation中要显示的具体的菜单选项,app:headerLayout是用来在NavigationView中显示头部布局的。
点击每一项菜单关闭navigationView
mDrawerLayout.closeDrawers();
4. FloatingActionButton
悬浮按钮,利用layout_gravity属性指定位置值得一提的是app:elevation属性是给FloatingActionButton指定一个高度值,不过默认的一般就可以
5.snakebar
与Toast相似,但有着不同的应用场景,sankebar他允许在提示中加一个可交互的按钮,当用户点击后执行一些额外的操作
Snakebar.make(view,"Data deleted',Snakebar.LENGTH_SHAORT).setAction("Undo",new View.OnClickListener(){ @Override public void onClick(View v){ //做一些操作,比如toast提示 }})6.CoodinatorLayout
是一个加强版的FrameLayout,可以监听其所有子控件的各种事件,然后帮我们做出最为合理的响应,比如弹出的Snakebar会把悬浮按钮挡住,那么如果他们的父布局是CoodinatorLayout,则会让悬浮按钮自动上移而不会被挡住,等Sankebar消失后会自动下移,回到原来的位置。
7. 卡片式布局 CardView
也是一个FrameLayout
app:cardCornerRadius = "4dp"app:elevation="5dp"cardCornerRadius指定卡片圆角的弧度,数值越大,弧度越大,elevation指定卡片的高度,高度越大,投影范围也越大,投影效果越淡,反之亦然。使用的时候需要添加依赖
compile 'com.android.support:cardview-v7:24.2.1'compile 'com.github.bumptech.glide:glide:3.7.0下面的glide是一个强大的图片加载库,用法如下
Glide.with(context).load(url).into(imageview);
实际上是一个垂直的LinearLayout,内部做了很多的滚动事件的封装,将我们的toolbar控件嵌套在AppBarLayout中,
<...toolbar app:layout_scaollFlags="scroll|enterAlways|snap/>
在RecyclerView滚动的时候,就会起作用,enterAlways表示向下滚动toolbar会跟着一起向下滚动显示,scroll表示向上滚动就会一起向上滚动并实现隐藏,snap表示Toolbar还没有完全隐藏或显示的时候,会根据当前滚动的距离,自动选择是隐藏还是显示。
RecyclerView也要设置一个属性,以便在滚动的时候通知toolbar
app:layout_behavior="@string/appbar_scrolling_view_behavior"这个字符窜是由Design Support提供的。
9 下拉刷新SwipeRefreshLayout
SwipeRefreshLayout适用于下拉刷新的核心类,我们把要实现下拉属性的控件放置与其中就可以支持下拉刷新了。这个比较简单不多说了
10 CollapsingToolbarLayout可折叠的标题栏
是一个作用于Toolbar基础之上的布局,可以让Toolbar的效果更加丰富,它不能独立存在,只能作为AppBarLayout的子布局来使用,而AppBarLayout又必须是CoordinatorLayout的子布局。
<android.support.design.widget.CollapsingToolbarLayout .... app:contentScrim="?attr/colorPrimary" app:layout_scrolFlags="scroll|apsingToolbarLayout">第一个属性contentScrim用于指定CollapsingToolbarLayout在趋于折叠状态以及折叠之后的背景色,下面的那个属性scroll表示会随着下面的内容的滚动一起滚动,apsingToolbarLayout表示当CollapsingToolbarLayout滚动完后就保留在界面上,不再移出屏幕。
高级版的标题栏将是由普通标题栏加上图片组合而成,里面的子控件需要设置app:layout_collapseMode属性,pin表示折叠过程中位置始终保持不变,parallax表示折叠过程中产生一定的错位偏移。
11.充分利用系统状态栏空间
我们就需要借助android:fitsSystemWindows这个熟悉了,如果我们想让状态栏变成透明色,在CollapsingToolbarLayout进行折叠的时候图片可以占据状态栏,那么就需要imageview以及他的父控件都加上这个属性,并且设置状态栏为透明,android:statusBarColor="#0000000"但是这个属性只有5.0之后才有,所以我们需要建一个value_v21的文件夹,在其下建一个styles.xm文件,然后去写这样的一个style,在我们通用的styles.xml写一个空的对应name的style.在activity里面去配置app:theme="@style/transparentStyle"就OK了。
说的比较简单,这些Material Design基本上都在5.0之后添加,所以一定要做好适配。
- 基础Android之Material Design
- Android Material Design设计基础
- 【Android】Material Design基础详解
- Android Material Design 之 Material Theme
- Android:Material Design之 Switch
- Android Material Design 之 基础知识
- Android Material Design 之 图形
- android material design之snackbar
- Android Material Design之BottomSheetDialog
- Android Material Design之TextInputLayout
- Android Material Design之Snackbar
- Android Material Design之FloatingActionButton
- Android Material Design之CoordinatorLayout
- Android Material Design之TextInputLayout
- Android Material Design之CoordinatorLayout
- Android Material Design 之 Snackbar
- Android Material Design 之 TextInputLayout
- Android Material Design 之 TabLayout
- Softmax, Negative Sampling, and Noise Contrastive Estimation
- Android- SlidingMenu侧滑菜单
- 微信小程序 wx.request 的问题
- Windows7下使用VS2015搭建Lua开发环境
- RabbitMQ使用过程中遇到的坑
- 基础Android之Material Design
- 数据增强(2)
- 选择从现在开始
- Git详细教程
- Linux添加虚拟网卡的多种方法
- Hadoop 多输入和多输出研究(如何在Job History中获取相关信息)
- ndkLog日志打印说明
- 不同方式切换Fragment时,生命周期的回调的不同
- Hive中的数据倾斜