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

Android 12 构建更现代的应用 Widget

您可以将 Widget 理解为一个 "一目了然" 的应用视图,让用户无需从主屏幕打开应用的前提下,就能对应用数据和核心功能一览无余。...实现圆角 Android 12 许多关键的界面元素都开始采用圆角设计,为了使 AppWidget 与其他系统组件样式之间看起来一致,Android 12 引入了 system_app_widget_background_radius...,并将其转换为远端视图显示到 Widget ,同时还能用到前文中提到的 Android 12 的新 API,并尽可能的让其向后兼容。...定义内容时,不再使用 XML 语法,而是使用 Compose 语法,要显示的内容将会被转换为远端视图展示 AppWidget 。...△ SizeMode.Responsive 选项示意图 同样,我们还可以 Content() 方法定义更加多元化的样式,让 Widget 不同的尺寸下展示更独特的内容。

1.9K20

Android Gradle 插件】Gradle 构建机制 ⑤ ( Android Studio 查看 Android Gradle 插件源码 )

文章目录 一、创建工程 二、修改 build.gradle 构建脚本 一、创建工程 ---- 选择 " 菜单栏 / File / New / New Project… " 选项 , 创建默认类型工程即可..., 输入工程名称 ; 二、修改 build.gradle 构建脚本 ---- 将根目录下的 build.gradle 构建脚本的 dependencies 依赖的 classpath "com.android.tools.build...模块下的 build.gradle 构建脚本 , 删掉所有代码 , 进行如下配置 : apply plugin: 'java' sourceCompatibility = 1.8 dependencies...:gradle:4.2.1 依赖 ; 编辑完成后 , 点击右上角的 " Sync Now " 按钮 , 进行 Gradle 配置 ; 配置完成后 , 即可在 Project 面板的 External...AppExtension 源码如下图右侧所示 ; 右键点击该依赖库 , 弹出的菜单中选择 " Library Properties… " 选项 , 可以看到该源码的详细地址 : C:\Users

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

UnityAndroid 触发home,回收覆盖UnityPlayerActivity上层的activity的问题

activityUnityPlayerActivity上,这个时候如果安卓手机点击home回到桌面,再点击图标返回,发现除了UnityPlayerActivity,其他的activity都被回收了。...分析 将打包的apk解析出AndroidManifest.xml发现,UnityPlayerActivityAndroidManifest.xml的launchMode是singleTask,发现问题了...天真的想法一: 一开始天真的我发现,修改一下项目的AndroidManifest.xml的UnityPlayerActivity的launchMode就ok了。...修改之后,重新运行项目,相同的操作,问题还是存在;于是我又重新反编译解析出apk的AndroidManifest.xml,惊讶的发现:AndroidManifest.xml的UnityPlayerActivity..." android:value="true" /> 这样做就可以跳过被home回收的问题了。

4.1K52

Android Gradle 插件】组件化的 Gradle 构建脚本实现 ③ ( Gradle 构建脚本实现 AndroidManifest.xml 清单文件切换设置 )

Gradle 构建脚本实现 AndroidManifest.xml 清单文件切换设置 在上一篇博客 【Android Gradle 插件】组件化的 Gradle 构建脚本实现 ① ( 组件化简介 |...创建组件化应用 | 依赖库模块 / 应用模块 切换设置 ) 最后提到了 Gradle 构建脚本 , 需要实现 依赖库模块 / 应用模块 切换设置 , 主要涉及如下两个方面 : build.gradle...构建脚本 切换设置 , 切换 应用 / 依赖库 ; AndroidManifest.xml 清单文件 切换设置 , 设置 启动 Activity 项 ; Android Gradle 插件】组件化的..., 每个应用 只能有一个 启动 Activity , 如果有多个肯定会报错 ; 组件化 : 模块化模式 : 正常的模式 , 依赖库不可独立运行 , 作为依赖库使用 , 此时 依赖库不能存在启动...构建脚本实现 AndroidManifest.xml 清单文件切换设置 ---- 模块下 的 build.gradle 构建脚本 的 " android#sourceSets#main " 层级下

2K50

Android开发笔记(一百零一)滑出式菜单

