首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android用户界面开发概述

一个视图(View)屏幕占据了一块矩形区域,它负责渲染这块矩形区域(如将这块矩形区域变成其他颜色),也可以处理这块矩形区域发生的事件(如用户单击事件),并且可以设置这块区域是否可见、是否可以获取焦点等...目前Android中主要有六种布局,分别如下:  LinearLayout线性布局): 按照水平或垂直的顺序将子元素(可以是控件或布局)依次按照顺序排列,每一个元素都位于前面一个元素之后。...且单击向下获得焦点的组件ID android:nextFocusLeft setNextFocusLefUd(int) 设置焦点在该组件,且单击向左键获得焦点的组件ID android:nextFocusRight...setNextFocusRightld(int) 设置焦点在该组件,且单击向右键获得焦点的组件ID androidrnextFocusUp setNexlFocusUpId(int) 设置焦点在该组件...混合使用XML布局文件和代码来控制UI界面,习惯上把变化小、行为比较固定的组件放在XML布局文件中管理,而那些变化较多、行为控制比较复杂的组件则交给Java代码来管理。

2.3K100

【Android】手把手教你滑解锁的效果

最近,公司开发的APP中要实现类似滑解锁效果的推荐页,捣腾了两天,基本实现了效果,附效果图如上。接下来和大家聊聊如何实现这样的效果。...有效滑 如上如,锁屏状态下,定义有效滑动阈值standardH,若滑高度差超过standardH,则判断为有效滑动,布局滑动至屏幕顶部(不可见);否则如向下滑动、向上滑动距离不够等,都作为无效滑动...流畅滚动 LinearLayout本身是没有smoothScrollTo方法的,仅有的滚动方法只有scrollTo和scrollBy,但是这种滚动方法是突变的,不是线性的,想要实现smoothScrollTo...(伪)代码实现 首先按自定义控件的套路来,new一个类,继承LinearLayout,填充写好的布局,重写onTouch方法: public class PagerLayout extends LinearLayout...float curY = event.getY(); // 获取移动的y轴距离 float deltaY = curY - mDownY; // 阻止视图原来位置向下滚动

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Material Design 实战 之第四弹 —— 卡片布局

其中, scroll 表示RecyclerView向上滚动,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways 表示RecyclerView向下滚动...,Toolbar会跟着一起向下滚动并重新显示; snap 表示Toolbar还没有完全隐藏或显示,会根据当前滚动的距离,自动选择是隐藏还是显示。...AppBarLayout接收到滚动事件的时候,它内部的子控件是可以指定如何去影响这些事件的, 通过app:layout_scrollFlags属性就能实现。...其中, scroll表示RecyclerView向上滚动,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways表示RecyclerView向下滚动,Toolbar会跟着一起向下滚动并重新显示...当用户需要操作Toolbar的功能,只需要轻微向下滚动,Toolbar就会重新出现。

2.1K10

2.ui

特点          a):相对的布局中主要就进行避免覆盖的问题,就是组件1可能会覆盖组件2;          b):相对的布局中在线性的orientation方向和权重在相对的布局中并不适用...通过 android:maxLines指定 EditText的最大行数为两行,这样输入的内容超过两行时,文本就会向上滚动,而 EditText则不会再继续拉伸 如何才能让进度条在数据加载完成消失呢?...一个是从里往外撑,一个是从外往里撑 ScrollView ScrollView滚动视图是指拥有很多内容,屏幕显示不完,需要通过滚动跳来显示的视图。ScrollView只支持垂直滚动。...1、ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2、上述两个控件只能有一个孩子,但是它并不是传统意义的容器,但是可以不跟布局,如LinearLayout写它里面...,LinearLayout布局 3、上述两个控件可以互相嵌套 4、滚动条的位置现在的实验结果是:可以由layout_width和layout_height设定 5、ScrollView用于设置垂直滚动

1.5K90

Kotlin入门(19)Android的基础布局

线性布局 线性布局LinearLayout是最常用的布局,顾名思义,它下面的子视图像是用一根线串了起来,所以其内部视图的排列是有顺序的,要么从上到下垂直排列,要么从左到右水平排列。...故而线性布局主要有以下两种属性设置方法: 1. setOrientation: 设置内部视图的排列方向。...>     与上述布局文件对应的页面Kotlin代码如下,根据不同的按钮分别设置不同方向上的margin和padding数值: //该页面用于演示...由于线性布局的视图排列方式比较固定,既不能重叠显示也不能灵活布局,因此复杂一些的界面往往用到相对布局RelativeLayout。...代码中指定参照物及其所处方位,调用的是布局参数对象的addRule方法,方法格式形如“addRule(方位类型, 参照物的资源ID)”。

1.9K10

速读原著-Android应用开发入门教程(作为简单容器使用的视图组)

