暂无个人介绍
Android性能:通过Choreographer检测UI丢帧和卡顿 Android系统每隔16ms重绘UI界面,16ms是因为Android系统规定UI绘图的刷新频率60FPS。
git定位追踪一行或若干行代码修改历史记录 先使用git blame追踪溯源这些行代码修改的历史记录,比如: git blame -L 201,208 YanBaoFragment.
CompletableFuture的runAsync CompletableFuture的runAsync只是简单的异步执行一个线程,但是它将返回一个CompletableFuture,有了这个CompletableFuture,可以重新组装和调配,这是和一个普通Runnable不同之处。
CompletableFuture的exceptionally 代码: private void test() { System.
CompletableFuture的thenCombineAsync 代码: private void test() { System.
git不分页一次性输出某一开发者过去若干天的代码改动记录 git命令: git --no-pager log --word-diff --author="zhangphil" --since=8.days -p 输出开发者“zhangphil”过去8天的代码改动记录,不分页一次性输出全部改动。
Android apk安装不上:INSTALL_PARSE_FAILED_NO_CERTIFICATES Android studio正式打包生成签名的apk,在一些低版本Android系统的手机上安装不上,输出错误提示:...
CompletableFuture的applyToEitherAsync:最快返回输出的线程结果作为下一次任务的输入 applyToEitherAsync和附录1的acceptEitherAsync类似,只是说acceptEitherAsync是对结果的消费,而applyToEitherAsync则是把最快返回的计算输出结果,再利用起来作为下一次线程任务的输入。
CompletableFuture的acceptEitherAsync:哪个线程跑的最快用那个 acceptEitherAsync:假设两个线程A和B,不确定A和B哪个最快执行完毕返回, 但是需要使用最快执行完毕的线程返回的结果。
CompletableFuture的runAfterBothAsync runAfterBothAsync:假设有两个线程A和B,这两个线程都是异步执行的,但是不确定A和B何时执行完毕,但是需要在A和B都执行完毕后运行线程C。
Android通过scaleType裁剪缩放图片适配不同屏幕不同ImageView尺寸 实验方法,先找一张不规则大图,尺寸:1024pix(宽) X 1465pix(高),原图如图:然后特意设置一个ImageView宽高均为600pix。
Android新版Glide的RequestManager加载管理器 使用Glide加载图片,load完后,通过into就可以把图片放到ImageView里面。
Android Glide加载四周圆角图 需要引入:implementation 'jp.wasabeef:glide-transformations:3.
Android ViewPager和PagerAdapter简单代码写法 总是忘记,记下来备忘: package zhangphil.
Java判断字符是否是中文字符 //判断字符是否是中文汉字。 from JDK1.7 public boolean isChinese(char c) { Character.
Java判断字符串中是否包含中英文标点符号 /** * 该函数判断一个字符串是否包含标点符号(中文英文标点符号)。
Android感知当前App应用处于前台(可见)或后台(不可见)简洁规范的解决方案 判断当前App是否处于前台(可见)或后台(不可见)附录1是一种解决方案。
Android在Application层级维护和管理全局所有Activity的方法ActivityLifecycleCallbacks 经常看到有些项目中经常性的把所有activity继承自一个base的Activity,然后在每一次启动新activity时候添加当前activity到一个全局List那样的列表中,已达到全局管理和维护activity的目的,这种做法大概是四五年前的技术解决方案。
Android判断当前App应用处于前台(可见)或后台(不可见) 也即判断当前App应用是否被用户按home键切换至后台(不可见)/前台(可见)。
Android图片添加水印图片并把图片保存到文件存储 package zhangphil.test; import android.
Android图片添加文字水印并保存水印文字图片到指定文件 package zhangphil.test; import android.
Android拼接合并图片生成长图 代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。
Android屏幕截图并保存截取屏幕的图片到指定文件 注意要添加权限: 完整代码: package zhangphil.
ScheduledThreadPoolExecutor周期性执行线程任务scheduleAtFixedRate ScheduledThreadPoolExecutor mScheduledThreadPoo...
CompletableFuture future1 = CompletableFuture.supplyAsync(new Supplier() { @Override ...
Java CompletableFuture的complete(7) 先看代码: CompletableFuture future = CompletableFuture.
Android NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端 网上有一个StickyScrollView,称之为粘性ScrollView,比如一个垂直方向的布局,依次摆放几个子View,当某一个子View滚到到顶端时候要停靠在顶部,悬停在顶部的位置不动。
Java CompletableFuture异步线程联合执行thenCombine(6) private void method() throws ExecutionException, InterruptedException { //第一个任务。
Android自定义TabLayout后ViewPager与TabLayout互相控制切换 正常的Android原生TabLayout与ViewPager搭配使用,当TabLayout调用setupWithViewPager与ViewPager互相捆绑以后,就实现了原生的TabLayout与ViewPager的互相控制。
Java CompletableFuture anyOf:线程队列只要有一个异步线程完成就触发(5) private void method() throws ExecutionException, Interrupted...
Java CompletableFuture:allOf等待所有线程任务结束(4) private void method() throws ExecutionException, InterruptedExcept...
Java CompletableFuture:thenCompose (3) private void seq() throws ExecutionException, InterruptedException { CompletableFuture f1 = CompletableFuture.
Java CompletableFuture组合拼装异步线程任务 private void seq() throws ExecutionException, InterruptedException { System.
Java CompletableFuture(1) private Long longTimeWork() { try { //模拟耗时操作,特意阻塞5秒。
Android屏蔽/禁止ViewPager左右滑动/滚动 Android原生的ViewPager自带左右滚动,滑动效果,切换ViewPager中的内容。
为什么Android官方废弃SoftRefrerence软引用和WeakReference弱引用,而拥抱LruCache? 一些具有Java背景的研发者喜欢使用软引用(SoftRefrerence)和弱引用(WeakRe...
公开/封闭属性android:exported引出的Android系统安全技术 android:exported是Android在AndroidManifest.xml里面配置Activity或其他组件如Service或广播等的基础属性,之所以在这里挑出来单独说,是因为该属性现在经常被一些粗糙的安全漏洞扫描系统错误的理解和使用,形成不正确的分析结论。
Android官方的dip to pix,dip2pix,dp2px实现 网上流传的一个常用的把dip值转换为pix像素值的方法通常是这样的: public static int dip2px(Context co...
Android NestedScrollView嵌套RecyclerView滑动卡顿问题简洁解决方案 其实仅仅需要给RecyclerView加一行控制代码即可:mRecyclerView.
Android/Java判断字符串String是否为float浮点数或double类型 Android的TextUtils的isDigitsOnly方法检测整型数据没问题,但是检测浮点和double类型可能不会返回期望的...
Android深度定制化TabLayout:圆角,渐变色,背景边框,圆角渐变下划线,基于Android原生TabLayout 在附录1的基础上丰富自定义的TabLayout,这次增加两个内容:1, 当选中某一个切换卡时候,文本字体变粗。
Java中英文字母汉字混合字符长度值计算 String string = "phil安卓"; Logger.
Android分页加载刷新AsyncListUtil中DataCallback的refreshData() Android分页加载刷新AsyncListUtil中DataCallback的refreshData()函数,返回值控制分页总数据量。
Android深度定制化TabLayout:圆角,渐变色,背景边框,基于Android原生TabLayout 如今UI设计已经不再满足于下方只有一个下划线,切换后能改变和表示选中颜色的TabLayout了。
Java从ArrayList指定position位置开始删除后面全部子元素 private void delete() { ArrayList items = new ArrayList(); ...
git查看某开发者在一段时间内容提交的代码摘要信息 例如: git log --author="zhangphil" --after="2018-05-21 00:00:00" --before="2018-05-25 ...
Android @IntDef注解取代Java enum枚举提高性能 为提高Android性能,Android官方建议使用@IntDef注解替代Java的enum枚举。
Android RecyclerView使用ItemDecoration刻画时间线/时间轴/时光轴timeline 在Android开发中时间线/时间轴/时光轴现在很常见,尤其涉及到进度、物流信息、进展和时态发展的图表信息等,时间线/时间轴/时光轴生动表现这一类需求。
Android自定义ProgressBar样式:渐变圆角水平进度条 关键是android:progressDrawable的设置,设置一个android:progressDrawable资源,但是android:progressDrawable需要是一个layer-list。
Android屏蔽隐藏系统自带输入键盘 若是Activity,在AndroidMainfest.xml配置Activity属性:android:windowSoftInputMode="stateAlwaysHidden|...