可是LinearLayout作为水平展示时有点逗,因为如果下面有两个子视图的宽度都是match_parent,那么LinearLayout只会显示第一个子视图,第二个子视图却是怎么拉也死活显示不了。...办法肯定是有的,Android开发笔记(三十五)页面布局视图,我们提到margin和padding都可用来设置空隙,空隙的数值都是正数,其实空隙值也能是负数,负数表示该视图被隐藏了一部分,仿佛一张纸插了部分纸面到书中...所以我们可以给视图添加触摸监听器OnTouchListener,触摸坐标发生变化的同时,给菜单子页面隐入隐出对应的宽度,从而达到抽屉式拉出菜单的效果。...现在有个开源的HorizontalListView,它是水平滚动的列表视图,如果该视图只有两列,左边一列作为菜单页面,右边一列作为内容页面,这就很类似侧滑菜单的功能。...2、菜单默认左边页,内容默认右边页,所以首次加载视图时,页面要自动滑到右边的内容页(调用scrollTo方法滚动到内容页)。

1.1K70

【基本功】Litho的使用及原理剖析

Litho是高效构建Android UI的声明式框架,通过注解API创建高优的Android视图,非常适用于基于Recyclerview的复杂滚动列表。...Litho的使用 Litho的使用方式相比于传统的Android来说有些另类,它抛弃了通过XML定义布局的方式,采用声明式的组件Java构建布局。...2.1 Litho和原生Android使用上的区别 Android传统布局:首先在资源文件res/layout目录下定义布局文件xx.xml,然后Activity或Fragment引用布局文件生成视图...3.4.2 细粒度复用优化内存原理剖析 Litho,item回收前,会把LithoView挂载的各个绘制单元拆分出来(解绑),由Litho自己的缓存池去分类回收展示前由LithoView按照组件树的样式组装...使用细粒度复用的RecyclerView的缓存池不再需要区分模板类型来缓存大量的视图模板,只需要缓存LithoView容器。细粒度回收视图单元数量要远远小于原来缓存在各个视图模板视图单元数量。

2.1K10

Android面试大纲(集合)

使用方法 创建Service继承自IntentService 覆写构造方法和onHandlerIntent()方法 onHandlerIntent()执行耗时操作 10 视图工作机制面试题 Android...进阶——Android视图工作机制之measure、layout、draw http://blog.csdn.net/qq_30379689/article/details/54588736 Android...3、ListView的优化 重用convertView 使用ViewHolder 图片三级缓存 监听滑动事件 少用透明View 开启硬件加速 12 Android项目构建面试题 1、android构建流程...1、recycle 安卓3.0以前Bitmap是存放在堆的,我们只要回收堆内存即可 安卓3.0以后Bitmap是存放在内存的,我们需要回收native层和Java层的内存 官方建议我们3.0以后使用...栈区:方法体的局部变量会在栈区创建空间,并在方法执行结束后会自动释放变量的空间和内存 堆区:保存动态产生的数据,如:new出来的对象和数组,不使用的时候由Java回收器自动回收 3、Android解决内存泄漏的例子

1.1K20

利用HorizontalScrollView实现滑动页面时的缩放效果

在前面的文章也有关于 HorizontalScrollView 的使用:Android使用HorizontalScrollView实现水平滚动 。...效果如下(可以主页面上的右侧向右滑动都可以实现该效果): ? 这里需要用到自定义的 HorizontalScrollView ,让其作为布局文件的根标签。...(左边的视图) private int mHalfMenuWidth; private boolean isOpen; // 标记菜单是否打开 private boolean once; // 是否已经初始化回收菜单...mContent.getLayoutParams().width = mScreenWidth; } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } // 视图计算完自身及子视图的宽高后...ev) { switch (ev.getAction()){ case MotionEvent.ACTION_UP: // 松开手 int scrollX = getScrollX(); // 水平滑动的距离

1.4K10

RecyclerView技术栈参考资料:

滚出可见区域的条目将被回收,并在下一个条目可见的时候被复用。 我们可以从下图中得到更直观的解释: ? 左边的图是数据初始化后的示例,当向上滚动视图的时候,当条目不可见之后将被回收。...定制Item条目 - ListView只能实现垂直线性排列的列表视图,与之不同的是,RecyclerView可以通过设置RecyclerView.LayoutManager来定制不同风格的视图,比如水平滚动列表或者不规则的瀑布流列表...设置条目分割线 - ListView可以通过设置android:divider属性来为两个Item间设置分割线。...Android团队很早之前就推荐使用“ViewHolder设计模式”,但实际上他们并没有把这种概念强加给开发者,而且也没有要求开发者Adapter必须使用ViewHolder pattern。...ItemAnimator作触发于以下三种事件: 某条数据被插入到数据集合 从数据集合移除某条数据 更改数据集合的某条数据 幸运的是,Android默认实现了一个DefaultItemAnimator

1.2K10

Facebook构建高性能Android视频组件实践之路

