首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    是时候开始用C#快速开发移动应用了

    从2015年接触Xamarin到至今已经2个年头,我对Xamarin的技能没有长进多少,但它却已经足够成熟到在跨平台移动开发工具中占有一席之地。...我们的Demo中用到的组件包括: AppBarLayout + Tab Layout 实现 图1中的Tab视图 Drawer Layout + Navigation View 实现图3中的左侧菜单 CoordinatorLayout...CollapsingToolbar Layout + NestedScrollView (图2中的页面往下滚图片缩小直到消失的效果实现 ) Recycler View (ListView的加强版,适合数据量大的...~ AppBarLayout + Tab Layout  TabLayout可以说是一个非常好用的视图,你几乎在每一个主流的APP里面都可以看到。...DrawerLayout + NavigationView  图3中的左侧菜单,主流APP必备,也是只要几行代码就可以了。 ? 在NavigationView的使用上,有两个属性需要注意一下。

    2.6K60

    Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

    接着在AppBarLayout中再嵌套一个CollapsingToolbarLayout: <android.support.design.widget.CoordinatorLayout xmlns...接下来在CollapsingToolbarLayout中定义标题栏的具体内容: .........以及, app:layout_collapseMode用于指定当前控件在CollapsingToolbarLayout折叠过程中的折叠模式, 其中Toolbar指定成pin,表示在折叠的过程中位置始终保持不变...我在水果详情界面的逻辑中,findViewbyid写错成了卡片水果列表界面的ImageView的id: ?...在 CoordinatorLayout(外层监听框架)、 AppBarLayout(水果详情界面标题栏外层)、 CollapsingToolbarLayout(水果详情界面标题栏)这种嵌套结构的布局中

    2.3K40

    自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历

    原本想用原生的 CalendarView,但是 CalendarView 不支持周视图,可自定义程度也不高。 在 GitHub 搜了一下,决定使用 MaterialCalendarView。...这个库比较流行,它支持周月视图的切换,符合 Material Design,也可以自定义显示效果。...在布局中,对子控件配置 app:layout_behavior 属性,实现对应的联动效果。所以这里我们需要自定义日历和列表的两个 Behavior。 Behavior 有两种实现联动的方式。...没办法,只好自己写一个星期标题的控件盖在上面,简单写了一个 WeekTitleView,代码就不贴了,在布局里加上: 的滚动折叠效果是在 onNestedPreScroll 实现的,所以要想办法触发这个方法。

    3.4K10

    Android开发笔记(一百三十七)自定义行为Behavior

    如果按照普通的实现方式,此种照镜子的动画效果,得给两个视图分别注册监听器,然后在A视图移动之际,同时触发B视图的移动行为。...也许读者对Behavior类还有些陌生,不过之前的几篇博文已经涉及到了部分知识,比如在博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》中,就提到给主页面的视图节点添加属性app...它便是规定AppBarLayout滚动操作的自定义行为。...具体实现之时,则需做三处修改: 1、首先自定义一个图像控件,通过手势可以拖动该控件; 2、其次自定义一个Behavior,指定存在依赖关系的两种视图,在layoutDependsOn方法中规定两种视图的类型...,在onDependentViewChanged方法中定义重物视图配合人力拉曳时的运动行为; 3、在布局文件中放置定滑轮、人力视图、重物视图,并给重物视图指定layout_behavior属性,说明重物视图的协调动作

    1.3K20

    Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画

    Android5.0推出的MaterialDesign库包含了处理头部工具栏的多个控件,不但允许自定义顶部导航栏,而且导航栏高度是可以伸缩的。...之所以要嵌套这么多层,是因为要完成以下功能: 1、CoordinatorLayout嵌套AppBarLayout,这是为了让头部导航栏能够跟随内容视图下拉而展开,跟随内容视图上拉而收缩。...这个内容视图可以是RecyclerView,也可以是NestedScrollView; 2、AppBarLayout嵌套CollapsingToolbarLayout,这是为了定义导航栏下面需要展开和收缩的部分视图...appbar_scrolling_view_behavior" /> 然而仅仅实现上述布局并非万事大吉,支付宝首页的头部在伸缩时可是有动画效果的...反过来,也可以一开始给导航栏罩上一层不透明的视图,此时导航栏的控件是看不见的,然后随着距离的变化,遮罩变得越来越不透明,导航栏也会跟着变得越来越清晰了。

    1.2K10

    界面无小事(九): 做个好看的伸缩头部

    @android:color/transparent 然后在配置文件中设置新主题...如果在此之前的任何兄弟视图没有此标志, 则此值无效. exitUntilCollapsed 退出(滚动屏幕)时, 视图将滚动直到“折叠”. 折叠高度由视图的最小高度定义。...snap 在滚动结束时, 如果视图仅部分可见, 则它将被捕捉并滚动到其最近的边缘. enterAlways 当进入(在屏幕上滚动)时, 无论滚动视图是否也在滚动, 视图都将滚动任何向下滚动事件....一旦滚动视图到达其滚动范围的末尾, 该视图的其余部分将滚动到视图中. 折叠高度由视图的最小高度定义....自动上移 如果不是CoordinatorLayout, 可就没有这种效果了哦. ---- 自定义伸缩头部 再来看一个改动更大, 更自定义的. 先上效果图: ?

    98920

    再不迁移到Material Design Components 就out啦

    它使用AppCompat主题,设计支持库中的小部件(包括具有自定义背景的按钮)以及需要迁移的各种其他元素。...attr/borderlessButtonStyle” ... /> 之所以出现这种情况是因为,在填充布局的时候,会自动将我们布局中的普通控件替换成 MDC 控件。...下面这几种情况应该考虑 在布局中写的控件如果有对应的 MDC 控件的话,直接使用 MDC 控件 任何的风格,默认风格和默认风格属性应该改变成 MDC 版本 在编程中或者自定义类的父级类使用的任何控件都应该为...如果确实需要的话,最好用 android:background 例子 在我们的示例中我们可以删除一些由 shape theming 来处理的属性。...需要注意的是要清空 backgroundTint,因为在默认的 style 中,backgroundTint 为 colorPrimary <!

    3.2K30

    Android材料设计之Behavior攻坚战

    应该对 behavior有一定的认识 注意:改动自定义behavior路径时一定要改使用到的地方,不然肯定崩,一定要改!!...本文内容: 1.认识Behavior的使用方式 2.自定义Behavior,分析layoutDependsOn回调和onDependentViewChanged回调 3.自定义Behavior,分析onNestedScroll...回调和onNestedPreScroll回调 ---- 一、简单认识 1.使用 在CoordinatorLayout和AppBarLayout那篇貌似也没有碰到Behavior啊 不过仔细想一下,好像有个地方比较特殊...看起来很像一个类名有没有:AppBarLayout的内部类ScrollingViewBehavior <string name="appbar_scrolling_view_behavior"...debug.png 总得来说behavior就是: 在CoordinatorLayout中,让AppBarLayout里的首控件和添加behavior的控件进行联动,而实现酷炫逆天的效果, 其中child

    1.3K31

    Android开发笔记(一百三十五)应用栏布局AppBarLayout

    那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...,还要通知头部控件(通常是Toolbar),告诉头部控件你要怎么滚,是爱咋咋滚,还是满大街滚; 具体到实现上,要在工程中做以下修改: 1、添加几个库的支持,包括appcompat-v7库(Toolbar...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...所以,搜遍Android的SDK源码,总共也只有三个控件符合这个条件,它们是RecyclerView、NestedScrollView,以及SwipeRefreshLayout,在布局文件中使用的名称如下所示...1、AppBarLayout的滚动依赖于主体视图的滚动,与主体视图相对应的,可将AppBarLayout称作头部视图。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。

    2K40

    ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚

    在ConstraintLayout2.x中,有两种方式来实现嵌套滚动布局。...这种方式的一般套路结构如下。 image-20210223105619990 在AppBarLayout中,我们通过MotionLayout控制动画效果。...,另一种是直接自定义MotionLayout,实现AppBarLayout.OnOffsetChangedListener,这样通用性比较强,示例如下。...addOnOffsetChangedListener(this) } } ❝这两种方式没有本质上的不同,但是对于MotionEditor来说,如果使用自定义的MotionLayout,在非根布局下创建约束的时候会有一些问题...的指定,motionProgress的作用就是设置motionProgress,如果不设置这个,那么progress数据是没办法传递到内部MotionLayout的,从而会导致内部无法联动。

    1.2K30

    CollapsingToolbarLayout使用

    所以,CollapsingToolbarLayout 的使用一定离不开 AppBarLayout 和 Toolbar,并且作为 AppBarLayout 的直接子视图使用。...关于CollapsingToolbarLayout的属性在官网上可以查到,这里我只介绍案例中我们常用的几个属性:title标题,布局展开时放大显示在图片底部,布局折叠时缩小显示在Toolbar左侧。...注意,没有设置这个属性时,默认使用Toolbar的标题;statusBarScrim顶部视图折叠状态下,状态栏的遮罩色。通常这样设置:app:statusBarScrim="?...attr/colorPrimaryDark",即style样式中定义的沉浸式状态栏颜色。...作为AppBarLayout的直接子控件,CollapsingToolbarLayout包裹Header部分的ImageView和Toolbar,并分别设置二者的折叠模式。

    2.5K60

    CoordinatorLayout使用(四):和Toolbar的简单使用

    主观任务,大体也就是material design中用来替代3.x的actionbar 在v7包中,需要gradle依赖一下 具体可以参考 鸿洋大神的博客 ---- Toolbar简单前提条件...在style中添加,隐藏原来的actionbar 一般会写一个style,用的时候,继承它即可 false <item...snap: 代码中枚举SCROLL_FLAG_SNAP 在滚动结束后,如果view只是部分可见,它将滑动到最近的边界。...enterAlwaysCollapsed: 代码中枚举SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入...这里,我们在代码中 用boolean值存储状态 再用下面的代码设置效果 private void setToolbarLayoutFlag(){ AppBarLayout.LayoutParams

    1.5K30

    WindowsInsets 和 Fragment 过渡动画

    实际上我遇到了 WindowInsets 的问题,也就是说我实际上最终得到的是以下结果: ? 过渡动画破坏了状态栏的效果。 Woops,跟我在第一篇文章中展示的效果不太一样 ?。...Fragment A 使用了 CoordinatorLayout 和 AppBarLayout,而 Fragment B 使用自定义 WindowInsets 来处理(通过一个 OnApplyWindowInsetsListener...这一切听起来都很好,那为什么会突然影响到 WindowInsets 的效果呢?这是因为在过渡的过程中,两个 fragment 的视图都存在于容器中。 但是这听起来完全 OK 啊,不是吗?...然而在我的场景中,这两个 fragment 的视图都想要处理和消费 WindowInsets,因为它们都期望在屏幕上显示唯一的“主”视图。...我实现这一点的方法是通过在容器视图(在这个例子中就是在宿主 activity)里添加一个 OnApplyWindowInsetsListener,它会手动分发 WindowInsets 给所有的子 view

    1K30
    领券