目标 掌握视图的概念。 明白Activity与Widget的区别。 掌握XML方式布局界面的特点和一些基本特性。 掌握几种常见基本视图的用法 学会使用代码方式进行界面布局的方法。...如下图: 视图(View)是可视化的界面元素,视图对象可以单个组件或者很多组件的组合,可以通过XML来创建视图对象。...每一个视图都需要定义android:layout_width和android:layout_height,其值可以有如下几种情况,可以指定确切的大小: wrap_content:表示有视图的内容决定大小...marginLeft、marginRight、marginTop、marginBottom 视图与Widget(微件)的区别是:View是可视化的组件元素,Widget其实是一个迷你的Application...,View可以存在于Widget中,View可以认为是界面的更加基本的元素。
如下图: 视图(View)是可视化的界面元素,视图对象可以单个组件或者很多组件的组合,可以通过XML来创建视图对象。...为组件的四边设置填充区域 android:scrollbars 定义该组件滚动时显示几个滚动条。...每一个视图都需要定义android:layout_width和android:layout_height,其值可以有如下几种情况,可以指定确切的大小: wrap_content:表示有视图的内容决定大小...marginLeft、marginRight、marginTop、marginBottom 视图与Widget(微件)的区别是:View是可视化的组件元素,Widget其实是一个迷你的Application...,View可以存在于Widget中,View可以认为是界面的更加基本的元素。
因为一个浮动在UI之上的圆形图标而显得格外突出,同时它还具有特殊的手势行为” 比如,如果我们在使用email app,在列出收件箱邮件列表的时候,promoted操作可能就是新建一封邮件。 ? ?...浮动操作按钮代表一个屏幕之内最基本的额操作。关于FAB按钮的更多信息和使用案例请参考谷歌的官方设计规范。 运行效果 ?...实际上只需要指定一个布局文件,就可以看到效果了,只不过是这时候的FAB是固定在屏幕指定位置的,而无法随之滚动,不着急,下面会介绍如何设置成可滚动的FAB 属性介绍 FAB 默认使用应用主题中设置的浮起色作为按键背景...app:fabSize 属性选择普通大小或者迷你大小; 使用 android:src 改变 FAB 对应的 drawable; 使用 app:rippleColor 设置 FAB 按下时的波纹效果;...调整按钮类型 浮动操作按钮有两种大小:默认的,这应该是最常用的情况,以及mini的,这应该只用于衔接屏幕上的其他元素。 可以把FAB的按钮类型调整为“正常”或者“mini” ...
在flutter中,基本上所有的对象都是widget,对于layout来说也不例外。也就是说在flutter中layout也是用代码来完成的,这和其他的用配置文件来描述layout的语言有所不同。...你可以把layout看做是一种看不见的widget,这些看不见的widget是用来作用在可见的widget对象上,给他们实施一些限制。...Wrap — 可以对子child进行动态调整的widget。可滑动的Sliver widgets有下面几种:CupertinoSliverNavigationBar — 是一种IOS风格的导航bar。...SliverPersistentHeader — 可变size的sliver。SliverToBoxAdapter — 包含单个box widget的Sliver。...:Spacer和SizedBox都可以生成空白,不同的是Spacer可以和flex一起使用,而SizedBox必须固定size大小。
一 ListView基本介绍 ListView是Android开发中常用的列表视图控件,用于展示垂直滚动的可变长度的数据列表。...功能:ListView可以在有限的屏幕空间内显示大量的数据,并支持用户滚动浏览。它提供了一个可滚动的列表容器,可以逐项地展示数据元素。...android:layout_width:指定ListView的宽度,可以使用具体数值(如"match_parent"、"wrap_content")或者具体数值。...使用RecyclerView需要自定义适配器和ViewHolder,但它具有更好的性能和可扩展性。...CursorAdapter:CursorAdapter适用于使用数据库查询结果作为数据源的情况。它将数据库查询的结果封装为Cursor对象,并将数据与ListView绑定。
AppBarLayout一般用于赋予Toolbar(不限于Toolbar)滚动行为,AppBarLayout是一个垂直的LinearLayout,实现了Material Design中app bar的scrolling...AppBarLayout的子View应该声明想要具有的“滚动行为”,这可以通过layout_scrollFlags属性或是setScrollFlags()方法来指定。...AppBarLayout只有作为CoordinatorLayout的直接子View时才能正常工作,为了让AppBarLayout能够知道何时滚动其子View, 我们还应该在CoordinatorLayout...> widget.FloatingActionButton android:layout_width="wrap_content...> layout_scrollFlags拥有6种模式 1.scroll--最基础的模式,并且设置其他模式必须|上它,否则不起效果 如果滚动到顶部再往上滑动的话,则显示Toolbar,只要往下滑动,则Toolbar
"> widget.TabItem android:layout_width="wrap_content"...android:layout_height="wrap_content" android:text="推荐"/> widget.TabItem...其中text就是指示器的文字提示。 当然了,不仅可以在不居中直接添加TabItem子标签,这样可变性不好,我们可以在代码中动态添加,节后会介绍到!...,对其设置文字和图片 ---- 6、修改TabLayout的样式 Tablayout支持定制化修改,提供了不少自定义属性供开发者进行设置。...fixed表示位置固定,scrollable表示标签内容多时,可滚动显示。 ---- 6、TabLayout结合ViewPager 关键的来了! ·a 创建布局 <?
在一定程度上在视图结构和逻辑的关联性是强了,但在直观布局结构方面却弱了,所以就导致在代码中会发现嵌套层次很多很深,同事也会对开发者的能力有了一些要求,当然如果有面向对象编程的经验的话,那么就上手来说问题并不大...ListBody 一个 Widget,它沿着一个给定的轴,顺序排列它的子元素。 ListView 可滚动的列表控件。...ListView 是最常用的滚动 Widget,它在滚动方向上一个接一个地显示它的子元素。在纵轴上,子元素们被要求填充ListView。 Table 为其子元素使用表格布局算法的 Widget。...ConstrainedBox 对其子项施加附加约束的 Widget。 FittedBox 按自己的大小调整其子元素的大小和位置。 LimitedBox 一个当其自身不受约束时才限制其大小的盒子。...OverflowBox 对其子项施加不同约束的 Widget,它可能允许子项溢出父级。 SizedBox 一个特定大小的盒子。这个 Widget 强制它的孩子有一个特定的宽度和高度。
原因是:它是组织它众多子view之间互相协作的一个ViewGroup。 CoordinatorLayout 的神奇之处就在于 Behavior 对象。怎么理解呢?...,使用 Behavior 对象进行通信。...tabGravity —Tab的重心,有填充和居中两个值,为别为fill和center。...tabMode —Tab的模式,有固定和滚动两个模式,分别为 fixed 和 scrollable。 tabTextColor —设置默认状态下Tab上字体的颜色。...布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(经过测试,ListView,ScrollView不支持)具有滑动效果的组件。
=”90dp " //每列的宽度,也就是Item的宽度 3.android:stretchMode=”columnWidth"//缩放与列宽大小同步 4.android:verticalSpacing...="none" //隐藏GridView的滚动条 9.android:fadeScrollbars="true" //设置为true就可以实现滚动条的自动隐藏和显示..." //设置为true时,你做好的列表就会显示你列表的最下面 14.android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内...,通常的原因就是我们加载的图片太大,我看了一下我的图片,用500W像素的Defy拍的,原始大小一般都在800KB左右,这样大的图片才导致了内存泄露,网上大神们给的通常的解决方法是,用BitmapFactory...我此处用到的图片都是80KB以上的,存在drawable文件夹中,直接用R.drawable.来调用,没用到Bitmap ,因此只能缩小图片大小。
卡片式布局也是MaterialsDesign中提出的一个新的概念,它可以让页面中的元素看起来就像在卡片中一样,并且还能拥有圆角和投影,下面我们就开始具体学习一下。...CardView(这里用于作为recycleview的子项,用于显示水果) 1.1 实际上,CardView也是一个FrameLayout,只是额外提供了圆角和阴影等效果,看上去会有立体的感觉...实际上,CardView也是一个FrameLayout,只是额外提供了圆角和阴影等效果,看上去会有立体的感觉。...MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout; //增加RecycleView后的数据和对象初始化...又会根据当前滚动的距离情况,做出消失或者重新出现的反应; 这其实也是MaterialDesign中的一项重要设计思想,因为当用户在向上滚动RecyclerView的时候,其注意力肯定是在RecyclerView
大家好,又见面了,我是全栈君 SeekBar 拖动条:拖动条和滚动栏类似,当是拖动条能够拖动滑块改变进度 RatingBar 星级评分条:星级评分条与拖动条相似 SeekBar特有的xml属性 android...; import android.widget.RatingBar; import android.widget.RatingBar.OnRatingBarChangeListener; import...android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; @TargetApi(Build.VERSION_CODES.HONEYCOMB..."); } /** * seekBar: SeekBar对象 * progress:拖动条的进度 * fromUser:是否用户手动改变...(new OnRatingBarChangeListener() { /** * ratingBar:RatingBar对象 * rating :星级的大小
本博文专门讲解和CoordinatorLayout相关的知识点,这也是Design Support Library中最重要与最难的部分。...控制哪个view应该扩展还是收缩,以及其显示大小比例,包括视差滚动效果parallax scrolling effects 动画。 ?...---- Code Samples 官方为我们提供了一个漂亮的demo ,使用了 CoordinatorLayout 和其他的 design support library特性. ?...相匹配,用来通知AppBarLayout 这个特殊的view何时发生了滚动事件,这个behavior需要设置在触发事件(滚动)的view之上。...AppBarLayout里面定义的view只要设置了app:layout_scrollFlags属性,就可以在RecyclerView滚动事件发生的时候被触发: .support.design.widget.AppBarLayout
官方为我们封装好的一套流式标签组件.ChipGroup 本质上也是自定义的ViewGroup,其中为我们封装了部分条目点击和选中的监听器。...通常情况下,与ChipGroup配套使用的是Chip——也就是ChipGroup中的条目。Chip本身具有选中和点击状态,也可以加入图片,可以修改文本(颜色、字号、字体等)。...关于Chip和ChipGroup的使用,可以参考我之前整理的《Android:Chip、ChipGroups、ChipDrawable》链接为: https://www.jianshu.com/p/d64a75ec7c74...但是在构建对象时必须指定行或者列,这样就导致内容超过屏幕宽度或者高度时,并不会主动换行——而是优先适配行数或列数,然后滚动显示。...) //CnPeng 2018/12/7 4:46 PM 注意这个接口匿名对象的构建方式,前面加了个 object: gridLayoutManager.spanSizeLookup = object
布局优化 减少布局嵌套 避免在RecyclerView的Item布局中使用过多的嵌套布局和复杂的层次结构,这会增加渲染的时间和消耗。...(size)方法来设置缓存大小,可以控制RecyclerView中缓存ViewHolder的数量,避免过多的缓存占用过多内存。...recyclerView.setItemViewCacheSize(20) // 设置缓存大小为20 共享事件 例如点击事件,可以创建一个共用的监听器对象,并将其设置给所有的ItemView。...然后根据ID来区分执行不同的操作。从而避免了对每个Item都创建监听器对象,优化了资源消耗。...在实际开发中,还需要根据具体情况选择合适的优化策略,并进行适当的测试和调整,以达到最佳的性能效果。
前言 伟大的Google为Android推出了一系列的兼容包,最新的就是Design Support Library了,这里我们结合v7和v4中的几个控件,来主要学习Design Support Library...exitUntilCollapsed: 当视图会在滚动时,它一直滚动到设置的minHeight时完全隐藏。..., 并且下面的这个控件必须是可滚动的。...app:cardPreventCornerOverlap : 在v20和之前的版本中添加内边距, 这个属性是为了防止卡片内容和边角的重叠...app:cardUseCompatPadding : 设置内边距,v21+的版本和之前的版本仍旧具有一样的计算方式 --> widget.CardView xmlns
只是许多App把这两者的背景设为一样的,所以看起来像是统一的标题栏在收缩和展开。...> 当然,CollapsingToolbarLayout的折叠效果并不仅限于和Toolbar的互动,还包括标题文字的样式渐变(文字大小、颜色、间距等等),连背景图片都可以实现折叠的渐变效果。...同时声明scroll和enterAlways,滚动效果如下图所示: ? 3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。...同时声明scroll和exitUntilCollapsed,滚动效果如下图所示: ?...同时声明scroll和snap,滚动效果如下图所示: ?
当然不是,在 CoordinatorLayout 中嵌套滑动的本质是一个 NestedScrollingChild 对象。...enter 和 exit 的概念 这两个直译为中文就是进入和离开。这里的主语是 AppBarLayout 中的内容,宾语是 CoordinatorLayout。 ?...也就是说 snap 代表一种吸附的行为,当一个滑动事件结束后,Toolbar 会向最接近它的边缘自行滚动。那什么是最近的概念呢?比如向上滑动时,如果滑过了一半它就向上滚动,否则滚动回原来的地方。...可以看到,Collapsing title 的概念其实就是 Title 在大小与位置会变化。 我们再做少许变动。...就是滚动的速度不同,造成的视觉差异效果。也就是说 CollapsingToolbarLayout 中有的 view 滚动的快一些,其它的滚动的慢一些。
,这些控件都和CoordinatorLayout配合出各种效果,接下来我们就先简单介绍一下这些控件。...exitUntilCollapsed:当你定义了一个minHeight,此布局将在滚动到达这个最小高度的时候折叠。 snap:当一个滚动事件结束,如果视图是部分可见的,那么它将被滚动到收缩或展开。...NestedScrollView 在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,这个控件其实是Meterial...support library包含了一个特殊的字符串资源@string/appbar_scrolling_view_behavior,它和AppBarLayout.ScrollingViewBehavior...相匹配,用来通知AppBarLayout 这个特殊的view何时发生了滚动事件,这个behavior需要设置在触发事件(滚动)的view之上。
android.view.ViewGroup 扩展了 android.view.View,它本身也具有 View 的特性,区别仅在于它可以包含其他的控件。 ...以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。...TableLayout表格布局 表格布局 1.2.6 TabLayout标签布局 TabLayout属性说明: app:tabIndicatorColor :下方滚动的下划线颜色...效果: 代码: 1.3 Widget App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。...2 参考链接 android布局--Android fill_parent、wrap_content和match_parent的区别 http://www.cnblogs.com/nikyxxx/archive