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

Now in Android 14 —— 最新 Android 动态分享

Android 11 可空性 我们都知道 Kotlin 类型系统保障了 空安全 ,让我们得以书写更加安全代码。...但是 SDK 并不是所有代码都是 Kotlin,那么如何保证 Java 代码空安全呢? 答案就是 注解。...来自 Google AI 团队新发现。 添加了两种新前台服务类型,摄像头 和 麦克风 。...如果您应用要从前台服务访问摄像头或麦克风数据,则需要将对应 foregroundServiceType 值添加到清单。 应用可以支持设备上选择 可变刷新率。 模拟器现在支持前后摄像头了。...最新 Activity 1.2.0-alpha02 和 Fragment 1.3.0-alpha02 ,通过 ActivityResultRegistry 即可完成 startActivityForResult

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

利用Kotlin协程实现简单异步加载详解

前言 众所周知android当执行程序耗时超过5秒时就会引发ANR而导致程序崩溃。...因此实际开发我通常把耗时操作放在一个新线程(比如从网络获取数据,从SD卡读取图片等操作),但是呢androidUI更新只能在UI主线程中进行更新,因此当我们非UI线程执行某些操作时候想要更新...第一个协程里边我们又调用了launch(UI)创建并启动了一个新协程,这儿UI并不是我们自己创建,他是KotlinAndroid平台里边预定义一个CoroutineContext,代表着UI...也就是说当我们使用支持库时候我们可以Activity或Fragment中直接调用这个load函数(支持库里边AppCompatActivity和Fragment实现了LifecycleOwner接口...一旦ActivityonDestroy方法被调用时候,我们load()函数添加lifecycle观察者将会取消第一个协程,也会使第二个协程被取消,避免block()被调用。

2K20

Android Jetpack 更新一览

该库一些最新改进解决了常见功能需求,包括支持调整曝光补偿和访问有关摄像头状态和功能更详细信息。此外,现在可以摄像头运行时通过 Camera2Interop 改变摄像头设置,如 FPS 范围。...作为向稳定版过渡一部分,Hilt ViewModel 支持已经上升到核心 Hilt Android API,SavedStateHandle 已经被添加为 ViewModelComponent 默认依赖...在过去一年里,我们 Fragment 库上着力甚多,对其内部实现进行了清理并减少了未记录行为,使开发者更容易在他们应用遵循最佳实践,并编写可靠测试。...使用构建器来创建模式类型文件,然后将它们添加到存储。查询 "body:fruit" 将检索所有消息正文中带有 "fruit" 一词文档。...符号处理 实验性支持,我们对 Kotlin 代码基准测试,其速度比 KAPT 提高了 2 倍,还带来了对枚举和 RxJava3 内置支持。

1.5K20

Android开发实现ImageView加载摄像头拍摄大图功能

本文实例讲述了Android开发实现ImageView加载摄像头拍摄大图功能。分享给大家供大家参考,具体如下: 这个方法是从官方demo摘录,在此记录学习。...*/ takePhotoThenToShowImg.setImageBitmap(bitmap); galleryAddPic(); } } 最后可以将拍摄到照片添加到Media Provider...数据库,以便图库或者其他程序读取照片 /** * 将拍摄到照片添加到Media Provider数据库 */ private void galleryAddPic(){ Intent mediaScanIntent...Uri.fromFile(f); mediaScanIntent.setData(contentUri); this.sendBroadcast(mediaScanIntent); } 如果只需要缩略图的话,只要调摄像头拍摄直接处理结果就行...相关内容感兴趣读者可查看本站专题:《Android拍照与图片处理技巧总结》、《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总

57110

一起来看看 Android 官推 kotlin-first 图片加载库

