- 博客(1898)
- 资源 (15)
- 收藏
- 关注
原创 Android MediaMetadataRetriever setDataSource failed: status = 0xFFFFFFEA
【Android设置头像,手机拍照或从本地相册选取图片作为头像】像微信、QQ、微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式:1,让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像。Android设置头像,手机拍照或从本地相册选取图片作为头像_android 头像拍照_zhangphil的博客-CSDN博客。假设实现一个简单的功能,对传入要加载的path路径增加一定的筛选、容错或“重定向”,需要自定义一个模型,基于这个模型,让Glide自动匹配模型展开加载。
2023-10-18 23:26:22 1182
原创 Android AppGlideModule,DataFetcher,ModelLoader视频MediaMetadataRetriever失败后定制视频,Kotlin(2)
【Android设置头像,手机拍照或从本地相册选取图片作为头像】像微信、QQ、微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式:1,让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像。Android设置头像,手机拍照或从本地相册选取图片作为头像_android 头像拍照_zhangphil的博客-CSDN博客。假设实现一个简单的功能,对传入要加载的path路径增加一定的筛选、容错或“重定向”,需要自定义一个模型,基于这个模型,让Glide自动匹配模型展开加载。
2023-10-17 23:33:36 189
原创 Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1)
假设实现一个简单的功能,对传入要加载的path路径增加一定的筛选、容错或“重定向”,需要自定义一个模型,基于这个模型,让Glide自动匹配模型展开加载。), //简单时候可以考虑ObjectKey(model.path!!= null!})!
2023-10-16 23:06:56 822
原创 android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 4874 SQLITE_IOERR_SHMSIZE)
Android桌面小部件AppWidget(2)在附录文章1的基础上,我再写一篇关于Android AppWidget的文章,本篇文章实现一个简单功能,此功能亦是对附录文章1所实现功能的增强和改进,本文的代码实现的功能:假设桌面小部件只包含一个Button和一个TextView,当点击Button后,后台启动一个服务(IntentService实现),该服务每个一秒发送一个简单的字符串。Android桌面小部件AppWidget(1)_桌面小部件窗口的类_zhangphil的博客-CSDN博客。
2023-10-15 23:02:31 2285
原创 git强制删除本地分支 git branch -D
git branch -d 可以通过: git branch 查看所有本地分支及其名字,然后删除特定分支。git删除远程remote分支_git remote delete_zhangphil的博客-CSDN博客。git 命令如下:git push origin --delete_git remote delete。git删除本地分支_zhangphil的博客-CSDN博客。
2023-10-14 23:05:31 766
原创 androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边
Android Toolbar左、中、右对齐默认的Android Toolbar中添加子元素view是从左到右依次添加。需要注意的是,Android Toolbar为自身的NavigationIcon(app:navigationIcon)最靠右,Logo(app:logo)紧接NavigationIcon、Title(app:title)接续Logo、保留了默认的位置(从左边到右。有时候会发现Toolbar设置最右边的一个View靠右后,不能紧靠最右边的边缘。
2023-10-13 23:04:22 1157
原创 Kotlin函数作为参数指向不同逻辑
一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。kotlin把函数作为参数转递给另一个函数-CSDN博客。
2023-10-12 23:07:09 1479
原创 Android约束布局ConstraintLayout流式Flow
Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。
2023-10-11 23:03:36 581
原创 Android开发自测应用monkey常用命令参数
比如要对一个名为zhangphil.app的App进行像真人一样的测试,假设对这个App随机在各个位置点击9999次,monkey的命令为:adb shell monkey -p zhangphil.app 9999-p表示筛选的applicationId,或包名。部分重要常用的Android monkey自动化测试(压..._自动化压力测试。-s seed种子,如果跑完本轮monkey后,需要重新按照此前的路径复现,则沿用相同的seed值即可。--throttle monkey事件时间间隔。
2023-10-10 23:18:35 108
原创 Android约束布局ConstraintLayout的Guideline,CardView
Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。
2023-10-09 23:13:36 545
原创 Kotlin异常处理runCatching,getOrDefault,getOrNull run(2)
b-catch: java.lang.RuntimeException: b发生异常。kotlin异常处理try-catch-finally。kotlin异常处理try-catch-finally_zhangphil的博客-CSDN博客。b-catch: java.lang.RuntimeException: b发生异常。kotlin异常处理try-catch-finally。kotlin异常处理try-catch-finally_zhangphil的博客-CSDN博客。
2023-10-08 23:26:56 272
原创 Android改造CardView为圆形View,Kotlin
可以利用androidx.cardview.widget.CardView的cardCornerRadius特性,将CardView改造成一个圆形的View,技术实现的关键首先设定CardView为一个宽高相等的View(正方形),然后将radius特意设置成宽度(或高度,一样,因为正方形,宽高相等)的1/2,此时CardView自然就变成一个圆。Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案_android 官方圆角-CSDN博客。
2023-10-05 23:03:02 1677
原创 Kotlin前置检测判断check,require,requireNotNull
当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。
2023-10-02 23:28:55 434
原创 Android ConstraintLayout layout_constraintHorizontal layout_constraintDimensionRatio square CardView
Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。Android ConstraintLayout约束布局的居中_android constraintlayout 两个图片并排水平居中-CSDN博客。Android ConstraintLayout按比例缩放View_constraintlayout 比例-CSDN博客。
2023-09-28 23:24:40 128
原创 kotlin协程CoroutineScope Dispatchers.IO launch 线程Id
一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。
2023-09-27 23:06:16 358
原创 Android ConstraintLayout app:layout_constraintHorizontal_weight
Android ConstraintLayout按比例缩放View关键点有两个,第一,使用Android ConstraintLayout的layout_constraintDimensionRatio属性,设置宽高比缩放比例,宽:高。Android ConstraintLayout约束布局的居中_android constraintlayout 两个图片并排水平居中-CSDN博客。Android ConstraintLayout按比例缩放View_constraintlayout 比例-CSDN博客。
2023-09-26 23:35:42 549
原创 Kotlin异常处理runCatching,getOrNull,onFailure,onSuccess(1)
b-catch: java.lang.RuntimeException: b发生异常。kotlin异常处理try-catch-finally。kotlin异常处理try-catch-finally_zhangphil的博客-CSDN博客。
2023-09-25 23:05:11 891
原创 Kotlin只截取Float小数点后数值DecimalFormat
Java小数点数字和百分号数字之间的转换小数点数字和百分号(百分比)数字之间的转换在证券金融业很常见,需要经常进行两者之间相互转换。如代码: String s1 = "21.8%";Java小数点数字和百分号数字之间的转换_zhangphil的博客-CSDN博客。Kotlin只截取Float小数点后数值DecimalFormat。
2023-09-24 23:09:45 466
原创 git reset origin --hard解决‘Your branch is ahead of ‘origin/xxxx‘ by xx commit.’
git删除/撤销远已经push到程服务器上某次代码提交场景:不小心把一次错误的代码push到远程服务器上的分支上,需要立即删除/撤销这次代码提交。具体方法,git命令:git reset --hard git push origin HEAD --forcecommit_id可以通过git命令:git log输出获取。git删除/撤销远已经push到程服务器上某次代码提交_git删除某次push_zhangphil的博客-CSDN博客。明明2个commits已经提交,到代码仓库看,也确实已经提交成功。
2023-09-23 23:07:45 1215
原创 Android读取设备所有Video视频,Kotlin
【Android设置头像,手机拍照或从本地相册选取图片作为头像】像微信、QQ、微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式:1,让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像。Android设置头像,手机拍照或从本地相册选取图片作为头像_android 头像拍照_zhangphil的博客-CSDN博客。Android图片添加文字水印并保存水印文字图片到指定文件_zhangphil的博客-CSDN博客。Android读取设备所有视频,Kotlin。
2023-09-22 23:30:59 391 1
原创 Android字体大小dp,sp,px系统设置字体大小变化表现
为解决这种开发场景,有多种解决方案,比如可以重写View,实现横竖切换在onMesure或者此类View的回调方法里面重新测量重新绘制View的尺寸大小。除此之外还要考虑APP在实际应用场景中,用户千奇百怪的设置,最常见的用户设置行为就是设置手机的字体大小,比如把字体设置成超大或者超小,这对屏幕适配又带来额外的问题。Android快捷便利但不常被使用的原生工具类Android SDK原生 API中,有一些常用的工具类,运用得当可以省事省力省时,何况还是Android官方提供的,现在收集整理一些出来。
2023-09-21 23:11:29 661
原创 Kotlin协程CoroutineScope异步async取消cancel等待await的任务
一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。_kotlin协程 串行。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。
2023-09-20 23:15:24 357
原创 adb shell命令查看当前屏幕可见最顶层Activity和Fragment及其调用栈
Android adb shell dump当前手机设备的所有activity_dump当前activity_zhangphil的博客-CSDN博客。adb shell命令dump Android app的activity栈_adb dump activity-CSDN博客。adb命令:adb shell dumpsys activity activites_dump当前activity。android adb命令获取处于当前屏幕的Activity_adb获取当前页面activity-CSDN博客。
2023-09-19 23:16:01 3740
原创 Kotlin simple convert ArrayList CopyOnWriteArrayList MutableList
Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。此方法返回一个线程容量为n的线程池。读时候快,写/删/改慢。
2023-09-18 23:29:24 212
原创 Kotlin File useLines nameWithoutExtension extension
try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-17 23:03:29 370
原创 Kotlin File FileTreeWalk walkTopDown onEnter onLeave
Python实时检测文件及文件夹变动比较流行的是通过watchdog,一个例子:当创建一个文件夹,创建一个文件,或者删除一个文件夹,对文件内容写操作,都会触发事件:_python检测文件夹变动。Python遍历文件目录os.walk_for subfolder in subfolders: print(foldername+'/'+_zhangphil的博客-CSDN博客。Python实时检测文件及文件夹变动_python检测文件夹变动_zhangphil的博客-CSDN博客。
2023-09-16 23:49:26 398
原创 Kotlin文件遍历FileTreeWalk filter
try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-15 23:17:11 445
原创 Kotlin File BufferedOutputStream write ByteArray
try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-14 23:04:15 846
原创 Kotlin Files Paths write ByteArray writeString写多行BufferedWriter
Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-13 23:03:14 471
原创 Kotlin File.reader BufferedReader readLine
try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-12 23:02:38 718
原创 Kotlin File readText readLines readBytes
try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-11 23:04:46 498
原创 Kotlin FileInputStream read File
Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-10 23:06:34 664
原创 Kotlin File writeText appendText appendBytes readBytes readText
Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。Kotlin Files readAllBytes readAllLines readString-CSDN博客。
2023-09-09 23:05:08 644
原创 Kotlin Files readAllBytes readAllLines readString
Java把一个文件转化为byte字节数组 /** * 把一个文件转化为byte字节数组。try { File..._java文件转byte数组。Java把一个文件转化为byte字节数组_java文件转byte数组_zhangphil的博客-CSDN博客。
2023-09-08 23:00:48 305
原创 Kotlin委托Delegate托管by
*Java观察者模式的场景:一个女孩洗澡,被很多男孩偷看。女孩洞察后,搜索坏男孩,然后继续洗澡。*//*男孩Boy.java*/import java.util.Observable;不定长函参的Java观察者模式更新数据传递import java.util.LinkedList;/** * 抽象被观察者。Java观察者模式 : Observer / Observable_zhangphil的博客-CSDN博客。不定长函参的Java观察者模式更新数据传递_zhangphil的博客-CSDN博客。
2023-09-07 23:27:51 794
原创 JDK7多线程并发环境HashMap死循环infinite loop,CPU拉满100%,Java
例如,假如在HashMap中依次、顺序添加元素:1,2,3,4,5,在遍历HashMap时输出的顺。例如,假如在HashMap中依次、顺序添加元素:1,2,3,4,5,在遍历HashMap时输出的顺。通常在初始化HashMap时候会有一个loadFactore负载因子比如0.75,当原先存储的元素size达到固有长度的0.75后,开始扩容,扩容过程用头插法把oldTable单链表的节点插入到newTable单链表,newTable单链表倒置了oldTable中的单链表。infinite loop问题。
2023-09-06 23:01:13 522
原创 Android Glide in RecyclerView,only load visible item when page return,Kotlin
【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。
2023-09-05 23:08:37 858
原创 线程安全缓存ConcurrentLinkedHashMap,Kotlin
* 基于Java LinkedList,实现Android大数据缓存策略 * 作者:Zhang Phil * 原文出处:http://blog.csdn.net/zhangphil * * 实现原理:原理的模型认为:在LinkedList的头部元素是最旧的缓存数据,在L_android大数据缓存。一句话概括的说:两者最大的不同就是,HashMap不保证put进去的数据的顺序;例如,假如在HashMap中依次、顺序添加元素:1,2,3,4,5,在遍历HashMap时输出的顺。
2023-09-04 23:01:04 789
原创 kotlin协程广播管道BroadcastChannel,订阅管道openSubscription
runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。
2023-09-03 23:25:14 183
原创 Kotlin管道Channel在receiveAsFlow时debounce与flow差异
debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。A和AB都待发射,A和AB间隔100,所以跳过A,直接发射AB。debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。
2023-09-02 23:03:11 547
链家2020年9月二手房数据
2020-12-10
strava_com_sample_utf8.xls
2020-12-10
digital-7字体(LED数字样式字体)
2017-09-05
MaterialDesignLibrary_Code and Lib合集
2015-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人