首页
学习
活动
专区
圈层
工具
发布

获取屏幕上正在显示的activity 博客分类: Android小技巧

用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。...仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。...而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。 getRunningTasks有个整型参数,表示返回列表的最大个数。...那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。...("", "pkg:"+cn.getPackageName()); Log.d("", "cls:"+cn.getClassName());           至于这个能做什么,嘿嘿,我相信你知道的。

3.6K30

折叠屏上应用设计规范,了解一下?

规范布局 规范布局提供了一系列通用布局方案,对设计大屏幕应用非常有帮助。第一种是列表/详情,或列表网格视图的简单组合,同时在开始展示内容的屏幕起始侧,设置/不设置导航容器。...△ 列表/详情布局 支持面板可用于人们需要集中精力的体验中,例如文档。在屏幕尾侧或底部添加一块面板,以便于使用工具或上下文控件。...遵循 Material 指南,我们可以根据宽度的尺寸类别提供替代布局,将导航调整到最方便使用的位置。例如,小屏幕采用底部导航视图,中等屏幕采用 Navigation rail,大屏幕采用完整导航视图。...列表/详情 对列表/详情而言,AndroidX 中有个名为 SlidingPaneLayout 的专用控件,使用前需为它的两个子元素指定 layout_width,在运行期间,SlidingPaneLayout...大多数设备上的铰链区域宽度约为 48 dp,在桌面模式下也请避免将界面元素放在铰链区域,因为在这种设备模式下,用户几乎无法使用该区域的任何功能。

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

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

    应用在大尺寸屏幕 (平板、可折叠设备甚至是 Chrome OS 和台式个人电脑) 上的使用体验是我们的关注点之一: 在过去的一年中,大尺寸屏幕的设备越来越受欢迎,用户使用率也越来越高,如今已增长到 2.5...单窗格还是双窗格 在日程功能中,我们用列表-详情的模式来展示信息的层次。在宽屏幕设备上,显示区域被划分为左侧的会议列表和右侧的所选会议详细信息。...由于 Google I/O 应用使用了 Jetpack Navigation 实现不同界面之间的切换,这个挑战对导航图有怎样的影响,我们又该如何记录当前屏幕上的内容呢?...在宽尺寸屏幕上,这些列表项会转换为一格一格的卡片,卡片上直接显示了详细的内容。 △ 左图: 窄屏幕显示 Codelabs。右图: 宽屏幕显示 Codelabs。...,它在每个元素周围保留一定空间,这也解释了为什么我们会在 840dp 或更宽的屏幕上 (需要为 @dimen/codelabs_list_item_spacing 给定一个正值) 得到始终相同的元素间隔

    3K20

    UITableView在Flutter中是什么?

    那么,当这些基本元素的排列布局超过屏幕显示尺寸(即超过一屏)时,我们就需要引入列表控件来展示视图的完整内容,并根据元素的多少进行自适应滚动展示。...不过,这种创建方式要求提前将所有子Widget一次性创建好,而不是等到他们真正在屏幕上显示的时候才会创建,所以有一个很明显的缺点,就是性能不好。因此,这种方式仅适用于列表中含有少量元素的场景。...,用于1~3行(leading、title、subtitle)展示文本、图标等视图元素的场景,通常与ListView配合使用。...在Flutter中,因为Widget并不是渲染到屏幕的最终视觉元素(RenderObject才是),所以我们无法像原生的iOS或Android一样,向持有的Widget对象获取或设置最终渲染相关的视觉信息...总结 在处理展示一组连续、可滚动的视图元素的场景中,Flutter提供了比原生Android、iOS系统更为强大的列表组件ListView与CustomScrollView。

    7.9K10

    Android入门之旅

    android:src="@drawable/cake" //使用@符号表示在Android APP里面引用一个资源 //drawable是一种资源类型,能将图形显示在屏幕上...与数组的区别有以下几个方面: 数组列表的长度是可以改变的,数组列表中有多少元素其长度就是多少 数组列表是一种类型,数组的话,就比较基本 既然是一种类型,就可以调用各种各样的方法,你还可以继承它,覆盖一些方法等等...(可玩性更高吧) 数组列表只能包含对象数据类型,向 int 这种就只能使用它们的包装类了 注:一般来说固定长度的使用数组,不固定长度的使用数组列表 ArrayList 的文档在:这里 在 Java 中,...为了解决这个问题,有以下的思路: 我们不一次显示所有的啊东西,只是显示屏幕上需要的东西。就是根据屏幕,创建所需要的视图。如果屏幕不需要,我们就不显示,把它抛弃了;如果需要就建立一个。...这样成了一个可循环的了,屏幕上不需要的循环到屏幕上需要的。 做到这一步需要 一个可循环的ViewGroup + 一个配适器(ArrayAdapter) 。

    83600

    【Android从零单排系列二十】《Android视图控件——ListView》

    一 ListView基本介绍 ListView是Android开发中常用的列表视图控件,用于展示垂直滚动的可变长度的数据列表。...功能:ListView可以在有限的屏幕空间内显示大量的数据,并支持用户滚动浏览。它提供了一个可滚动的列表容器,可以逐项地展示数据元素。...可以在布局文件中添加控件来显示列表项中的各个元素。 添加数据:通过适配器向ListView添加数据,可以使用适配器的方法(如add()、addAll())添加单个或多个数据项。...getAdapter():获取当前设置的适配器。 getFirstVisiblePosition():获取当前可见区域的第一个列表项的位置。...getLastVisiblePosition():获取当前可见区域的最后一个列表项的位置。 invalidateViews():通知ListView刷新所有列表项的视图。

    2.9K10

    一文帮你搞定H5、小程序、Taro长列表曝光埋点

    02 监听列表内元素曝光 的常见方法 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值...长列表(或滚动视图)中元素的曝光埋点,关键是如何监听子元素的“曝光”事件。“曝光”即元素进入到了屏幕的可见区域,也就是能被用户看到了,这是人类的直观视觉感受,那么如何用代码的方式来判定呢?...缺点: 计算量大,性能损耗严重:这种计算方式需要监听滚动视图的滚动事件,在滚动回调事件内实时进行列表内所有元素的位置坐标计算(获取所有元素的位置并同当前可见区域进行对比),这样带来的计算量是相当大的,往往会造成页面的性能问题...03 列表内元素曝光事件 监听的具体实现 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值...(业务数据),后续就是根据述求随意的使用这些数据了,Taro内列表滑动元素曝光埋点搞定~ 04 总结 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载

    2.3K21

    Android开发笔记(七十五)内存泄漏的处理

    列表元素较多的时候,Android只加载屏幕上可见的元素,其他元素只有在滑动屏幕使其位于可视区域内,才会即时加载并显示。...当列表元素多次处于“展示->隐藏->展示->隐藏……”时,就有必要重用每个元素的视图,如果不重用,那么每次展示可视元素都得重新分配视图对象(从系统服务LAYOUT_INFLATER_SERVICE获取)...不过即使不重用适配,也仅仅造成当前页面的内存浪费;一旦用户离开该页面,原列表页面的内存就统统回收。所以严格来说,这种情况不是真正意义上的内存泄漏,只是内存管理不善造成的内存浪费。...适配器的相关介绍参见《Android开发笔记(三十八)列表类视图》。...重用适配可先判断convertView,如果该对象为空,则分配视图对象,并调用setTag方法保存视图持有者;如果该对象非空,则调用getTag方法获取视图持有者。

    1.5K20

    实战 | 认识 RecyclerView

    RecyclerView 是一个容器,它用于显示列表形式 (list) 或者网格形式 (grid) 的数据,比如文本或者照片。 当列表滑动的时候,实际上只有少量邻近的视图会显示在屏幕上。...当视图滑出屏幕时,RecyclerView 会复用它并且填充新的数据。由于它是通过回收已有的结构而不是持续创建新的列表项,所以它可以有效提高应用的时间效率和空间效率。...粉红色的方格表示屏幕上正在显示的表项,黄色的方格表示屏幕可视范围之外的表项是如何被回收并转为新的视图 为什么您需要使用 RecyclerView 呢?...随着用户滑动屏幕,ViewHolder会被回收 (使用新数据进行填充),已有的表项会在一端消失,并且在另一端显示一个新的表项。...该视图使用前面我们创建的用于显示文本的布局。

    1.9K30

    Android经典面试题之RecycleView 深度解析与面试题梳理

    引言 在 Android 开发中,列表和网格布局是非常常见的界面元素,它们用于展示大量数据集合。...RecyclerView 是 Android 提供的一个高效且功能强大的列表和网格布局管理器,它不仅提高了滑动的流畅性,还通过回收复用视图的方式提高了内存的利用率。...用户滚动 RecyclerView 时,LayoutManager 会计算哪些项应该显示在屏幕上,并决定哪些项可以被回收复用。...批量处理:使用 DiffUtil 类来处理数据集合的变化,减少不必要的视图更新。 视图复用:合理设计 ViewHolder,确保所有需要复用的视图都包含在内。...结语 RecyclerView 是 Android 开发中处理列表和网格布局的强大工具,它通过一系列优化机制提供了高性能的滑动体验和高效的内存管理。

    1.1K10

    RecyclerView | 在 RecyclerView 中使用 header 快人一步

    虽然您也可以在 LinearLayout 中将 TextView 置于 RecyclerView 之上来模拟 header 的效果,但是这个模拟的 header 在用户滑动屏幕的时候甚至是滑到列表底部的时候仍然会驻留在屏幕上...而使用真正的 header 元素,您可以实现在用户滑动 RecyclerView 的时候,header 随之移动到屏幕之外。...本文中的示例会在 RecyclerView 中添加 Header,列表中会显示不同类型的花。Header 显示 "Flower Finder",并且显示列表中花的数量。...onCreateViewHolder() 负责填充视图并且返回 HeaderViewHolder getItemCount() 仅返回数值 1,因为仅有一个 Header 元素 onBindViewHolder...如果您尚未阅读本系列中的其它文章,欢迎查阅以下列表并阅读。

    1.2K30

    ListView详细介绍与使用

    ListView 简介 ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式。继承自抽象类 AdapterView。...假如当屏幕一次可以显示 x 个 item 时(不用是完整的),那么 ListView 会创建 x+1 个视图;当第1个 item 离开屏幕的时候,此时这个 item 的 View 就会被回收,再入屏的...只有 item 完全离开屏幕后才会复用,这也是为什么 ListView 要创建比屏幕需要显示视图多 1 个的原因:缓冲显示视图。...第 1 个 item 离开屏幕是有一个过程的,会有 1 个 第一个 item 的下半部分 & 第 X+1 个 item 的上半部分同时在屏幕中显示的状态 这种情况是没法使用缓存的 View 的。...的长度逐一绘制 ListView 的每一行 获取数据时,通过 getItem() getItemId() 来获取 Adapter 中的数据 重点看一下 getView 实现方式一: 直接返回索引对应的数据的视图

    2.1K20

    Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的。View是绘制在屏幕上能与用户进行交互的一个对象。...用户界面布局 在你APP软件上的,用户界面上显示的每一个组件都是使用层次结构View和ViewGroup对象来构成的,比如,每个ViewGroup都是不可见容器,每个ViewGroup视图组用于组织子视图...如果你有了层次结构树,你可以根据自己的需要,设计出一些布局,但要尽量简单,因为越简单的层次结构最适合性能。 要声明布局,可以在代码中实例化对象并构建,最简单的方法也可以使用xml文件。 <?...相对布局: 指子控件以控件之间的相对位置或子控件相对于父容器的位置排列。 帧布局: 指所有子控件均放在左上角且后面元素直接覆盖在前面元素之上。...gridview.png ListView列表组件 ListView是一个用于显示列表的可以滚动的视图组,列表项也可以用适配器进行添加内容的。

    2.5K20

    应用宝基于Robotium自动化测试(上)

    4.2 Native控件获取与处理 (1)uiautomatorviewer 可以使用%ANDROID_HOME%\tools目录下的uiautomatorviewer.bat工具直接获取当前界面的控件结构及其...("loginBtn"); solo.clickOnView(loginBtn) (3)处理id相同的控件 在Android中,列表ListView采用的是Adapter形式,所以列表中的控件id 都是相同的...此时,需要先获取节点控件的父视图,通过父视图再查找相应的子视图。...图8.DevTools点击inspect后展示页面元素 知道了元素的属性后,即可调用相应API获取WebElement对象,通过By方式获取:getCurrentTxWebElements(By by)...图9.Assert中的断言 (2)ViewAsserts中的断言 使用android.test.ViewAsserts包中的断言:包括断言控件是否左对齐、右对齐、父视图是否包含某子视图等等。 ?

    2.5K60

    大前端开发中的“树” (下)

    它的作用是,CALayer 在做隐式动画时,CoreAnimation 就需要在设置一次新值和新值生效之间,对屏幕上的图层进行重新组织。...这意味着 CALayer 除了 “真实” 值(视图描述中设置的值)之外,必须要知道当前显示在屏幕上的属性值,而每个图层属性的显示值都被存储在呈现图层中。...4.5.3 渲染进程与渲染树 动画和屏幕上组合的图层被一个单独的进程管理,而不是应用程序,这个进程就是所谓的渲染服务。...使用这个树状结构,渲染服务对动画的每一帧做出如下工作: 对所有的图层属性计算中间值,设置 OpenGL 几何形状(纹理化的三角形)来执行渲染 在屏幕上渲染可见的三角形 五、Flutter 中的树 Flutter...当下次 vsync 信号到来时,Owner 会遍历 dirty 列表中的元素,让它们都重新执行一次对应的步骤。

    2.3K30

    【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题

    滑动过程中:如果后续滑动时,新的列表项进入屏幕,而之前回收的 ViewHolder 不足以复用(比如快速滑动导致临时需求增加),可能会额外多创建几个 ViewHolder作为 “缓冲”(比如 12 个)...6:onCreateViewHolder() 的调用时机和次数 滑动过程中:每次有新的列表项进入屏幕(无论是向上滑还是向下滑),都会触发 onBindViewHolder(),为复用的 ViewHolder...绑定新位置的数据(比如滑出屏幕的 item1 的 ViewHolder,会被重新绑定 item11 的数据)。...RecycleView的上下文 from方法用于获取LayoutInflater实例对象 在调用充气方法哈哈转化为view视图妙啊妙啊 参数之前用过前两个,这里三个,解释parent和...(2)ViewHolder 两者做关联还需要一个东西ViewHolder 视图口袋,它会对item的布局做一些管理,item本身会被放到ViewHolder里面; 作用:复用已经滑出屏幕的旧视图,缓存这些视图的引用

    21410

    Android 基础面试常常吊死在这几个问题上……

    面试官:我给你讲讲吧,你去别的公司面试你,你可以这样回答: OnCreate():这是第一次创建视图时。通常,这是我们创建视图,从包中获取数据等的地方。...但这是浪费的,因为在任何时间点上,只有10个左右的项目可以放在屏幕上,而其余项目则不在屏幕上。因此, RecyclerView 只创建屏幕上的10个左右的视图。这样,速度和内存使用率将提高10倍。...但是通过这种方式,当您到达列表的末尾时,将创建100个视图,并且的内存使用情况将与第一种方法相同。创建视图需要花费时间,因此您的滚动很可能不会很流畅。...这就是为什么 RecyclerView 会利用以下事实:滚动时,新行出现在屏幕上,而旧行消失在屏幕上。代替为每个新行创建新视图,而是通过将新数据绑定到旧视图来对其进行回收和重用! 应聘者:我学到了!...即使适配器返回膨胀视图以进行回收,仍然需要查找元素并进行更新。重复使用的一种方法 findViewById() 是使用 “ViewHolder” 设计模式。

    3.1K20

    【Android开发基础系列】Layout布局专题

    1 布局介绍 1.1 ViewGroup介绍         在 Android 中视图组是集合若干个控件在一起的元素,ViewGroup 有两种用法,一种是像普通的控件一样使用(如网页视图、旋转按钮、...1.1.1 Android的屏幕元素体系         在屏幕中控件的组织上,可以将各个视图(控件)组成一个视图组(ViewGroup),视图组是一个包含了 其他视图的视图。        ...1.2 布局(Layout)         布局(Layout)是各个控件在屏幕上的位置关系,视图组的几个扩展类与布局相关。...在 Android 中布局通常有以下几种不同的情况:         FrameLayout(框架布局):系统默认的在屏幕上就有空白区显示它;         LinearLayout(线性布局):让所有的子视图都成为单一的方向...,即垂直的或者水平的;         AbsoluteLayout(绝对布局):让子视图使用x/y坐标确定在屏幕上的位置;         RelativeLayout(相对布局):让子视图的位置和其他的视图相关

    1.6K20
    领券