Coil 是一个非常年轻图片加载库, 2020 年 10 月 22 日才发布了 1.0.0 版本,但却受到了 Android 官方推广, Android Developers Backstage...推广原因比较简单:一方面是这个库确实做得很好,另一方面是这个库完全是用 Kotlin,而且运用了大量 Kotlin 特性,尤其是协程。...Coil 名字由来:取 Coroutine Image Loader 首字母得来,可以看出通过 Kotlin 协程来进行图片加载,特点如下: 更快:Coil 性能上有很多优化,包括内存缓存和磁盘缓存...suspend fun await() } 图片变换 图片变换是图片加载库很常见功能,Coil 将其抽象成 Transformation 接口,可以看到 transform() 方法中有一个 BitmapPool...参数,这是因为实现图形变换时候往往需要一个 Bitmap,此时可以直接在 BitmapPool 获取,从而复用已有的 Bitmap。

83720

使用LRU算法缓存图片,android 3.0

很多情况下 (例如使用 ListView, GridView 或者 ViewPager控件), 显示屏幕上图片以及即将显示屏幕上图片数量是非常大(例如在图库浏览大量图片)。...另外, Android 3.0 (API Level 11)之前,这些缓存Bitmap数据保存在底层内存(native memory),并且达到预定条件后也不会释放这些对象,从而可能导致 程序超过内存限制并崩溃...当在 ImageView 显示图片时候, 先检查LruCache 是否存在。...然后,Android 4.0包含了一个更加可靠和推荐使用DiskLruCache(libcore/luni/src/main/java/libcore/io/DiskLruCache.java)...磁盘操作从来不应该在UI线程实现。当图片处理完毕后,最终结果会同时添加到 内存缓存和磁盘缓存以便将来使用。

99680

使用LRU算法缓存图片

很多情况下 (例如使用 ListView, GridView 或者 ViewPager控件), 显示屏幕上图片以及即将显示屏幕上图片数量是非常大(例如在图库浏览大量图片)。...另外, Android 3.0 (API Level 11)之前,这些缓存Bitmap数据保存在底层内存(native memory),并且达到预定条件后也不会释放这些对象,从而可能导致 程序超过内存限制并崩溃...当在 ImageView 显示图片时候, 先检查LruCache 是否存在。...然后,Android 4.0包含了一个更加可靠和推荐使用DiskLruCache(libcore/luni/src/main/java/libcore/io/DiskLruCache.java)...磁盘操作从来不应该在UI线程实现。当图片处理完毕后,最终结果会同时添加到 内存缓存和磁盘缓存以便将来使用。

36310

Android开发,怎样调用摄像机拍照以及怎样从本地图库中选取照片

