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

Android大坑集锦

保持一致 设置可见性:setVisibility(View.VISIBLE) 这些方法有的可以,有的不行,或许跟版本有关,或许Android本身不是很支持用setImageUri网上获取图片吧!...三、 DrawerLayout must be measured with MeasureSpec.EXACTLY 这个问题出现原因多是: 多个可滑动控件在同一个布局界面中嵌套使用,导致滑动冲突...显示不了数据 RecyclerView 需要重新设置一下LayoutManger才可以显示: // 计算RecyclerView大小,可以显示器内容 mRecyclerView.setLayoutManager...LogCat无法打印信息 关掉手机或模拟器中运行应用,重新打开应用即可。...,然后调用scrollToPosition来实现,但是今天在同一个方法里调用scrollToPosition,发现一行执行了,下面的行却未执行?

1.2K40

记一次全民K歌crash定位过程

检查了业务逻辑Footer相关代码并与Header进行了对比,没找到合理解释,暂且放下并标记为线索二:RecyclerView创建了两个ViewHolder并指向了同一个Footer 继续看上面提到另一个细节...这是很奇怪一个现象,因为log来看,数据是加载成功了,用户也有在列表中进行滑动、送礼、收听之类互动操作,所以,我们列表一定是可见。...状态与数据集产生了不同情况,往往出现在Adapter中列表数据发生了变化而又没有调用notityXXX方法通知到RecyclerView情况下。...①② 通过position可以mAttachedScrap正确获取到原来ViewHolder并直接复用 ③ 通过position取到了FooterViewHolder,发现类型不同,把它从布局中...RecyclerView列表状态与Adapter数据不同步,跳转到其它Activity再返回时,触发了RecyclerView重新布局,检测到了状态不对并抛出了异常。

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

vivo官网APP全机型UI适配方案

再试了多次依旧如此,肉眼可见切换过程显然不能满足我们需求。这说明通过java代码动态调整横竖屏技术方向是行不通。综上所述,通过同一份代码无法满足PAD端和直板屏互斥需求。...(1)这就要提前准备好数据源,保证在页面变化时,立即notify。(2)我们页面列表最好使用recyclerview,因为recyclerview支持局部刷新。...在区分不同设备前,先看下能够设备中获得哪些信息?...Answer:以不变应万变,使用一套物料,适配不同机型已经可以落地了,不用再担心在不同机器展示不统一问题。...5.2.2 我们还有什么要改进回首方案,我们这里做到使用全屏模式去适配不同机型,更多适用于像京东、淘宝、商城等电商类APP,实际,现在有些非APP会采用分栏形式做适配,这也是一种跟用户交互方式

1.6K30

JankStats 推出 alpha 版本

例如, API 24 开始就可以使用 FrameMetrics 获取相关数据,后续多个版本也在进一步丰富该功能,以便为您提供更多详细信息。...该日志是我在应用中开始滑动 RecyclerView获取。...有关这些界面状态详细信息,请阅读下文。 真实数据 不同于最近基准库,创建 JankStats 目的是为您提供来自用户设备结果。...能在开发机器上调试问题固然很好,但在现实中,用户会根据迥异约束条件,在不同设备使用应用,对于这类情况,本地调试可能并不能发现和解决问题。...这样一来,当您 JankStats 获取报告时,不仅可以知道每帧里各种事件花费时间,还可以了解用户在那一帧期间做了什么,这可能会是相当有用信息。

1.1K60

IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

我们还发现每次进入“消息”列表时都需要从数据库中获取“消息”列表数据,加载更多时也会数据库中读取会话数据。...读取到会话数据以后,我们会对获取会话进行过滤操作,比如不是同一个组织下会话则应该过滤掉。...那么在获取用户信息时候会 SP 中先读取出来(IO 操作),再反序列化为对象(反射)。...这一系列操作非常耗时,所以我们决定把该操作 onBindViewHolder 中提取出来,提前将生成数据放入数据源,用时候直接数据源中获取。...为了保证用户感知不到加载等待时间,我们打算在用户将要滑动到列表结束位置之前获取更多数据,让用户无痕地下滑。

1.6K20

