- 博客(15)
- 收藏
- 关注
原创 Android中的骨架屏加载预览
在设计app的时候,我们会考虑很多方面,在加载耗时数据时,一个好一点的效果会增加用户对加载速度的容忍度,目前app上的加载效果有很多种,比如ios的菊花图,还有就是使用Lottie库播放的json动画,而我们今天介绍的是另外一种: 骨架屏,这个效果在一些信息流app(比如新闻类)上比较常见,一般都是一个列表,在加载数据时为了避免画面太生硬,通常会使用一个骨架屏,提前将UI结构以灰色呈现给用户,等数据响应成功时,直接渲染上去,给用户一种无缝填入的感觉,当然这种效果也是优于ProgressBar的。
2024-08-03 10:27:21
318
原创 拥抱Jetpack之Room篇
处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,用户仍然可以在离线状态下浏览该内容。Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
2024-05-12 20:27:29
926
原创 会动的底部导航栏-Lottie的应用
随着Android的发展,用户审美的不断提高,你的app不仅得足够好用,UI也得让人感觉赏心悦目,今天无意间打开CSDN看帖子时,发现点击底部导航栏时,图标是会播放动画的,一时好奇是如何实现的,然后就浅浅的研究了下~
2024-04-14 20:00:15
536
原创 拥抱JetPack之Lifecycle的自我介紹
大家好,我是Lifecycle,我是一个生命周期感知型组件,可执行操作来响应另一个组件(如 activity 和 fragment)的生命周期状态的变化。有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。
2024-02-18 09:35:59
1016
原创 拥抱JetPack之LiveData的自我介紹
大家好,我是,我是一种可观察的数据存储器类。与常规的可观察类不同,我 具有生命周期感知能力,意指它遵循其他应用组件(如 activity、fragment 或 service)的生命周期。这种感知能力可确保 我 仅更新处于活跃生命周期状态的应用组件观察者。我不需要像广播那样需要手动解除注册,我可以利用我另一位老伙计的特性来实现自动解绑,如果观察者(由类表示)的生命周期处于或状态,则我会认为该观察者处于活跃状态。我只会将更新通知给活跃的观察者。为观察我而注册的非活跃观察者不会收到更改通知。
2024-02-03 11:56:27
938
原创 拥抱Jetpack之ViewModel与LiveData搭配使用
ViewModel类是一种业务逻辑或屏幕级状态容器。它用于将状态公开给界面,以及封装相关的业务逻辑。它的主要优点是,它可以缓存状态,并可在配置更改后持久保留相应状态。这意味着在 activity 之间导航时或进行配置更改后(例如旋转屏幕时),界面将无需重新提取数据。
2024-01-29 20:48:03
669
原创 安卓开发 JNI初探
现在我们开始在环境变量中配置选中此电脑,右击打开属性选中高级系统设置,点击进入环境变量注意:在用户变量中找到Path ,将刚刚安装的NDk目录粘贴进去。(这里按我的安装目录举例)C:\Users\Xcy\AppData\Local\Android\Sdk\ndk\25.2.9519653。
2023-04-20 23:23:25
398
1
原创 Compose页面跳转 (学习Navigation)
1.如何实现Compose中单Activity + 多Page模式,并使用Navigation实现Page与Page间的跳转(携带参数)?2.如何解决Navigation 在Compose中的拼接式路由配置与拼接式传值?让我们带着疑问,看下文。第一步:导入依赖 implementation("androidx.navigation:navigation-compose:2.4.1")第二步:上代码#MainActivity.ktpackage com.xcy.mynavigation
2022-05-09 22:59:11
3723
1
原创 Installation did not succeed. The application could not be installed: INSTALL_FAILED_CONFLICTING_...
话不多说,先上图!!!原因:一般程序员会封装自己的一个库,然后每次开发时直接引入,这个问题就是我在项目中引入我自己封装的库时发生的。解决方法:因为两个项目中的provider的android:authorities都一致,所以,很简单,修改其中一个项目的provider的android:authorities属性即可,这样就不会因为冲突无法安装了有问题可以在下方评论,我看到会第一时间回复你。徐某人不谈原理,只助你CV,完结撒花。...
2022-05-09 21:20:37
10629
3
原创 Compose 如何申请权限(学习Permissions)
Compose Permissions 学习废话不多说,今天我们一起学习一下在Compose中如何申请权限首先导入依赖repositories { mavenCentral()}dependencies { implementation "com.google.accompanist:accompanist-permissions:0.24.7-alpha"}使用@Composablefun PermissionPage() { PermissionPageC
2022-05-09 21:15:59
1468
2
原创 java.lang.BootstrapMethodError: Exception from call site #112 bootstrap method
废话不多说,先上图,然后上代码,徐某的文章就是这么的直入主题在build.gradle的android{}中添加compileOptions{sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}徐某人不谈原理,只助你CV,完结,撒花。...
2022-05-09 21:13:40
702
原创 BottomNavigationView 长按时出现的吐司,BottomNavigationView长按Item出现提示文字
江湖规矩:先上图!如图:当我们长按BottomNavigationView 的Item时会出现当前的toast,看起来很不美观,废话不多说,首先来看我的菜单配置文件nav_menu.xml布局文件: activity_main.layout解决思路:获取子View,设置长按拦截解决方法:(Kotlin代码)//清除长按时的toastfun clearToast(bottomNavigationView: BottomNavigationView,ids : MutableList)
2022-05-09 21:04:55
792
原创 安卓面向AOP编程
天空一声巨响,徐某闪亮登场今天和大家一起学习一下安卓面向AOP编程,什么是AOP?AOP全称为Aspect Oriented Programming,意为:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。话不多说,首先引入环境看,是这个文件!buildscript { dependencies { classpath 'org.aspectj:aspectjtools:1.8.9' classpa.
2022-05-09 21:00:22
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人