(image-3f86ab-1513646879600)] 2、BottomNavigationView 主题构建好了,下面就是主要内容架构,我大致分为四个模块:武器简介、人物简介、配件简介和空头简介。...setOnNavigationItemSelectedListener {} 3、DrawerLayout、NavigationView 和BottomNavigationView相对的,不得不介绍一下...Toolbar作为早期Android中ActionBar的替代品,定制性和操作性挺高了不少。使用的时候需要设置NoActionBar的主题。...项目中列表肯定是少不了的,那么这就不得不提RecyclerView了,强大之处不用多说,感兴趣的话看一下我之前写的博客,对其使用有个简单的介绍:简单粗暴RecyclerView 那如果想实现侧滑删除和长按拖拽的功能怎么办呢...onItemDismiss(viewHolder.adapterPosition) } } 和RecyclerView建立连接 val mItemTouchHelper
SwipeRefreshLayout是官方提供的下拉刷新控件,在使用过程碰到一些小问题和大家分享下....} }) 下面的代码,虽然会出现下拉刷新的视图,但不会触发上面的监听 //这段代码如果写在onCreate方法中是无效的,因为SwipeRefreshLayout控件还未完全加载,可以使用延迟加载的方法使用下面的代码...}); } }); 还有一点需要注意,如果SwipeRefreshLayout控件中不包含任何控件,下拉手势是无法触发事件的,也不会有下拉刷新的视图 RecyclerView...有一点想要分享的是,如果你没有把它和Adapter关联,他会跳过加载,不会实际去初始化这个控件,虽然在布局代码写着 这个和我上面提到SwipeRefreshLayout提到那个问题放在一起使用,就会产生你下拉不会触发事件的问题
NestedScrollView和RecyclerView使用,并设置间距: 效果图如下: 1.NestedScrollView 和RecyclerView嵌套问题(类似ScrollView...和listView)\ 需重写 RecyclerView 的 GridLayoutManager(还有另外2种,随便搜下就有) public class FullyGridLayoutManager...滑动 “`java recyclerView.setNestedScrollingEnabled(false); “` 给recyclerView创建Adapter public class...(R.id.recyclerview); recyclerView.setNestedScrollingEnabled(false); layoutManager=new...(decoration); adpater.notifyDataSetChanged(); 代码并不难,希望通过我这个例子,一是巩固自己的学习和理解,二是希望更多的人更好的学习,我会再接再厉
应用在大尺寸屏幕 (平板、可折叠设备甚至是 Chrome OS 和台式个人电脑) 上的使用体验是我们的关注点之一: 在过去的一年中,大尺寸屏幕的设备越来越受欢迎,用户使用率也越来越高,如今已增长到 2.5...其中在 res/layout 目录下的布局中包含了 BottomNavigationView,而在 res/layout-w720dp 目录下的布局中则包含了 NavigationRailView。...我们分别为会议列表和详情窗格分配了 400dp 和 600dp 的宽度。...<com.google.android.material.appbar.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent...binding.appbar.doOnNextLayout { appbar -> if (appbar.width >= WIDE_TOOLBAR_THRESHOLD) { binding.activeFiltersWideStub.viewStub
bottom导航栏这里采用是BottomNavigationView,具体用法不在介绍。...这里主要看一下BottomNavigationView的 app:layout_behavior 属性,该属性是协调布局特有的。...网上的一版用法是app:layout_behavior=”@string/appbar_scrolling_view_behavior” 虽然表面上看是一个字符串,其实在里面调用的也是一个view类。...如果是的话,就返回true onNestedPreScroll:这个方法就比较简单了,当用户上滑的时候,隐藏底部菜单栏,这里使用了动画退出,使用了 ObjectAnimator.ofFloat 方法,第一个是...后记 还可以通过监听appbar来实现bottom的动画。
效果: 多布局的使用场景还是蛮多的,比如“首页”、“我的”等页面,早期的时候大家一般都是拼起来的,后来开始自定义ListView(支付宝现在的首页还是ListView),再到后来的RecyclerView...其实多布局都是一个套路,根据类型去引入layout,本文以RecyclerView为例,以BaseRecyclerViewAdapterHelper为辅演示多布局的写法。...的item也选中,BottomNavigationView的item选中的时候让ViewPager切换page 3.Fragment(“我的”页面) 布局,SwipeRefreshLayout(下拉刷新...multipleItem = new MultipleItem(MultipleItem.TYPE_TOOLS, 1); multipleItem.mString1 = "使用帮助...在构造里面addItemType绑定type和layout的关系 public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter
最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。...是否消费 RecyclerView 发过来的距离,怎么试都不行,最终还是尝试用 CoordinatorLayout 和 RecyclerView 组合。...recyclerView, dx, dy) calculate() } }) } /** * 控制 AppBar 是否可以滑动 */ private...coordinatorLayout.canScroll(appbarLayout.y > -barHeightDistance) } } 吸顶后悬浮 要使吸顶的 View 停在外面,单独做一个 View 覆盖在...-- 这个 View 和 RecyclerView 里第一个位置的 View 一样 --> <TextView android:visibility="gone"
为此,Jetpack提供了Navigation组件,方便我们管理页面和AppBar。...优点 可视化的页面导航图,可以使用 Android Studio 的 Navigation Editor 来查看和编辑导航图。 通过destination和action完成页面间的导航。...Safe Args插件传递参数 使用Safe Args Gradle插件,该插件可以生成简单的对象和构造器类,支持在destination之间进行类型安全的导航和参数传递。...的变化,AppBar中的按钮也可能承担页面切换的工作,既然Navigation和AppBar都需要处理页面切换事件,为了方便管理,Jetpack引入了NavigationUI组件。...使用Toolbar时,Navigation组件会自动处理导航按钮的点击事件,因此无需覆盖onSupportNavigateUp()。
gcov与 lcov简介 通过gcov和lcov,可以很直观的看到代码的运行情况,同时也可以查看代码的行覆盖率,函数覆盖率等等信息,为开发提供一个方便的测试手段。...下面简单介绍linux下,使用gcov和locov进行代码覆盖率的测试。...lines……: 91.3% (21 of 23 lines) functions..: 100.0% (2 of 2 functions) 可以看到output目录下有index.html文件 使用浏览器打开...gcov 从上图可以看到 整个工程的代码行覆盖率和函数覆盖率,分支覆盖情况。 继续点击test.c,可以看到具体每行是否有跑到。 ? test.c 褐色表示未跑到过的代码,左侧数字表示跑到的次数。...总结 结合使用gcov和locv,可以比较直观的观察到运行的程序是否按照自己的设计,跑到了对应的代码中。当然对于以上过程,完全可以写成脚本,而无需每一次都进行如此繁杂的操作。
NestedScrollView 在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,这个控件其实是Meterial...在NestedScrollView的名字中其实就可以看出他的作用了,Nested是嵌套的意思,而ToolBar基本需要嵌套使用。...Meterial Design引入了Z轴的概念,就是所有的view都有了高度,他们一层一层贴在手机屏幕上,而FloatingActionButton的Z轴高度最高,它贴在所有view的最上面,没有view能覆盖它...support library包含了一个特殊的字符串资源@string/appbar_scrolling_view_behavior,它和AppBarLayout.ScrollingViewBehavior...可以使用的其他flag有: enterAlways: 一旦向上滚动这个view就可见。
Floating Action Button 和 Snackbar CoordinatorLayout 可以通过使用 layout_anchor 和 layout_gravity 属性来创建悬浮效果。...statusBarColor">@android:color/transparent 通过像上面那样启用系统栏的半透明效果,你的布局会将内容填充到系统栏后面,因此你还必须在那些不想被系统栏覆盖的布局上使用...另外一种为 API 19 添加内边距来避免系统栏覆盖 view 的方案可以在这里查看。...确保在 CoordinatorLayout 的直接子 view 上使用了 app:layout_behavior="@string/appbar_scrolling_view_behavior" 属性。...第三方滚动和视差效果库 除了使用上述的 CoordinatorLayout,还可以查看这些流行的第三方库来实现 ScrollView, ListView, ViewPager 和RecyclerView
本文特点:没有 Kotlin/Java 代码,讲解部分全为 XML 代码,阅读时间短,获取技能: MotionLayout 的入门和使用!...元素 OnSwipe 把过渡动画和用户在 RecyclerView 上的拖拽操作绑定到了一起,也就是之前我们查看到的主布局中的列表。...在展开和折叠状态下, RecyclerView 列表的上边缘是处于不同位置的,因为它被约束到了 ID 为 toolbar_image 的 ImageView 图片下边缘,而这个过渡动画的实现正是由于控制着这个位置变量的值...中的任何一个属性,也可以是 View 中的任何一个属性,但即使像 ImageView 这类作为 View 的子类控件,我们仍然需要使用一个 CustomAttribute 符号,这里实际上和 ObjectAnimator...这事实上效果已经非常接近,但是仔细看你会发现这里与刚开始我们使用的 CoordinatorLayout 方式有一个细微的区别:在 CoordinatorLayout 布局下图片的褪色渐变动画和 MotionLayout
menu/activity_main_drawer" /> DrawerLayout包裹着include的主页和侧边栏内容...侧边栏NavigationView分为头部布局headerLayout和菜单menu,注意一个是layout一个是menu。...关于DrawerLayout更多使用可以查看:DrawerLayout使用详解。 2.主页 这里主页说的是首页除侧边栏以外的页面。 <?...0dp" android:layout_weight="1" /> <com.google.android.material.bottomnavigation.BottomNavigationView...下面是BottomNavigationView底部菜单,与上面的ViewPager关联。 到此页面布局的部分介绍完毕,下面开始说代码部分。
需求场景 熟悉Android App开发的同学,肯定都清楚,如果要显示多张图片,类似九宫格,可以用GridView或者GridLayout来做,但是如果需求要求在ListView或者recyclerView...自定义属性 1.我们需要图片之间的水平间距horizontalSpacing和垂直间距verticalSpacing。 2.我们需要图片的长宽比ratio,默认我们1。...= null) { typedArray.recycle(); } onMeasure实现 我们这里并不需要对SpeceMode进行特殊处理,只需要根据image数量计算宽度和高度。
本博文专门讲解和CoordinatorLayout相关的知识点,这也是Design Support Library中最重要与最难的部分。...---- Code Samples 官方为我们提供了一个漂亮的demo ,使用了 CoordinatorLayout 和其他的 design support library特性. ?...support library包含了一个特殊的字符串资源@string/appbar_scrolling_view_behavior,它和AppBarLayout.ScrollingViewBehavior...可以使用的其他flag有: enterAlways: 一旦向上滚动这个view就可见。 ?...view类使用@DefaultBehavior修饰符来添加注解。
实际上,CardView也是一个FrameLayout,只是额外提供了圆角和阴影等效果,看上去会有立体的感觉。...另外,为了让界面上的数据多一些,这里使用了一个循环,随机挑选50个水果。 之后是RecyclerView的逻辑,这里使用GridLayoutManager布局方式。...AppBarLayout ---- 首先RecyclerView会把Toolbar给遮挡住的原因: 由于RecyclerView和Toolbar都是放置在CoordinatorLayout中的, 而前面已经说过...解决方法: 传统情况下,使用偏移是唯一的解决办法, 即让RecyclerView向下偏移一个Toolbar的高度,从而保证不会遮挡到Toolbar。...接下来使用AppBarLayout两步解决前面的覆盖问题: 第一步将Toolbar嵌套到AppBarLayout中, 第二步给RecyclerView指定一个布局行为(app:layout_behavior
CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果 如何使用 CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou...底下的RecyclerView也跟随这个移动,不会出现中间隔出一段距离!(仅提供源码复制粘贴,很简单的) 先看下效果图: ? 下面上代码 XML布局代码如下: <?...:clipChildren="false" <android.support.design.widget.AppBarLayout android:id="@+id/Fragment_ontstf_<em>AppBar</em>...android:id="@+id/Fragment_ontstf_RecyclerView" android:layout_width="match_parent" android:layout_height...(); mPresenter.PselectUser(Userid); } /** * 最主要的代码 * AppBar滑动效果 */ private void AppBar() { FragmentOntstfAppBar.setExpanded
节点包裹Toobar; 5、Toobar节点添加滚动属性app:layout_scrollFlags="scroll|enterAlways",声明工具栏的滚动行为标志; 6、演示页面的主体页面使用RecyclerView...控件,并给该控件节点添加行为属性app:layout_behavior="@string/appbar_scrolling_view_behavior",表示通知AppBarLayout捕捉RecyclerView...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...所以,搜遍Android的SDK源码,总共也只有三个控件符合这个条件,它们是RecyclerView、NestedScrollView,以及SwipeRefreshLayout,在布局文件中使用的名称如下所示...: RecyclerView : 使用名称android.support.v7.widget.RecyclerView NestedScrollView : 使用名称android.support.v4
我始终觉得学习这件事是自己的事,自己会了就是会了,无关于他人,但唯一伤感的是写干货也没人看,更没人转发!
今天我们就来了解一下CardView的属性,然后使用CardView和RecyclerView结合实现一个可以拖拽Item的布局。...CardView应用在RecyclerView中 CardView通常会应用在RecyclerView和ListView中,今天我们就讲一讲如何应用在RecyclerView中。...是不是觉得很棒,下面我们就用CardView和RecyclerView来实现一下这个效果。...ItemTouchHelper 想实现拖拽和滑动删除的效果,很可惜RecyclerView并没有提供现成的API供我们使用,但是SDK为我们提供了ItemTouchHelper这样一个工具类帮助我们来轻松实现这些功能...大致意思就是,这是个工具类,可以实拖拽移动和策划删除,使用这个工具需要RecyclerView和Callback。同时需要重写onMove()和onSwiped()方法。
领取专属 10元无门槛券
手把手带您无忧上云