实践 | Google IO 应用是如何适配大尺寸屏幕 UI

应用在大尺寸屏幕 (平板、可折叠设备甚至是 Chrome OS 和台式个人电脑) 使用体验是我们关注点之一: 在过去一年中,大尺寸屏幕设备越来越受欢迎,用户使用率也越来越高,如今已增长到 2.5...响应式导航 在平板电脑这类宽屏幕设备或者横屏手机上,用户们通常握持着设备两侧,于是用户拇指更容易触及侧边附近区域。同时,由于有了额外横向空间,导航元素底部移至侧边也显得更加自然。...这种布局方式带来一个特别的挑战是,同一台设备在不同配置下可能有不同最佳显示方式,比如平板电脑竖屏对比横屏显示就有差异。...我们替代方案是让会议列表和双窗格 Fragment 共享同一个 ViewModel,其中又包含了一个 Kotlin 数据流。...每当用户列表选中一个会议,我们会向数据流发送一个事件,随后双窗格 Fragment 就可以收集此事件,进而转发到会议详情窗格 NavController: val detailPaneNavController

2.1K20

关于RecyclerView你知道不知道都在这了()前言目录正文

第一篇打算使用方面入手,力求将 RecyclerView 开放给开发人员所有接口都体验一番。...四列.png 这种网格布局不管是 Tv 应用还是手机应用都挺常见,Tv 经常需要有多行或多列形式来展示各个卡位信息,而手机上一些类似于九宫格之类布局也可以用这个实现。...哈哈哈,答案是没啥不同,LinearLayoutManager 实际也是不需要 Context ,看看它源码就会发现它根本没使用这个参数,可能是早期版本有需要用到,然后新版不需要了,为了让开发者兼容旧代码...场景1日志.png 0 position Item 明明已经数据源中被移除掉了,但由于日志打印时机是在界面刷新之前,因此可以看到通过 getLayoutPosition() 获取是界面上还未刷新之前...getAdapterPosition() 使用场景是,当数据源发生变化,且界面刷新之前,你又需要获取 Item 在数据源中实际位置时才需要考虑使用该方法。

3.1K60

RecyclerView滑动时卡顿怎么办?

我遇到第一个问题就是滑动时候卡顿,无法忍受,于是就在网上找了很多文章,看了很多代码,在这里就给大家总结一下这两天我觉得对这个问题处理有效解决方式。...1.recyclerviewitem加载顺序 recyclerview 使用大家肯定不陌生了,但是每个item加载顺序还是有必要了解一下,知道item显示出来流程。...) onViewAttachedToWindow(当Item进入这个页面的时候调用) onBindViewHolder(将数据绑定到布局,以及一些逻辑控制就写这啦) onViewDetachedFromWindow...我们对于滚动过程中,卡顿判断可以打开手机开发者选项中:GPU呈现模式分析->在屏幕显示为条形图。就可以非常直观看到滑动过程中有没有卡顿了。...有问题去解决,总归RecyclerView是非常棒控件,值得去学习,使用。 大家有什么问题可以留言,一起学习交流,或者有什么更好办法,欢迎分享。

3.1K20

《移动互联网技术》第五章 界面开发: 掌握Activity基本概念,Activity堆栈管理和生命周期

Intent除了启动同一个应用中活动外,还可以打开移动设备其他应用活动,实现不同应用功能共享。...设置不同布局管理器会产生不同显示效果。最后,设置RecyclerView适配器,把数据传给定制知识点适配器。...另外,可以在不同活动中重用同一个碎片,以提高开发效率。手机和平板兼容开发方式就采用碎片来实现。 在活动上有两种添加碎片方式:一种是静态方式,另一种是动态方式。...Intent中取出数据时,需要根据数据类型调用相应get函数,比如使用getStringExtra()函数来获取字符串类型数据,函数参数是对应数据键值。...Intent中获取图片uri,通过输入流读取图片数据,然后解码。

10810

Xamarin 学习笔记 - 配置环境(Windows & iOS)

