- 博客(74)
- 资源 (6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 LiveData for 循环 postValue,发现只收到了最后一次 postValue 传的值?
严重怀疑 LiveData 的 setValue 和 postValue 有毛病!!!!!得治🤔️
2022-06-15 16:51:34
855
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 面试总结 - View.post 为什么可以获取到 View 的宽高
通过本篇文章可以解决几个问题:为啥 Handler 中不可以做耗时操作View.post 为什么可以获取到 View 的宽高Activity 在什么时候显示的?是 onResume() 中吗?为什么?View.post() 的使用方法class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate (sa
2021-08-08 21:15:04
400
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 面试总结 - ViewModel 是怎么保存和恢复?
结合上一篇文章 Android 面试总结 - ViewModel 我们知道:在配置更改时会调用 Activity#onRetainNonConfigurationInstance() 来保存保存着ViewModel示例的对象 mViewModelStore,并在 Activity 重建后调用 getViewModelStore() ,其中会调用ensureViewModelStore() 在它内部会调用 getLastNonConfigurationInstance()方法获取是否有缓存的 Vie
2021-06-21 07:39:01
811
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 面试总结 - ViewModel
ViewModel 是什么?ViewModel 是 Jetpack 的一部分。ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。摘自官方文档:ViewModel 概览ViewModel 相关问题是高频面试题。主要源于它是 MVVM 架构模式的重要组件,并且它可以在因配置更改导致页面销毁重建时依然保留 ViewModel 实例。看看 ViewModel 的生命周期ViewModel 只有在正常 Activ
2021-06-20 21:27:20
1267
4
原创 Android - 禁用权限后,进程被杀?
使用 app 过程中,禁用权限后,app 所有进程被杀,俺是第一次碰到。。。源于测试提的一个bug:直播过程中,设置-禁用相机权限后,再打开 app 直播崩溃。Bug 复现通过复现,确实是这样,不过崩溃的是 NPE 或别的。跟相机权限一点关系都没有。连上手机开始调试吧,看看日志啥啥的。打开 app 开播,去系统设置把 app 的相机权限从允许改为禁止。Logcat 的日志没了,并且 app 的所有进程都被杀了,一个也没留。从最近任务列表或桌面 Icon 点击 app,白屏了一小会儿,然后
2021-07-24 21:07:51
1839
3
原创 Android 面试总结 - Activity的启动流程
四大组件启动流程系列的第一篇:Activity的启动流程基于 Android 11 源码Activity 的前世今生不做过多赘述,本系列文章主要面向有一定基础的 Android 开发者,如有疑问,欢迎交流学习。当我们调用 startActivity 时表示要启动一个新的 Activity 啦,那它怎么把 Activity 启动起来的呢?熟悉又陌生的 startActivity()Activity 的启动流程分三部分来看第一部分:Activity 到 ATMS第二部分:ATMS 到 Acti.
2021-07-04 09:59:42
771
1
原创 Android 面试总结 - viewModelScope 什么时候关闭的?
关于作用域、Kotlin 协程相关知识,在本篇文章中不做介绍,后面会有章节专门介绍协程相关知识。关于 ViewModel、viewModelScope 的用法,在本文中也不做介绍。在了解这个问题之前,需先了解 ViewModelScope 是什么?Tips 使用 ViewModelScope 前需添加依赖:implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0'package androidx.lifecycle..
2021-06-19 20:04:33
958
2
原创 Android 进阶解密 -上下文 Context
ContextImpl 和 ContextWrapper 继承自 Context,ContextWrapper 内部包含 Context 类型的 mBase 对象,mBase 具体指向 ContextImpl,ContextImpl 提供了很多功能,但是外界需要使用并拓展 ContextImpl 的功能,因此设计上使用了装饰模式,ContextWrapper 是装饰类,它对 ContextImpl 进行包装, ContextWrapper 主要是起到了方法传递的作用,ContextWrapper 中几乎所有
2021-05-24 22:26:49
156
原创 Android 进阶解密 - 根 Activity 的启动
根Activity启动过程中涉及的进程会涉及 4 个进程,分别是 Zygote 进程、Launcher 进程、AMS 所在 SystemServer 进程、应用程序进程。首先 Launcher 进程向 AMS 进程请求创建根 Activity(Binder 通信),AMS 会判断根 Activity 所需的应用程序进程是否存在并启动, 如果不存在就会请求 Zygote 进程(Socket通信)创建应用程序进程。应用程序进程启动后,AMS 会请求(Binder通信)创建应用程序进程并启动根 Activit
2021-05-23 16:22:08
141
1
原创 android material 组件 - ShapeableImageView
ShapeableImageViewcom.google.android.material.imageview.ShapeableImageView 官方material 库 1.2.0 版本中新组件,非常棒的圆角切角边框图片控件。引入库:implementation 'com.google.android.material:material:1.2.0'简单演示圆角带边框的ImageView:xml代码: <com.google.android.material.imagevie
2021-03-28 10:53:48
448
原创 Android 进阶解密 - 系统启动
Android 进阶解密 - 系统启动一、init 进程启动过程 init 进程是 Android 系统中用户空间的第一个进程,进程号为1,是 Android 系统启动流程中一个关键的步骤,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建 Zygote (孵化器)和属性服务等。init 进程是由多个源文件共同组成的,这些文件位于源码目录 system/core/init 中。init 进程启动总结创建和挂载启动所需的文件目录。初始化和启动属性服务。解析 init.rc 配置文
2021-03-15 22:14:49
345
原创 Jectpack-Compose 基础组件 : Text - TextStyle
Text - TextStyle文本的样式配置,如颜色、字体、行高等和 Text 组件一样。一般属性查看:Jectpack-Compose 基础组件 : Text下面介绍不一样的属性。fontSynthesis: FontSynthesis?在提供的自定义字体系列中找不到请求的字体粗细或样式时,是否合成字体粗细和/或样式。看下 FontSynthesisenum class FontSynthesis { /** * 关闭字体合成。如果[FontFamily]中不存在粗体或倾
2021-03-13 17:51:23
756
原创 Android问题以及解决方案-组件化开发混淆文件不起作用
组件化开发混淆文件不起作用?明明在混淆文件里添加了各种第三方库的混淆配置,为什么在混淆开关打开时打正式包后会报错?这TM为什么呢?到底是为什么呢???什么是组件化开发?采用组件化开发的应用越来越多,稍微有点大的项目都会采用组件化。不禁问为什么呢?当然是有很多优点,不然不会那么多人那么多公司会采用这种方案。到底有什么优点?召唤传送门!!!---》》》“终于懂了” 系列:Android组件化,全面掌握!那混淆是个什么?作为开发者,写好的业务代码打包上线后,不会希望有人反编译之后看到本来.
2021-01-31 17:15:46
3045
原创 Android 心形图片心形ImageView、带边框的的心形图片和圆形图片
源码地址:心形图片、心形ImageView、圆形图片、圆形ImageView实际效果如下:一、思路1、图片尺寸:加载的图片尺寸不会完全统一,可以是正方形,长方形等,这里不需要考虑正方形,因为一般的头像是正方形,需要考虑的是长方形,需要取长方形中边长的最大的居中的正方形,否则会拉伸,不好看。2、心形边框:可以通过画笔或者一个心形的图片3、细节:心形边框覆盖在图片上,并且只显示...
2020-03-28 18:06:53
1029
原创 android 仿QQ五毛特效之查看红包领取详情界面
首先我们看下 上下滑动的效果从左到右依次为 往上滑动的截图发现在滑动的过程中可以发现以下3点:1、 发起者 的部分 进行了缩放 ,我们一般缩放的对象的为图片2、然后在qq的这个界面发起者的部分不可点击 没有点击事件3、手指上下滑动多少 ,界面就回滑动多少 我们继续分析这样的布局滑动无非就是ScrollView 之类的自定义类根据我们发现的几点可以分
2020-03-28 17:39:36
4354
原创 Android 滚动选择器PikerView
最近开发遇到的第三方库 https://github.com/saiwu-bigkoo/Android-PickerView正好满足需求,只能简单修改字体大小和文字颜色 其他就照搬了又荒废了很长时间,眼瞅着公司快搬家,也该跳个槽,蓦然回首,还在原地踏步互联网之快,不学不行,慢慢的淘汰,速度只会越来越快,再不往前走,不久后自己也该Game over直接附图 详细过程PikerView
2017-02-14 10:15:29
762
原创 android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
添加日志拦截器 OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); //DEBUG模式下 添加日志拦截器 if(BuildConfig.DEBUG){ HttpLoggingInterceptor interceptor = new Htt
2016-12-05 14:19:10
4978
原创 android viewpager禁止左右滑动
看到禁止滑动的需求立马想到的就是拦截事件其次重写viewpager拦截事件 一是事件onTouchEvent 二是拦截器onInterceptTouchEvent使两者都返回false 达到拦截不响应滑动操作的目的代码简洁 主要传递的是一种编程思想public class NoScrollViewPager extends ViewPager {
2016-11-23 15:42:30
3119
原创 mac下AVD模拟器安装本地apk方法
1. 打开“终端”2.下载所需要的APK文件3.找到SDK中得platform-tools文件夹,进入platform-tools文件夹,会看到adb文件(我的sdk路径是这个:/Users/**/Library/Android/sdk)4. 同时显示打开的“终端”和adb文件,将abd文件拖拽到终端,会自动显示abd的路径5.然后再adb的路径后面输入instal
2016-11-04 11:58:09
3283
原创 android Rxjava+Retrofit
此篇只是作为一个笔记 一个新形式的里程碑上半年时候就看过 Rxjava+retrofit2.0 相关文章给 Android 开发者的 RxJava 详解RxJava 与 Retrofit 结合的最佳实践不过那时候沉不下心来学习这两天终于学习了这目前最流行最好用的网络框架(半年过去了。。。)这两篇文章都是一步一步的引导你来做 很适合初学者学习今天终于把R
2016-11-02 10:21:03
416
原创 android webview与js交互(动态添加js)
1)、webView可以利用html做界面布局,虽然目前还比较少人这么使用,不过我相信当一些客户端需要复杂的图文(图文都是动态生成)混排的时候它肯定是个不错的选择。2)、直接显示网页,这功能当然也是它最基本的功能。3)、和js交互。(如果你的js基础比java基础好的话那么采用这种方式做一些复杂的处理是个不错的选择)
2016-05-11 09:45:44
7916
5
转载 android 防止Button的频繁点击,多次执行点击事件
开发过程中经常遇到连续快速的点击带有点击事件的view,可能会执行多次点击事件,怎么控制一个带有点击事件的View多次点击事件的时间间隔大于0.5s呢
2016-04-18 10:42:11
3743
转载 【转载】 android 圆角圆形图片ShapedImageView不到100行代码
此文章作为笔记,摘自:ShapedImageView 感谢作者的分享,对开发很有帮助!简洁,不到100行代码支持圆形 圆角矩形支持TransitionDrawable一、studiodependenciescompile 'cn.gavinliu.android.lib:ShapedImageView:0.4'二、ec
2016-04-18 10:22:58
1362
原创 android 全透明式状态栏
全透明状态栏继上一篇博客fitsystemwindows简单使用之后发现5.0设置如下属性之后 状态栏是半透明的 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ //半透明头部状态栏 布局在状态栏下方 getWindow().addFlags(WindowManager.LayoutParams.FL
2016-04-05 22:19:55
1698
原创 android fitsystemwindows简单使用
fitsystemwindows : 设置应用布局时是否考虑系统窗口布局;如果为true,将调整系统窗口布局以适应你自定义的布局。比如系统有状态栏,应用也有状态栏时。看你这个布局代码,恰恰是在定义标题栏样式,所以用到这个属性了。
2016-04-05 21:51:40
19057
原创 android 退出应用优雅的方式(新加一种)
singleTask改版方式摘自伯乐文章http://android.jobbole.com/82335/RS中注册广播略显麻烦,确实,有人提出了下面这种方法:设置MainActivity的启动模式为singleTask android:launchMode="singleTask"重写MainActivity的onNewIntent()方法并添加一个TAG_EXIT值 public
2016-03-18 10:52:45
631
原创 android 退出应用最优雅的方式
RS即Receiver+singleTask。我们知道Activity有四种加载模式,singleTask就是其中的一种,使用这个模式后,当startActivity时,它先会在当前栈中查询是否存在Activity的实例,如果存在,则将其至于栈顶,并将其之上的所有Activity移除栈。 我们打开一个app,首先是一个Splash界面,然后会finish掉Splash界面,跳转到主页。然后会在主页进行N次的挑战,期间会产生数量不定的Activity,有的被销毁,有的驻留在栈中,但是栈底永远是我们H
2016-03-02 17:02:57
591
原创 android 快速开发(三)巧用公共标题栏:避免每次activity都得写标题栏
巧用公共标题栏:避免每次activity都得写标题栏注:采用父类继承法避免每次建activity都得include标题栏并初始化标题栏各个操作先看下MainActivity代码和xml:package com.yqy.yqy_commontitlebar;import android.view.View.OnClickListener;public class Main
2016-01-07 16:00:18
2265
原创 android 使程序完全退出及退回到主界面
一、使程序完全退出1、使用ActivityManager:ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE); am.restartPackage(getPackageName()); //虽为 restart,但并不是重启 系统会将该包下的所有活动、服务全部杀掉,
2015-12-16 10:38:26
5406
原创 android 输入法弹出关闭与禁用
android 输入法弹出关闭与禁用:1、应用启动后自动打开输入法 2、自动关闭3、禁止弹出4、EditText有焦点阻止输入法弹出
2015-12-16 10:07:55
2900
原创 android TextView中间删除线显示
tv.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG |Paint.ANTI_ALIAS_FLAG);
2015-12-16 09:59:34
1641
原创 android 创建快捷方式
public static void addShortcut(Context cx) { // 创建快捷方式的Intent Intent shortcutintent = new Intent( "com.android.launcher.action.INSTALL_SHORTCUT"); // 不允许重复创建 shortcutintent.putExtra("dupli
2015-12-09 10:12:53
454
原创 android webview加载URL&&允许JS
//允许jS helpCenterWv.getSettings().setJavaScriptEnabled(true); helpCenterWv.loadUrl(url);
2015-12-04 10:23:11
3078
原创 android 笔记-scrollview滑动阴影取消
android:fadingEdge="none" android:overScrollMode="never"感谢大牛:博客首页:http://blog.csdn.net/u012975705
2015-12-03 11:14:39
1900
原创 android 基础再学习-linkify超链接的简单使用
Linkify是一个辅助类,它会自动的在TextView类(或者TextView派生类)中通过RegEx模式匹配来创建超链接Linkify 中有web_urls、email_address、phone_numbers、map_address(这个还不理解) 几个预设值当一个textview 设置内容后,设置Linkify 会自动检索设置预设值的内容 从而生成超链接,自带点击,无需设置点击事件
2015-11-04 15:47:51
1452
原创 android zbar二维码扫描(中文不乱码)
感谢大神总结的zbar文章:android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)还有大神的工程:android_zbar二维码扫描前段时间用zxing做的二维码扫描,中间遇到一个头疼的问题的时候,ios同事说我用的zbar,当时只是查了查android也有,今天有时间看了看zbarzbar跟zxing的比较:1、扫描速度来说zbar貌似略胜一筹(没有进行
2015-10-27 13:37:35
1975
原创 android 二维码扫描(zxing使用小结)
android 二维码扫描(zxing使用小结)主要有三点:1、界面绘制,包括4个边角、上下滚动的横线、在画布上添加文字2、调整二维码扫描框的位置。3、解决图片被压变形的问题。
2015-10-23 16:25:05
3596
2
原创 Toast不显示
今天运行程序 发现 Toast突然不提示了。我擦勒 屌骚。为毛 可以肯定的是代码是没有错误的,然后在权限管理翻了翻 没有特殊管理通知的结果设置》通知管理 》我的app设置为禁止了 擦 改为允许就好了我用的华为荣耀~~
2015-09-25 09:59:24
864
原创 android 快速开发(二)辅助类的使用:加快开发速度
辅助类的使用:加快开发速度作用 顾名思义,提高开发速度,也可在不断的开发中优化辅助类,最后还是提升应用质量。简单的辅助类 L(Log)package com.yqy.yqy_abstract.utils;import android.util.Log;public class L { /** * 是否展示,在不需要的时候设
2015-09-22 10:09:19
787
android 应用程序安装卸载(卸载应用宝)
2015-09-11
android resoult简单demo
2015-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人