大家好,又见面了,我是你们朋友全栈君。 这是属于我第一篇博文,首先说明一下,文章属性为原创,其实不能说是原创,我是在学习过程根据自己理解整理。...文章内容大多为书本上内容,书本是郭霖《第一行代码》。 正文:现在很多应用程序会调用摄像头拍照功能,比如哪个程序要上传一张图片作为用户头像,这是启用摄像头拍照会很方便。...当然,还有第二种方法,就是本地图库选取已经被保存图片。...");//这个intent对象是用于开启本地图库 intent.setType("image/*");//给intent对象设置必要参数...//判断我们uri权限部分,media格式,对document id用":"分割,取出真正数字id if ("com.android.provider.media.documents

61030

使用 Jetpack ActivityResult 处理 Activity 之间数据通信

作者 / Yacine Rezgui 无论您是应用请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...首先,您需要在 gradle 文件添加以下依赖: repositories { google() maven() } dependencies { // https://...在下列代码,GetContent() 指的是 ACTION_GET_DOCUMENT intent,它是 Activity 库已定义好默认协定之一。您可以在这里找到完整已定义协定列表。...正如您看到代码片段,ActivityResult 处理来自 Activity 返回数据时带来了更便捷开发体验。...库最新版本 https://developer.android.google.cn/jetpack/androidx/releases/fragment 我们也希望听到来自各位开发者反馈,如果您有任何建议或意见

86830

功能模块中使用导航 | MAD Skills

概述 上一篇文章 ,您已经学会了如何在多模块工程中使用导航 (Navigation)。本文中,我们将更进一步,将咖啡模块转换成功能模块 (Feature Module)。...'] } 同时 app 模块 build.gradle ,我从依赖列表移除了咖啡模块并添加了 navigation-dynamic-features 依赖: implementation "androidx.navigation...为此, Run/Debug Configurations 弹窗,我从待部署列表取消勾选了 donuttracker.coffee。...class ProgressFragment : AbstractProgressFragment(R.layout.fragment_progress) { } 我添加了一个 ImageView、一个...本系列,我们再次使用了 Chet DonutTracker 应用 并添加了咖啡记录功能。因为...我喜欢咖啡。 新功能带来了新责任。

54510

Android Fragment应用实战,使用碎片向ActivityGroup说再见

现在Fragment应用真的是越来越广泛了,之前Android3.0版本加入Fragment时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用问题,但现在即使只是在手机上,也有很多场景可以运用到...开始之前,首先你必须已经了解Fragment用法了,如果你对Fragment还比较陌生的话,建议先去阅读我前面的一篇文章 Android Fragment完全解析,关于碎片你所需知道一切 。...onCreate()方法先是调用了initViews()来获取每个控件实例,并给相应控件设置好点击事件,然后调用setTabSelection()方法设置默认选中项,这里传入0说明默认选中第...这里注意一个细节,我们添加Fragment时候并没有使用replace()方法,而是会先判断一下该Fragment是否为空,如果是空则调用add()方法添加一个进来,如果不是空则直接调用show(...设置完默认选中项后,我们当然还可以通过点击Tab项来自由地切换界面,这就会进入到onClick()方法

984100

关于activitygroup过时,用frament替换操作

现在Fragment应用真的是越来越广泛了,之前Android3.0版本加入Fragment时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用问题,但现在即使只是在手机上,也有很多场景可以运用到...开始之前,首先你必须已经了解Fragment用法了,如果你对Fragment还比较陌生的话,建议先去阅读我前面的一篇文章 Android Fragment完全解析,关于碎片你所需知道一切 。...onCreate()方法先是调用了initViews()来获取每个控件实例,并给相应控件设置好点击事件,然后调用setTabSelection()方法设置默认选中项,这里传入0说明默认选中第...这里注意一个细节,我们添加Fragment时候并没有使用replace()方法,而是会先判断一下该Fragment是否为空,如果是空则调用add()方法添加一个进来,如果不是空则直接调用show(...设置完默认选中项后,我们当然还可以通过点击Tab项来自由地切换界面,这就会进入到onClick()方法

3.2K70

Android Fragment应用实战

现在Fragment应用真的是越来越广泛了,之前Android3.0版本加入Fragment时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用问题,但现在即使只是在手机上,也有很多场景可以运用到...开始之前,首先你必须已经了解Fragment用法了,如果你对Fragment还比较陌生的话,建议先去阅读我前面的一篇文章 Android Fragment完全解析,关于碎片你所需知道一切 。...onCreate()方法先是调用了initViews()来获取每个控件实例,并给相应控件设置好点击事件,然后调用setTabSelection()方法设置默认选中项,这里传入0说明默认选中第...这里注意一个细节,我们添加Fragment时候并没有使用replace()方法,而是会先判断一下该Fragment是否为空,如果是空则调用add()方法添加一个进来,如果不是空则直接调用show(...设置完默认选中项后,我们当然还可以通过点击Tab项来自由地切换界面,这就会进入到onClick()方法

1.2K100

View 上使用挂起函数

其实协程不仅在处理跨线程问题有优势,还可以用来处理同一线程异步问题。 我认为有一个地方可以真正从中受益,那就是 Android 视图系统中使用协程。...Android 视图  回调 Android 视图系统尤其热衷于使用回调: 目前 Android Framework ,view 和 widgets 类回调有 80+ 个, Jetpack...suspendCancellableCoroutine Kotlin 协程库,有很多协程构造器方法,这些构造器方法内部可以使用挂起函数来封装回调 API。...) 就是 Fragment  viewLifecycleOwner,只要加载了 Fragment 视图,它就会处于活跃状态。...又由于我们已经为挂起函数添加了对取消操作支持,所以 lifecycleScope 被取消时,所有与之关联协程都会被清除。

2.3K30
领券