通过使用Xamarin.Forms,用户UI界面通过一个统一框架,也就是XAML,可以同时用于三种不同平台。...而我们尝试安装GenyMotion作为Android仿真器,但是它依赖是Visual Box。Hyper-v和Virtual Box无法工作在同一台机器。...之后,为了尽可能减少机器内存消耗,我们使用我们自己手机(三星,华为……),我们安装了相应USB驱动,之后开始编译并查看运行结果,但是在特定机型我们始终会碰到一些问题。...通过将你设备与IDE配对,我们可以在设备直接部署,测试和调试应用程序。 那么,我们如何使用它? 这很简单,我们可以设备中选择一个新目标开始使用这一功能。 ? ?...一旦发布并使用了应用程序,开发人员就想知道发生了什么并且在发生崩溃时易于维护,你可以应用程序字段中获取崩溃报告中实时堆栈跟踪。

6.1K20

RecyclerView 居然还能实现吸底效果

测量RecyclerView内容高度实现 这种方式很直观,我们先获取RecyclerView控件高度h1,设置完数据后再获取RecyclerView内容高度h2,然后将h1与h2进行比较: ①如果h1...②让Adapter支持两种布局,普通Item和Footer布局 ③在给RecyclerView设置完数据后,获取RecyclerView控件高度h1和RecyclerView内容高度h2 ④如果h1...③获取h1和h2值:为了避免recyclerView获取高度0,我们需要在给RecyclerView设置完数据之后,通过View#post(Runnable)方法获取。...我们在onDrawOver中获取到第一个可见子View,然后根据id里面获取到头部View,接着将这个用canvas将这个View绘制出来即可。 有兴趣同学可以自行实现。...在多数情况下,lastView跟lastVisibleView不是同一个,只有在最后一个可见View底部刚好达到RecyclerView下边界时候,lastView跟lastVisibleView就是同一个了

3K20

QQ音乐TV版 Leanback接入实践分享(一)

对于比较成熟开发团队来说这一点价值就没有那么大,不过依旧可以通过研究为什么Google要这么设计页面来学习TV用户使用习惯,这也是十分重要信息。...开发者在使用过程当中几乎只需要关注数据填充部分功能实现即可,极为方便。...3.2 数据填充 ? 原先在我们使用RecyclerView/ListView时,只需要实现对应Adapter接口即可。...而PresenterSelector则承担了之前viewType相关功能,根据数据类型来调用不同Presenter进行ViewHolder创建。...相比其他support库来说,这个库无论是更新频率还是完成度上都稍有不足:比如经常有莫名其妙仅限Library Group访问变量和方法;内部接入RecyclerView版本较低,存在着历史遗留问题无法解决等

3.8K31

GP TEE之安全威胁分析

