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

教你步步为营掌握自定义 View

这层含义,就是告诉你,View就是用来与用户交互的,那么很自然地,我们要问,我们用户在哪里与View交互,以及怎样与View交互呢? View在屏幕上占据一个矩形区域。...这是说,既然View是用户与应用交互的基本构建块,而用户使用Android设备时,主要是通过一个触摸屏来交互的,相应的,Andorid的设计者们,就让一个View就在屏幕上占据一个矩形区域,用户在这个区域中发生的交互动作...很自然地,我们又想问,View在屏幕上占据一个矩形区域,这个区域的大小、位置怎么确定,它们会不会变化,谁来决定这个变化呢?...现在我们明白了,设计View,主要是为了让应用能够与用户交互,要想完成交互,这个View就要在屏幕上占据一个矩形区域,然后利用这块屏幕区域与用户交互,交互的方式就两种,绘制自己与事件处理。...View完成与用户的交互后,能够自动隐藏,在需要交互的时候重新显示在屏幕上吗? ...... 现在我们就一点点来讲,学习的同时,最好能够用心体会Google工程师设计时的思路。 这样学习效果最好。

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

    Android应用图标微技巧,8.0系统中应用图标的适配

    但是这就让Google不开心了,这不是变向强制要求开发者必须将图标设计成圆角矩形吗?...于是在去年的Google I/O大会上,Google点名批评了小米的这种做法,说其违反了Android自由和开放的理念。...终于在Android 8.0系统中,Google下定决心要好好整治一下Android应用图标的规范性了,今天我们就来学习一下。...可以看到,这就是一个前景层盖在背景层上,然后再被圆形mask进行裁剪之后的效果。 好的,那么现在剩下的问题就是,我们如何才能对自己的应用图标在Android 8.0系统上进行适配?...再来看预览区域,这个就十分简单了,用于预览应用图标的最终效果。在预览区域中给出了可能生成的图标形状,包括圆形、圆角矩形、方形等等。

    1.9K20

    一起看 IO | Jetpack 组件的新特性

    在 Google Play 中,绝大多数应用都使用了 Jetpack 实现应用架构。今天,在排名前 1,000 的应用中,超过 90% 使用了 Jetpack。...这会使您的应用加载的更快,并且可以在用户首次与应用交互时减少丢帧。 我们已经开始在 Google 内部使用 Baseline Profiles。...每当记录报告时,都会提供相应的信息,这样不但可以帮助开发者了解问题是何时发生的,更可以了解到用户当时在做什么。这有助于确定应用中存在问题的区域,以便稍后进行解决。...报告结果 : 在每一帧中,JankStats 客户端都会通过监听器收到包含该帧相关信息的通知,包括帧完成所用的时间、是否被视为卡顿,以及该帧显示期间的界面上下文是什么。...Tracing 1.1 支持对低至 API Level 14 的应用的非调试构建进行分析,类似于在 API Level 29 中加入的 清单文件标记。 3.

    3.2K20

    可折叠设备的桌面模式

    https://github.com/google/ExoPlayer/releases implementation 'com.google.android.exoplayer:exoplayer-core..." tools:context=".MainActivity"> google.android.exoplayer2.ui.PlayerView android...每当您获取到新的布局信息时,您可以查询显示屏特征,并检查设备当前显示中是否存在折叠或铰链: private fun onLayoutInfoChanged(newLayoutInfo: WindowLayoutInfo...如果您要实现横屏功能,那么大多数时候,边界会以一个在屏幕中垂直居中的矩形来表示,它和屏幕一样宽,并且高度与铰链相同 (对于可折叠设备而言值为 0,对于双屏幕设备而言会是两个屏幕之间的距离)。...,您学习了如何通过实现支持桌面模式的灵活布局来改善可折叠设备上媒体应用的用户体验。

    2.4K30

    60种常用可视化图表的使用场景——(下)

    如您有一对数值数据,可使用散点图来查看其中一个变量是否在影响着另一个变量。可是请记住,相关性并非因果关系,也有可能存在另一个变量在影响着结果。...37、点示地图 点示地图 (Dot Map) 也称为「点示分布图」或「点示密度图」。在地理区域上放置相等大小的圆点,旨在检测该地域上的空间布局或数据分布。...39、流向地图 流向地图 (Flow Map) 在地图上显示信息或物体从一个位置到另一个位置的移动及其数量,通常用来显示人物、动物和产品的迁移数据。...如果是按比例绘制的时间线,我们可以通过查看不同事件之间的时间间隔,了解事件发生的时间或即将在何时发生,从中查找时间段内的事件是否遵循任何模式,或者事件在该时间段内如何分布。...使用表格按时间顺序和/或字母顺序组织数据,能有助用户快速进行引用。

    16310

    Android可穿戴设备世界之旅

    在官方网站上进行简要说明之前,您可以先看一下关键设计指南- 遵循 5 秒规则,这意味着应用中的任何内容都应使用此典型时间与其用户进行交互。您的用户不应将他/她的注意力保持超过此时间。...避免使用用户的传统输入系统,一目了然,将其保持在最低限度,一目了然,为您的手表使用更智能的解决方案,向“Google Now”问好。...SDK 要求 在构建可穿戴应用程序之前,请先检查两件事。...在圆形和矩形形状之间切换 在创建项目时,我们发现了矩形和圆形磨损设备的 2 种不同的布局名称。在项目结构中,您将在布局文件夹下找到这 2 个布局文件以及一个主 xml 布局文件。...要检查您的设备是否与磨损模拟器连接,您可以尝试多种方法,在这里我们正在检查手表通知。选择它,你会发现一个有几个选项的窗口。从那里选择“来电”选项,您将直接收到磨损模拟器的呼叫通知。

    12810

    Geo-fencing算法

    Geo-fencing算法是一系列用于确定一个设备是否在特定地理区域内(即“围栏”内)的计算方法。以下是一个典型的Geo-fencing算法流程,以及它如何工作:算法流程1....形状:围栏可以是圆形、多边形或矩形。2. 获取设备位置定位技术:使用GPS、Wi-Fi、蓝牙或蜂窝网络等技术来获取设备的当前位置。3. 判断位置算法:使用特定的算法来判断设备的位置是否在围栏内。4....射线交叉检测def ray_intersects_segment(p, a, b): # 确保a的y值小于b的y值 if a.y > b.y: a, b = b, a # 检查射线是否在...y范围内 if p.y b.y: return False # 检查点是否在边的左侧 if p.x 检查交点是否在点的右侧 return x_intersect <= p.x这些算法提供了基础的Geo-fencing

    21520

    最具个性的Android 12、快被遗忘的Wear OS……等了2年的谷歌在凌晨“搞事情”

    它允许Workspace用户通过@提及来标记团队成员,创建一个目标清单,概述团队成员在项目开始前可能需要做的任何前期工作,然后提出产品想法,接着再由其他团队成员进行投票,也可以列出头脑风暴完成后团队需要采取的下一步行动...Google Map——更多信息元素与室内AR导航 Google Map的更新亮点主要有4个方面: 第一点是元素更多的即时街景,在2D地图中,这一更新使得地图元素详细到每条人行道、安全岛的配置,而在3D...另外,当用户来到一个新的城市,Google Map也会主动地智能化突显当地的地标建筑、特色景点等等。 第四点是区域繁忙度功能。...顾名思义,在这一功能下,Google Map将实时显示多个区域的繁忙程度,让地图信息更加丰富,以便个人或团体更方便地出行。...只不过,相较于过往的历届发布会,虽然本次Google I/O大会依旧是AI的主场,但如同过往那般的激动却更少了。看完发布会的你,感觉如何?

    94010

    图像中二维码的检测和定位

    QR-Code-Overview.jpeg 定位图案 Position Detection Pattern是定位图案,用于标记二维码的矩形大小。...erode.process(binary, structureElement, 1); dilate.process(binary, structureElement, 1); } } 接下来是标记联通区域...在没有对图片做任何缩放处理的情况下,使用该算法进行定位二维码的区域也是ok的。 ? 大图中的二维码.png 当然,对于大图如果适当地降采样处理或者缩放的话,算法速度会更快。...算法的源码位于cv4j的QRCodeScanner中,该算法不能识别二维码的字符串,只能找到二维码的区域,如果需要识别二维码还是需要使用Google Zxing。...文章中的算法是对二值图像分析的综合运用,使用它再结合Google的ZXing能够提高二维码的识别率。当然,由于它是pure java实现的,稍作改动能够用它来判断出某张图片中是否包含有二维码。

    3.5K30

    QQ音乐MV播放杂音问题解析

    问题背景 QQ音乐Android端播放MV视频《凤凰花开的路口》时带有如电流声一般的杂音,影响用户的正常体验。...ijkplayer播放流程后,标记出找到有可能出错的环节,方便进行“分层定位”(图中黄色标记) 播放下载文件是否有问题 数据读取是否有问题 音频解码逻辑是否有问题 AudioTrack的设置是否有问题...1、播放下载文件是否正常 把Android端播放的ts文件与各端的进行比对,发现两者一样,该环节正常 2、AudioTrack设置是否正常 通过日志检查AudioTrack以下配置参数: 采样率 位深...从频谱图中看出,异常的PCM在人耳十分敏感的频响(1000~8000Hz )区域内的音频数据严重缺失,导致“杂音问题” 从波形图中看出,异常的与正常的无声区和有声区都吻合,若解封装、解码逻辑出现异常,极大几率是呈现无波动...(三)问题定位结论 由上得出结论:Android端选择了第二条数据有问题的流进行播放。 音频流选择 选择方式 在Android使用FFmpeg中的av_find_best_stream来选择音频流。

    5.5K10

    Google Map

    学习内容 Google Map服务简介 获取Google Map API Key 根据 GPS信息在地图上定位 根据GPS信息地图上跟踪用户轨迹 调用Google的地址解析服务 根据地址在地图上定位...能力目标 了解Google Map服务 掌握获取Google Map API Key的方法 能够根据 GPS信息在地图上定位 能够根据GPS信息地图上跟踪用户轨迹 掌握调用Google的地址解析服务...在本章中我们首先对Google Map进行简单的介绍,然后介绍Android中进行Google Map开发需要的准备工作,最后通过一系列的案例讲解了在Android中进行Google Map开发的方法及技巧...Google Maps 是通过在地图上添加层,然后再在这个图层上面添加标记来实现此功能的。Android提供了多个类来实现在地图上添加层。...上一章中我们已经介绍了如何通过GPS来获取定位信息,因此如果把前面介绍的GPS定位与本章中Google Map结合起来,就可以非常方便地开发出GPS导航应用。

    8710

    追根溯源解杂音之谜,臻于至善得完美音质

    一、问题背景与分析 不久前,团队发现其Android平台App在播放MV视频《凤凰花开的路口》时,会带有如电流声一般的杂音,这影响了用户体验。...三、问题分解与切入 在梳理出播放流程后,标记出找到有可能出错的环节,方便进行“分层定位”(图中黄色标记) 播放下载文件是否有问题; 数据读取是否有问题; 音频解码逻辑是否有问题; AudioTrack的设置是否有问题...1、播放下载文件是否正常 把Android平台播放的ts文件与各平台的进行比对,发现两者一样,该环节正常。...2、AudioTrack设置是否正常 通过日志检查AudioTrack以下配置参数: 采样率 位深 频道 以上参数设置的值与音频流的相符合,该环节正常。...对比分析可得出: 从频谱图中看出,异常的PCM在人耳十分敏感的频响(1000~8000Hz )区域内的音频数据严重缺失,导致“杂音问题” 从波形图中看出,异常的与正常的无声区和有声区都吻合,若解封装、解码逻辑出现异常

    3.1K81

    Android Studio 4.1 发布啦

    https://developer.android.com/studio/releases/gradle-plugin#4-1-0 新数据库检查器 使用新的 Database Inspector 可以在应用运行的过程中检查...模拟器 现在用户可以直接在 Android Studio 运行 Android 模拟器,该功能可以帮助开发者节省屏幕空间,使用快捷按键可以在模拟器和编辑器窗口之间快速导航,可以在一个窗口中查看模拟器和代码布局...UI包括以下改进: Box selection:现在在 Threads 部分中,开着可以拖动鼠标以执行矩形区域的框选择,通过单击右上角的 Zoom to Selection 按钮来放大该区域(或使用M...有关如何记录系统跟踪的基本用法说明,请参阅“使用CPU Profiler检查CPU活动”的“ 记录跟踪”部分 。...Apply Changes 为了在迭代应用程序时提高工作效率,Google 对运行Android 11 Developer Preview 3或更高版本的设备的“Apply Changes”进行了以下增强

    6.5K10

    Android性能优化典范(1)

    【长文,建议PC端阅读】 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。...下面会讲解Android系统是如何处理UI组件的更新操作的。 通常来说,Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。...但是我们可以通过canvas.clipRect()来帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。...同时clipRect方法还可以帮助节约CPU与GPU资源,在clipRect区域之外的绘制指令都不会被执行,那些部分内容在矩形区域内的组件,仍然会得到绘制。 ?...除了clipRect方法之外,我们还可以使用canvas.quickreject()来判断是否没和某个矩形相交,从而跳过那些非矩形区域内的绘制操作。

    63420

    Android 性能优化典范

    2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。...下面会讲解Android系统是如何处理UI组件的更新操作的。 通常来说,Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。...但是我们可以通过canvas.clipRect()来 帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。...同时clipRect方法还可以帮助节约CPU与GPU资源,在clipRect区域之外的绘制指令都不会被执 行,那些部分内容在矩形区域内的组件,仍然会得到绘制。...[1240] 除了clipRect方法之外,我们还可以使用canvas.quickreject()来判断是否没和某个矩形相交,从而跳过那些非矩形区域内的绘制操作。

    1K10

    热点图像的制作

    标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面。...标记是在图像地图中划分作用区域的,因此其划分的作用区域必须在图像地图的区域内,所以在用  标记划分区域前必须用HTML的另一个标记   map>来设定图像地图的作用区域,并为指定的图像地图设定名称...制作方法:    1、插入图片,并设置好图像的有关参数,且在标记中设置参数usemap="newbook" ismap,以表示对图像地图(newbook)的引用;    2、用map>标记设定图像地图的作用区域...> map> 在制作本文介绍的效果时应注意的几点:    1、在标记不要忘记设置usemap、ismap参数,且usemap的参数值必须与map>标记中的name参数值相同,也就是说...,“图像地图名称”要一致;    2、同一“图像地图”中的所有热点区域都要在图像地图的范围内,即所有标记均要在map>与map>之间;    3、在标记中的 cords

    1.1K100

    Android Camera2 实现触摸对焦功能(Touch to Focus)

    之前在 Android Camera2 简介 这篇文章中简单介绍了下 Camera2 中 AF/AE 对焦区域如何进行设置,之前是通过手动计算对应关系实现的,但这种方式需要考虑到前后摄的区别,前摄和后摄坐标映射有区别...,通用性不好,本文讲一下如何通过矩阵(Matrix)来实现这个过程 为什么要进行坐标映射 由于我们预览界面通常都是竖屏,而对于 Camera 底层的坐标来说,一般预览竖屏方向和后摄有90度夹角,和前摄有...Camera API 2 中的区域也有区别,具体和预览坐标对应关系如下图(以后摄为例): 图片中蓝色框表示手机预览界面,紫色线条坐标为Android View坐标系,绿色为 Camera 坐标系,...步骤为: 判读是否是前摄,是否需要镜像翻转 transform.setScale(mirrorX ?...CaptureRequest.CONTROL_AF_TRIGGER,CaptureRequest.CONTROL_AF_TRIGGER_START); try { //触发对焦通过capture发送请求, 因为用户点击屏幕后只需触发一次对焦

    3.3K20
    领券