Litho以最优的渲染性能优化了布局树,构建出了扁平的视图结构。...资源回收利用 Android内置的RecyclerView可以基于视图的类型将其保存在不同的缓存池中,这对于创建了很多不同类型视图的用户界面来说可能会是一个问题。...相比之下,Litho的回收系统复用了更小的用户界面构建模块,比如文本或图片,而不是整个视图。通过使用一个核心视频组件,同样的视图可以被循环使用于所有的视频新闻类型。...当两个视频新闻同时出现在屏幕上时也需要注意:一个视频视图可以从以前的新闻回收,但是第二个视图需要新建。...当RecyclerView需要分配一个新的视图对象,特别是像视频视图那样的复杂视图时,会带来丢帧的风险。我们希望优化这种情况,因此我们Litho创建了预分配功能。

1.6K100

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

标题图 UI的描述 对于Android应用程序,所有用户界面元素都是由View和ViewGroup对象构建的。View是绘制屏幕上能与用户进行交互的一个对象。...要声明布局,可以代码实例化对象并构建,最简单的方法也可以使用xml文件。 <?xml version="1.0" encoding="utf-8"?...图片 LinearLayout线性布局 常用属性: id:为该组件添加一个资源id orientation:布局的排列方式,有两种方式: horizontal水平 vertical竖直 layout_width...background:为该组件添加一个背景图片 LinearLayout是一个视图组,可以一个方向垂直或者水平分布所有子项,用android:orientation属性。...相对布局 RelativeLayout是一个相对布局的视图组,用来显示相对位置的子视图类,默认情况下,所有子视图对会分布左上角。

1.8K20

学习笔记 | Android Studio安卓开发入门经验总结 干货

程序代码java: java目录下的对应包名存放包括Activity在内的各java程序文件。...layout: 以xml文件形式编写的用户交互界面,可以Android Studio中进行实时渲染预览、可视化编辑等。...values: arrays.xml: 存放数组,程序按照自定义的数组名进行读取。 colors.xml: 存放Hex色值,程序按照自定义的颜色名字进行读取。...3.3.5 回收型列表视图RecyclerView的使用 RecyclerView是基于viewholder的回收理念在ListView上的一个升级版,功能强大,当然不需要进行回收的场景就当然不要用了...3.3.6 适配器理念Adapter 如上所说,列表视图需要一个中间件:适配器,来将数据适配到布局上,这是一个从结构化的数据到结构化的视图的中间过程,纵观整个项目开发,可以发现有很多地方使用这样的理念

2.3K60

麦吉太文 · 后端开发一面(附答案)

还有就是通过分库分表的方式进行优化,主要有垂直分表和水平分表。 说说jvm?(说了内存区域和垃圾回收) 参考:八股文之【JVM内存结构】 八股文之【JVM垃圾回收】 平时用jdk哪个版本?...勾玉:8或者11,介绍区别 浏览器输⼊url地址 ->>会发生什么过程? 勾玉:大体分为构建请求、传输过去、服务器构建响应、传输回来、浏览器渲染五步。...然后应用层构建HTTP请求报文 传输 传输层建立TCP连接,三次握手。...服务器的网络层比较数据包的目的IP地址,发现与本机的IP地址相同,服务器拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。...网络层比较数据包的目的IP地址,发现与本机的IP地址相同,拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。数据最后被传到应用层。

71620

iOS 与 Android 的APP 设计差异