举例来说,一个攻击者可能试图偷取设备拥有者内容(比如存储在手机密码)或者第三方服务提供商内容;或者不正当获取TEE或TA服务(比如在某个设备或在其他设备上访问公司网络或者非认证方式使用DRM...在没有兴趣或者没有可能性大规模扩散攻击情况下下,这两类攻击者可能是同一个人。 实际不同设备管理和部署模型,比如说服务,产生不同安全威胁模型。...在工业环境下使用设备,由于服务安装被严格控制,终端用户去破坏这些服务没有任何价值,攻击模型主要是着眼与总体软件攻击和漏洞。实际本身不太容易被复制成大范围访问同类设备攻击是不可预知。...按照设备使用不同方式,考虑到认证阶段对于攻击者不同手段都是可行,软件或者硬件不同假设可能是有效,由于可能用于不止一个设备,当认证和使用阶段隔离,在一个潜在破坏方式下,面对非管理型设备时,一个攻击非常容易被广泛传播...基础设备攻击者:此种攻击方式攻击者为了某种利益是终端用户或者某个人,有物理途径访问目标设备,攻击者认证器、网上指导手册来获取攻击代码或应用研究如何实施攻击,下载使用工具来对设备进行越狱、root、刷机

1.1K80

壹二APP开发实践回顾总结出40条精要

proguard-android-optimize.txt ,官方这样解释: 要想做进一步代码压缩,请尝试使用位于同一位置 proguard-android-optimize.txt 文件。...等参数为空时候 bugly 会报错,无法统计; 13、Gson 可以直接设置使用序列化注解,这样就可以直接混淆model了,另外 model 不写get 或者 set 方法也挺好,即减少了方法数量...链接 29、 RecyclerView 更新数据如果有动画的话,那么应该先清除所有的数据,再添加新数据,不然动画效果和以前列表会同时出现,特别诡异。...、绑定 holder,数据无法做到复用。...最优方案是考虑给这种类型每个 holder 都设置不同 type,保证唯一性,这样就可以实现创建一次,holder 不被复用,数据可复用。

86740

仿触手直播首页切换效果

源码分析 总结 1 前言 前几天在看手机直播时候,自己就用上了触手app。...所以手机上面显示永远是RecyclerView中第一个item了,只不过在手指滑动时候,去改变数据源。 ? ?...源码截图中看到该类是一个静态抽象类,说明我们要使用时候,需要去实现该类了。...这里看似代码这么长,其实是在下拉时候,获取nextView对应是屏幕上方item,也就是RecyclerView最后一个item,因为最后一个item是放在了屏幕上面;在上拉时候,获取...因为在SlideRecyclerView滑动监听里面是无法监听到如果滑动到顶部时继续往下滑和滑动到底部时继续往上滑操作,因此这里就通过ontouch坐标该变量来是否打开外层RecyclerView

54420

全面超越Appium,使用Airtest超快速开发App爬虫

爬虫开发本着天下工具为我所用,能让我获取数据工具都能用来开发爬虫这一信念,决定使用Airtest来开发手机App爬虫。...你今天使用这一句话成功了,明天热门关键词变化了,那么你代码就无法使用了。所以此时需要使用name这个属性。...这里有一点需要特别注意,Airtest只能获取当前屏幕元素布局信息,不在屏幕内容是无法获取。这一点和Selenium是不一样。 滑动屏幕使用命令为swipe,滑动屏幕需要使用坐标信息。...单独使用Python控制手机 在Airtest操作手机虽然方便,但是不可能在每一台电脑都安装Airtest吧。所以需要想办法把代码Airtest这个程序中分离出来。...如何获取屏幕文字 由于Airtest编辑器中代码运行后无法正常打印出中文,因此后面的代码都直接在PyCharm中执行。 既然要做爬虫,就需要获取手机文字内容。

1.4K20

2017年总结笔记整理

reboot 重启盒子 然后就可以安装 debug 应用 场景: 如果开发盒子系统应用时,当通过 AS 编译运行到盒子时,如果盒子已装有 release 版,那么 AS 是无法将项目跑到盒子...这是最近发表一篇关于 View.post() 到底干了些什么事博客,内容主要是源码分析了上述三个问题,投给了郭神了,也过啦,感谢郭神。...链接给博客里,我主要是基于滑动场景,源码分析了上述三个问题,问题有结合一些前提和日志,所以如果感觉问题就看有点懵可以点进去看看具体说明。...所以即使是在不同线程中使用同一个ThreadLocal对象get() 方法来获取数据,内部其实只会到当前线程数组里去取相应数据,所以才能做到线程之间互不影响存取数据,不是当前线程自然拿不到当前线程成员变量...,也就是说如果使用不同 ThreadLocal 对同一个线程中做get(),set() 操作的话,虽然操作同一个 table 数组,但即使get(),set()key值一致,实际获取数据是相互独立

734110

RecyclerView | 在 RecyclerView使用 ListAdapter

RecyclerView 可以很高效地显示列表数据。对于静态列表数据,默认 adapter 足矣。然而,在多数情况下,RecyclerView 数据是动态变化。...这样用户可以很直观地看到列表数据变化。虽然没有 ListAdapter 也可以实现动画效果,但是这就需要开发者自行实现,并且由于带有动画视图需要重绘,所以无法达到同样性能表现。...为了能够识别新数据,DiffUtil 需要您重写 areItemsTheSame() 和 areContentsTheSame()。areItemsTheSame() 检查两个元素是否为同一元素。...getItem() 数据列表中获取指定位置元素了。...仅需几步简单操作就可以在您 RecyclerView使用 ListAdapter。现在您应用可以通过使用 ListAdapter 来更新那些发生变化元素以获得更好性能和用户体验了。

1.4K20
领券