文章目录
- 一、Toolbar
- 二、滑动菜单
- 1、DrawerLayout——抽屉
- 2、NavigationView
- 三、悬浮按钮和可交互提示
- 1、FloatingActionButton——悬浮按钮
- 2、Snackbar——提示工具
- 3、CoordinatorLayout
- 四、卡片式布局
- 1、cardView
- 2、AppBarLayout
- 五、下拉刷新——SwipeRefreshLayout
- 六、可折叠式标题栏_CollapsingToolbarLayout
一、Toolbar
引入依赖
二、滑动菜单
1、DrawerLayout——抽屉
是一个布局,在布局中允许放入两个直接子控件,第一个子控件是主屏幕中显示的内容,第二个子控件是滑动菜单中显示的内容。
2、NavigationView
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/nav_menu"
app:headerLayout="@layout/nav_header" />
三、悬浮按钮和可交互提示
1、FloatingActionButton——悬浮按钮
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:id="@+id/fab"
android:src="@drawable/ic_done"
app:elevation="8dp"
/>
2、Snackbar——提示工具
在Toast的基础上加入可交互的按钮,当用户点击按钮的时候可以做一些额外的操作。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v,"Data deleted",Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Data restored",Toast.LENGTH_SHORT).show();
}
}).show();
Toast.makeText(MainActivity.this,"FAB clicked",Toast.LENGTH_SHORT).show();
}
});
3、CoordinatorLayout
加强版的FrameLayout,能监听所有子控件的各种事件,然后自动帮助我们做出最为合理的响应。
四、卡片式布局
1、cardView
implementation 'com.github.bumptech.glide:glide:3.7.0
2、AppBarLayout
解决RecyclerView遮挡ToolBar:
- 将ToolBar嵌套到AppBarLayout中
- 给RecyclerView指定一个布局行为
app:layout_behavior="@string/appbar_scrolling_view_behavior
五、下拉刷新——SwipeRefreshLayout
下拉刷新RecyclerView中的元素,将RecyclerView嵌套在SwipeRefreshLayout中,布局行为也放在SwipeRefreshLayout中
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipe_refresh"
refreshLayout = findViewById(R.id.swipe_refresh);
refreshLayout.setColorSchemeResources(com.google.android.material.R.color.design_default_color_on_primary);
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
refreshFruits();
}
});
六、可折叠式标题栏_CollapsingToolbarLayout
CollapsingToolbarLayout不能独立存在,只能作为AppBarLayout的子布局使用,而AppBarLayout又必须是CoordinatorLayout的子布局。
实战布局:
水果详情的展示页面:水果标题栏+水果内容详情。标题栏将由普通的标题栏加上图片组合而成。
<androidx.coordinatorlayout.widget.CoordinatorLayout
...
<com.google.android.material.appbar.AppBarLayout
...
<com.google.android.material.appbar.CollapsingToolbarLayout
...
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
不管是NestedScrollView还是ScrollView,它们的内部都只允许存在一个直接子布局。
分割线——————————————————————————————————
欧酷天气也开发完成啦,《第一行代码》真的超级适合安卓新手入门,讲解非常通俗易懂,好像郭霖老师在我身边讲解,局部-整体的方式让读者一步一步的看到安卓的全貌,在学习的过程中穿插案例让我更好的理解运用该功能的使用。感谢郭霖老师,感谢各位帮助我解决的up。第一阶段到这里,接下来将更加深入的学习安卓,去理解封装背后的原理。wow小萌新一直在路上。冲鸭! wowwow!