iOS的两种常见导航形式,分段控制和底部标签栏 虽然两个操作系统中都有类似的功能(切换标签和分段控制,底部导航和标签栏),但导航形式仍然是iOS和Android之间的主要区别之一。...Android,按钮上的文字一般都是全大写。iOS原生应用的按钮中有时也能找到大写的文字,但更多的情况是出现在标题上。...而在iOS与之类似的按钮则叫做活动按钮,通常会放在底部导航的中间 左边是标准的iOS活动按钮;右侧是标准的Android浮动按钮 IOS与Android底部操作视图的差异 Android中有两种不同类型的底部操作视图...左边是标准的Android底部菜单视图;右边是标准的iOS标准菜单视图 触摸范围和系统网格之间存在的差异 iOS 和 Android的触摸范围略有不同 (iOS最小的触摸范围为44px @1x,Android...标签选项卡固定在一个位置不变,内容界面水平方向上进行移动 应用的最上层,切换目标通常被分在主要任务(这些任务可能彼此不相关)上。这些界面通过改变不透明度和缩放值来进行适当的转换。

3.2K10

Android从零单排系列二十九】《Android布局介绍——LinerLayout》

一 LinerLayout基本介绍 LinearLayout(线性布局)是一种Android中常用的布局管理器,用于水平或垂直方向上排列子视图。...设置布局属性: 可以通过每个子视图的布局参数设置不同的属性来控制子视图LinearLayout的位置和大小,例如android:layout_weight属性可以用来设置子视图的权重,实现按比例分配剩余空间...布局属性:通过视图的布局参数设置不同的权重、对齐方式和填充方式,可以灵活控制每个子视图LinearLayout的位置和大小。...可以使用android:layout_weight属性LinearLayout对子视图进行权重分配,实现灵活的空间占用和对齐。...五 总结 使用LinearLayout可以实现简单的线性布局,适用于需要按照水平或垂直方向对子视图进行排列的场景。它的灵活性和易用性使得开发者能够快速构建各种布局样式。

20730

Flutter区别于其他技术的关键是什么?

一开始,为了解决原生开发的高成本、低效率,出现了Hybrid混合开发,也就是原生嵌入依托于浏览器的WebView,Web浏览器可以实现的需求WebView基本都可以实现。...Flutter是构建Google物联网操作系统Fuchsia的SDK,它使用Dart语言开发APP,一套代码可以同时运行在iOS和Android平台上。...水平扫描时,显示器会发出一个水平同步信号(HSync);而当一帧画面绘制完成之后,电子枪恢复原位,准备下一次扫描之前,显示器会发出一个垂直同步信号(Vsync),显示器以固定的频率刷新,这个刷新率就是Vsync...可以看到,Flutter关注如何尽可能快地两个硬件时钟的Vsych之间计算并合成视图数据,然后通过Skia交给GPU渲染:UI线程使用Dart来构建视图结构数据,这些数据会在GPU线程进行图层合成,随后交给...Dart避免了抢占式调度和共享内存,可以没有锁的情况下进行对象分配和垃圾回收性能方面表现相当不错。

2.7K30

Android开发笔记(一百七十二)第二代翻页视图ViewPager2

notifyItem***方法,从而动态刷新某项视图; 3、除了当前页,也支持展示左右两页的部分区域; 4、支持翻页过程展示自定义的切换动画; 虽然ViewPager2增加了这么棒的功能,但它用起来非常简单..._content);     // 设置二代翻页视图的排列方向为水平方向     vp2_content.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL...());     vp2_content.setAdapter(adapter); // 设置二代翻页视图的适配器 运行测试App,水平方向的翻页过程如下图所示。...撤销刚加的边缘特效代码,再给测试页面的Java代码补充下面几行:     // ViewPager2支持翻页时展示切换动画     // 创建页面转换器,用于计算切换动画的各项参数     ViewPager2...content.setAdapter(adapter); // 设置二代翻页视图的适配器     // 把标签布局跟翻页视图通过指定策略连为一体,二者页面切换时一起联动     new TabLayoutMediator

2.2K30

Android界面性能优化必读

1.4 垃圾回收 垃圾回收器是一个应用运行期间自动释放那些不再引用的内存的机制,常称 GC 。频繁的 GC 也是导致严重性能问题的罪魁祸首之一。...越接近 16ms ,垃圾回收事件触发的时候,就越容易导致卡顿。 注意,Android4.4 引进了新的 ART 虚拟机来取代 Dalvik 虚拟机。...会动态提升垃圾回收的效率, ART 的中断,通常在 2 – 3 ms 间。...因此,尽管垃圾回收Android 5.0 之后不再是耗资源的行为,但也是始终需要尽可能避免的,特别是执行动画的情况下,可能会导致一些让用户明显感觉的丢帧。...512 M 内存的 Android 设备下所有操作过程的卡顿感是否能接受,不会感觉突兀怪异; 4.3 渲染性能差的根源 当你看到蓝色的线较高的时候,可能是由于你的视图突然无效了需要重新绘制,或者是自定义的视图过于复杂耗时过长

4.6K10

android常用布局详解「建议收藏」

view和布局 一个Android应用程序,用户界面通过View和ViewGroup对象构建Android中有很多种View和ViewGroup,他们都继承自View类。...center:居中显示,这里并不是表示显示LinearLayout的中心,当LinearLayout线性方向为垂直方向时,center表示水平居中,但是并不能垂直居中,此时等同于 center_horizontal...android:layout_weight: 权重,用来分配当前控件剩余空间的大小,如果你不设置,所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空间...例外的情况,LineayLayout布局中使用这个属性时需要注意: 当水平方向布局且子控件的宽度为fill_parent或match_parent时,值越小占据宽度越大,垂直方向也一样。...未完,,约束布局路上。

1.8K40
领券