=> android.widget.LinearLayout => android.widget.RadioGroup RadioGroup 本身扩展了线性布局,它的功能比较单一,是为了保证多个...8.3.2.使用滚动屏幕控件的内容超过屏幕本身的尺寸,一般可以通过出现滚动条(ScrollBar)供用户拖动来显示没有显示的内容。...android.view.ViewGroup => android.widget.FrameLayout => android.widget.ScrollView ScrollView 类通常在 XML 文件中使用,屏幕的内容预计超过屏幕尺寸...的句柄,在其中用循环的方式增加了若干组(2-64)文本框和按钮,这样就形成了一个界面上的长列表。...本例子的第一组文本框和按钮布局文件中指定的,其他是代码中指定的。

76410

Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

extends LinearLayout implements OnTouchListener { /** * 滚动显示和隐藏左侧布局,手指滑动需要达到的速度。...,滚动到达左边界或右边界,跳出循环。...让我们来想象一个场景,如果右侧布局是一个LinearLayout,我可以通过监听LinearLayout的touch事件来控制左侧布局的显示和隐藏。...好了,我们的SlidingLayout写完了,接下来就是见证奇迹的时刻,让我们一起看看如何一分钟Activity中引入滑动菜单功能。...2.ListView上下滚动不会轻易滑出菜单。 3.正在滑动屏蔽掉内容布局的事件。 4.菜单布局展示,点击一下右侧的内容布局,可以将菜单隐藏。

2.1K60

Android绘制优化(二)布局优化

1.布局优化工具 讲到如何布局优化前,我们先来学习两种布局优化的工具。...当然Hierarchy Viewer还可以查看某一个View的耗时,我们可以选择某一个View,然后单击下图红色箭头标识的按钮,这里我们把他简称为Layout Time按钮。 ?...单击Layout Time按钮后,就可以查看View的耗时情况了,如下图所示。 ?...ViewStub调用inflate方法或者设置可见,系统会加载ViewStub指定的布局,然后将这个布局添加到ViewStub中,因此,在对ViewStub调用inflate方法或者设置可见,它是不占布局空间和系统资源的...使用ViewStub需要主要以下问题: ViewStub只能加载一次,加载后ViewStub对象会被置为空,这样ViewStub引用的布局被加载后,就不能用ViewStub来控制引用的布局了。

1.2K80

Android下拉阻尼效果实现原理及简单实例

我不建议把这个自定义控件用在对话框类型的activity,因为前一个activity处于可见状态,可能会占用大量算力,导致动画效果不流畅,亲测。...原理 这种效果是通过自定义控件的方式来实现的,我自定义了一个控件类型,这个自定义控件(PullDownDumperLayout)继承自线性布局(LinearLayout) 。...当用户将隐藏头部下拉或滑到一定高度,这个效果就会被触发,这需要依赖上面所述的onTouch方法。...这里提个醒,接下来的代码中,我们的自定义控件因为继承自LinearLayout,里面需要重写onLayout方法,而onLayout方法顾名思义就是布局,这个方法Activity中的onCreate...; private long mSleepTime; /** * 初始化头部布局的偏移值,数值越大,头部可见部分越多,预设值为0,即初始头部完全不可见 */ private int mTopMarginOffset

2.6K10

如何用一行Css代码使谷歌浏览器的数据网格滚动快10倍

因此,我打开并开始录制,向下滚动列表一点,然后停止录制。...这就是我所看到的:DevTools / Performance 滚动"顶部链接站点"数据网格的性能配置文件,非常低的 FPS "任务"块的那些红耳朵表明,滚动,某些东西需要的时间比可接受的时间要长...第 4 步 - 检查 DOM 不幸的是,DOM 包含许多元素不是很出色。如果是这样,则不需要在网络各种流行的 JS 数据网格中实现虚拟化技术。在这一点,一个有根据的猜测是,表呈现了很多元素。...通过 DevTools 控制台上设置 实时表达式 您可以元素面板中点击并找出答案, Console, 切换到 Create live expression 单击按钮 (the eye) 和 类型 $0...第 5 步 - 改善情况 基于性能配置文件中的数据,我怀疑滚动网格,整个页面都已布局。并且指出许多要素的成本很高。要是有办法限制效果就好了 ... ...

2.1K10

Kotlin学习日志(六)控件使用

只不过由于多数情况用不到视图对象,因此Kotlin中把冗余的视图入参给省略了,但是为了弄清楚按钮事件的来龙去脉,还是有必要观察一下它的本来面貌,接下来依次介绍按钮事件的三种Kotlin编码方式:匿名函数...Java中,复合按钮CompoundButton的勾选状态有两个,setChecked和isChecked,前者用于设置是否勾选,后者用于判断是否勾选,但在Kotlin中这两个方法被统一成了isChecked...1.3 单选按钮RadioButton 单选按钮要在一组按钮中选择其中一项,并且不能多选,这要求有个容器确定这组按钮的范围,这个容器便是单选组RadioGroup,单选组RadioGroup实质是一个布局...,该属性为vertical,单选按钮就在垂直方向上排列,并且RadioGroup下面除了RadioButton外,也可以挂载其他子控件,如TextView、ImageView等,这样看来,它就是一个特殊的线性布局...,centerInside等同于fitCenter:图片尺寸小于视图,centerInside等同于center 然后代码来演示一遍 布局文件 <?

1.7K30

Android Scroller完全解析,关于Scroller你所需知道的一切

点击了scrollTo按钮,我们调用了LinearLayout的scrollTo()方法,点击了scrollBy按钮,调用了LinearLayout的scrollBy()方法。...可以看到,当我们点击scrollTo按钮,两个按钮会一起向右下方滚动,因为我们传入的参数是-60和-100,因此向右下方移动是正确的。...里的每一个子控件水平方向上进行布局。...接着重写onInterceptTouchEvent()方法, 在这个方法中我们记录了用户手指按下的X坐标位置,以及用户手指在屏幕拖动的X坐标位置,两者之间的距离大于TouchSlop值,就认为用户正在拖动布局...如果当前事件是ACTION_UP,说明用户手指抬起来了,但是目前很有可能用户只是将布局拖动到了中间,我们不可能让布局就这么停留在中间的位置,因此接下来就需要借助Scroller来完成后续的滚动操作。

1.6K60

Android 3D滑动菜单完全解析,实现推拉门式的立体特效

更可气的是,百度搜索我文章的标题,竟然先找到的是那些转载我文章的网站。唉,伤心了,看来还是谷歌比较正常。...,滚动到达左边界或右边界,跳出循环。...注意,整个的滑动过程中,真正的左侧布局一直都是不可见的,我们所看到的只是它的一张镜像图片。...整个滚动操作完成之后,才会将真正的左侧布局显示出来,再把镜像图片隐藏掉,这样用户就可以点击左侧布局按钮之类的东西了。...第二个LinearLayout是右侧布局,里面放入了一个按钮和一个ListView,都是用于显示左侧布局而准备的。第三个是Image3dView,当然是用于滑动过程中显示左侧布局的镜像图片了。

2.9K100

Android系统联系人全特效实现(下),字母表快速滚动

不过这种快速滚动方式比较丑陋,到后来很多手机厂商定制自己ROM的时候都将默认快速滚动改成了类似iPhoneA-Z字母表快速滚动的方式。这里我们怎么能落后于时代的潮流呢!...另外还需要一个TextView,用于弹出式分组布局显示当前的分组,默认是gone掉的,只有手指在字母表滑动才让它显示出来。...首先通过字母表按钮的getHeight方法获取到字母表的总高度,然后用event.getY方法获取到目前手指在字母表的纵坐标,用纵坐标除以总高度就可以得到一个用小数表示的当前手指所在位置(0表#端,...,用于滚动记录标识。...* 手指按在字母表,展示弹出式分组。手指离开字母表,将弹出式分组隐藏。

90480

Android RecyclerView的刷新分页的实现

开发中常常使用到刷新分页,这里实现一个 RecyclerView 的简单的刷新分页操作,测试效果见文末,实现过程参考如下: 实现思路 加载更多数据使用到 RecyclerView 加载多种布局,根据...firstVisibleItemPosition 为了能够在数据加载中动态判断什么时候加载数据,需要知道屏幕显示的第一个可见的 Item 的位置,当然了这里使用的是布局管理器是 LinearLayoutManager...findLastVisibleItemPosition() 获得屏幕最后一个可见 Item 的 position,只要该 Item 有一部分可见,那么返回的 position 就是该Item 的 position...findLastCompletelyVisibleItemPosition() 获得屏幕最后一个完整可见的 Item 的 position,只要该 Item 有一部分不可见,那么返回的 position...ITEM_FOOTER: view = LayoutInflater.from(mContext).inflate(R.layout.item_footer,null); //使用代码设置宽高(xml布局设置无效

1.2K40

从0上手Jetpack Compose,看这一篇就够了~

我们是Activity中编写Java/Kotlin的代码,XML中编写布局代码,这种方式是我们已经使用了很久的方式,而Jetpack Compose完全抛弃了之前的方式,新创造了一种“使用代码”编写页面的方式...我们看到文字都堆叠在一起了,我们知道XML布局中有LinearLayout、RelativeLayout等布局组件,那么Compose中有哪些布局呢?...在上面的图中我们看到,两个Text紧紧的贴在一起了,XML布局中我们可以使用padding或者margin来解决这个问题,Compose中如何处理呢?以及我们如何为文字设置颜色、大小等样式呢?...可以看到,这样点击“add”按钮,文本的数值会不断增加。...它描述界面特定状况下的状态,而不是状态发生变化时移除界面组件或更改其可见性。调用重组并更新界面后,可组合项最终可能会进入或退出组合。

67231
领券