Android之路
文章平均质量分 93
linshijun33
低头做事,不忘抬头看天。脚步不能停。
展开
-
每日一问:谈谈 SharedPreferences 的 apply() 和 commit()
SharedPreferences 应该是任何一名 Android 初学者都知道的存储类了,它轻量,适合用于保存软件配置等参数。以键值对的 XML 文件形式存储在本地,程序卸载后也会一并清除,不会残留信息。使用起来也非常简单。// 读取val sharedPreferences = getSharedPreferences("123", Context.MODE_PRIVATE)val string = sharedPreferences.getString("123","")// 写.转载 2020-08-11 15:01:12 · 2257 阅读 · 1 评论 -
每日一问 | RecyclerView的多级缓存机制,每级缓存到底起到什么样的作用?
谈到 RecyclerView,相信不少同学,张口都能说出它的几级缓存机制:例如:一级缓存:mAttachedScrap 和 mChangedScrap 二级缓存:mCachedViews 三级缓存:ViewCacheExtension 四级缓存:RecycledViewPool然后说怎么用,就是先从 1 级找,然后 2 级...然后4 级,找不到 create ViewHolder。那么,有没有思考过,其实上面几级缓存都属于“内存缓存",那么这么分级肯定有一定区别。问题来了:每转载 2020-08-11 09:56:48 · 3433 阅读 · 0 评论 -
CoordinatorLayout补齐资料篇
关于CoordinatorLayout你所需要的指南。原创 2017-02-09 19:37:52 · 508 阅读 · 0 评论 -
Android应用增量更新
增量概述之前在创业公司,人手不够,业务人员也要参与功能测试。有一段时间,应用的版本迭代非常快,基本上两天一版,测试时要重新下版本。当时,就有参与测试的人员抱怨说:测得这么频繁,能不能出个补丁啊,就不用整个下了。我那时候的回答的:这和游戏不一样,都是重新下载的。后来才发现,增量更新也是能够实现的。现在我带大家来了解下增量更新的条件与步骤。增量更新的重点在于生成增量文件并且和老文件合并: 1. 获取老原创 2016-10-30 21:29:38 · 390 阅读 · 0 评论 -
1024程序员节,定个小目标
自从来了上海,感觉很久没有写过博客了,技术博客的停更只可能是两种情况: 1. 项目太忙,加班很多 2. 时间花在其他事情上 我静静地想了一下,只可能是原因2了,毕竟现在客户端的开发人员众多,开发任务又不会太紧急,那么时间到底花在哪呢。主要是初到上海喝朋友聚会太多,平时忙着联络,周末忙着出门,根本没心思写代码。如今,来上海快一个月了,该玩的玩了,该理清的理清了,剩下的时间就能做点提升的事了。原创 2016-10-24 21:58:36 · 498 阅读 · 0 评论 -
仿支付宝支付成功打勾动画(关于PathMeasure你该知道的东西)
沿预定路径动画图像(无论是直线或曲线)是做动画时一种常见的情况。传统方法是寻找path的函数(贝塞尔函数用的比较多),带入x的值来计算y的值, 然后使用坐标(x,y)来完成动画。 现在还有一种更简单的方法:通过使用path和pathmeasure来完成。原创 2016-09-11 22:31:04 · 5125 阅读 · 0 评论 -
最强大的视频弹幕引擎——烈焰弹幕使(DanmakuFlameMaster)使用指南
简介B站在开源视频直播方面做出的贡献太大了,不仅开源视频控件ijkPlayer,还开源了弹幕引擎DanmakuFlameMaster,集齐整套,可谓神器在手,天下我有。 DanmakuFlameMaster 是 Android 上开源弹幕解析绘制引擎项目,也是 Android 上最好的开源弹幕引擎·烈焰弹幕。其架构清晰,简单易用,支持多种高效率绘制方式选择,支持多种自定义功能设置上。原创 2016-08-08 21:09:39 · 21170 阅读 · 7 评论 -
最近在忙些什么
不断学习,完成豆瓣第三方客户端,加快开发速度,只是豆瓣API支持还是有限,需要花点时间在上面。原创 2016-08-17 12:35:41 · 364 阅读 · 0 评论 -
appBarLayout上滑隐藏的实现
先贴个实现,直接当linearLayout使用,有空再来写是内部是怎样构造的/** * A {@link LinearLayout} that manages showing and hiding the AppBar and its shadow with support. */public class AppBarWrapperLayout extends LinearLayout {原创 2016-08-16 16:51:06 · 1286 阅读 · 0 评论 -
RecyclerView添加headerview和footview
随着使用的普及,RecyclerView基本取代了listView、gridView等控件。在日常开发中,有时候会使用到headerview、footview,但是RecyclerView的API并没有提供类似于listview的addfootview()等放法,这种情况应该怎么处理呢?普遍的解决方案就是通过指定adapter的itemType来区分将其与内容区域区分开。本篇文章参考了其他博主的文章原创 2016-08-09 22:47:57 · 1505 阅读 · 0 评论 -
Android Studio升级过程中可能出现的错误
1.gradle编译完后出现了几百个error 特别是Ingoring InnerClasser attribute for an anonymous inner class这个错误,截取错误提示的一部分Warning:Ignoring InnerClasses attribute for an anonymous inner classthis warning is that reflect原创 2016-07-17 09:43:14 · 1751 阅读 · 0 评论 -
2016下半年技术规划
2016年过去了一大半,从7月份离职到现在已经休息了大半个月,这半个月里除了旅行以外,就是春儿生赖地躺在家里的沙发上看电影。修养了这么久,期间也思考了许多关于发展规划的问题,关于技术部分的规划就在这分享给大家。InfoAndroid开发的一点思考前端技术学习ing后端与数据库DetailAndroid开发的一点思考做了将近两年的Android开发(包括在校期间的项目),对于一般的功能性开发没原创 2016-07-15 12:25:18 · 1265 阅读 · 0 评论 -
Android计算缓存大小、清空缓存
这个管理类是在网上搜到的,还没有使用和验证,没有找到出处,权当备忘。public class DataCleanManager { public static String getTotalCacheSize(Context context) throws Exception { long cacheSize = getFolderSize(context.getCa原创 2016-05-03 16:49:49 · 714 阅读 · 1 评论 -
金融app收益数字滚动效果
在金融app的收益界面中,往往会有一个收益滚动的动画效果,其实这是用到了ValueAnimator,并对Value的变化进行监听,动态改变文本内容来实现的。 如立马理财中,是从0动态滚动到1.49的: 下面来进行一个简单的展示,分为布局文件和activity:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=原创 2016-03-01 09:49:30 · 2110 阅读 · 0 评论 -
"app_name" is not translated in "zh" (Chinese) [MissingTranslation]解决办法
在打release包时,可能会出现这种错误。 解决办法就是在build.gradle里面进行配置:android{ lintOptions { disable 'InvalidPackage' //只要添加下面这一句就可以了 disable 'MissingTranslation' } }原创 2016-04-06 14:20:24 · 5958 阅读 · 0 评论 -
MPAndroidChart使用指南(MVP模式)
MPAndroidChart是开源的统计图引擎,比另外一款统计图achartengine更为丰富好用。也有其它人在用HelloChart,据说和MPAndroidChart不分伯仲。MPAndroidChart提供了多种类型的统计图表,包括线性图、柱状图、饼状图、雷达图、混合图等图表,完全满足一般的需求。 项目地址: https://github.com/PhilJay/MPAndroidCha原创 2016-04-06 14:14:52 · 3246 阅读 · 0 评论 -
EventBus事件总线的使用
EventBus是一款针对Android优化的 发布/订阅 事件总线,用于Andriod组件间通信。这里说的是组件主要是Activity、Service、Fragment,通信则主要有Intent,Handler,BroadCast。EventBus能够代替这些通信方式的原因在于: 1.在发送者和接收者间解耦 2.代码更优雅 3.更为稳定,避免了错误依赖关系 它的使用方式极其简单,用一张官网原创 2016-03-07 16:34:28 · 708 阅读 · 0 评论 -
Android的一些trick
点击空白收起键盘iOS点击空白收起键盘,Android这边要怎么处理呢。其实很简单,代码如下。 private static void setTouchListener(final Activity context){ context.getWindow().getDecorView().setOnTouchListener(new View.OnTouchListener() {原创 2017-02-20 10:20:05 · 528 阅读 · 0 评论 -
记录下Android gradle的问题
刚打开Android gradle,不能编译,说是VM option 出错未知问题一Error:Unable to start the daemon process.This problem might be caused by incorrect configuration of the daemon.For example, an unrecognized jvm option is use原创 2016-08-01 15:12:32 · 1033 阅读 · 0 评论 -
Android Studio 3.2 发布
Android Studio 3.2 正式版已经发布了。比较期待的以及实际工程中可能会着重用到的是耗电分析功能。其他新特性请参考:https://juejin.im/post/5bc5e70ce51d450e85307963以及https://juejin.im/post/5bc54686e51d450e5f3dbe41附上自己关于 Android 新特性的介绍ppt:...原创 2018-10-17 11:12:49 · 617 阅读 · 0 评论 -
Android应用图标微技巧,8.0系统中应用图标的适配
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/79417483本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个Glide系列结束之后一直还没想到什么好的新题材。现在已经进入了2018年,Andro...转载 2018-07-27 19:07:16 · 218 阅读 · 0 评论 -
Groovy脚本基础全攻略
Groovy脚本基础全攻略【工匠若水 http://blog.csdn.net/yanbober 转载请注明出处。点我开始Android技术交流】1 背景Groovy脚本基于Java且拓展了Java,所以从某种程度来说掌握Java是学习Groovy的前提,故本文适用于不熟悉Groovy却想快速得到Groovy核心基础干货的Java开发者(注意是Java),因为我的目转载 2017-11-24 10:39:23 · 549 阅读 · 0 评论 -
service和aidl的区别
service是在当前进程中新开线程,aidl是系统新开进程,属于另一个进程。原创 2017-03-17 11:03:26 · 1187 阅读 · 0 评论 -
CoordinatorLayout怎么玩折叠
CoordinatorLayout怎么玩折叠前言关于 CoordinatorLayout 的解析之前有一篇文章介绍 CoordinatorLayout补齐资料篇,如果对 CoordinatorLayout 的特性不太清楚的,可以先去了解下,再开始阅读本篇。需求大概两个月前,产品妹子携手设计妹子跑过来。 妹子:“小哥哥,给我们 app 的个人信息页加点动态效果吧”。 我:...原创 2017-10-09 11:16:48 · 555 阅读 · 0 评论 -
移动端弱网测试及Chrome前端调试
移动端弱网测试 chrome前端调试原创 2017-08-26 15:26:27 · 3313 阅读 · 0 评论 -
iOS/Android 微信及浏览器中唤起本地APP
需求概述分享应用活动链接已经成为手机应用一个非常重要的推广传播形式。为了提高转化率,就需要让用户不管是在微信或者是浏览器中,都能在点击链接后, 唤起本地的 app 后 , 跳转到指定页面 。虽然这个功能从用户体验方面来说是自然而然的,但是由于 iOS/Android 平台差异性,在实现过程中还是有些问题。未安装 app 时,如何做好引导页,引导用户下载后打开 app 后,是否可以打开之前唤醒前指定原创 2017-05-08 20:28:58 · 23691 阅读 · 0 评论 -
Android 应用强制更新策略
Android应用强制更新的用途十分广泛,特别上刚上线的应用肯定会存在或多或少的bug,特别是涉及移动支付这一块的内容,如果出错了会造成比较大的损失,所以强制更新显得尤为重要。一般来说,强制更新的策略就是: 应用启动时请求后台,后台发送应用最新版本的信息(包括应用版本号、名称、更新内容说明、下载包的服务器地址、是否强制更新的标志位)等等。下面我们就将根据以上思路来写实现代码。原创 2016-05-24 10:46:22 · 12122 阅读 · 0 评论 -
Android 文件存储策略
Android的文件存储有两种类型: 内部存储 和 外部存储 。首先来确定下一些易混淆的概念:内部存储 不是内存,内部存储位于系统中很特殊的一个位置。外部存储 不一定是 SD 卡, 机身存储也是外部存储。比如 16GB 版本的安卓手机,机子本身就带了外部存储。对于开发来说,最关键的是,我们都是通过相同的 api 来访问可移动的 sdcard 或者手机自带的存储(外部存储)。绝对路径是文件的 完原创 2017-03-21 19:36:55 · 810 阅读 · 0 评论 -
一个2年安卓开发者的一些忠告
原文:What 2 Years of Android Development Have Taught Me the Hard Way 转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/1006/6659.html我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有转载 2017-02-04 10:34:21 · 784 阅读 · 0 评论 -
AndroidStudio Frameworks detected: Android framework is detected in the project Configure
当我们从 Github 上下载一份 Android 源码,可能遇到的问题是,我们遇到 gradle 的一个提示:AndroidStudio Frameworks detected: Android framework is detected in the project Configure。遇到这种情况,就要去检查下载的这个包的结构。 打开菜单栏,File —> open 就会定位到当前打开的原创 2017-02-22 15:29:51 · 3641 阅读 · 0 评论 -
Android汉字转拼音HanziToPinyin实测可用版
Android汉字转拼音现在广泛使用的主要有两种方式: 1.通过第三方库pinyin4j来使用 2.通过原生的HanziToPinyin来使用 但是HanziToPinyin是一个内部类,用于原生通讯录的中文查找功能。我们需要拷贝出来建立一个新的类来调用。但厂商定制不同,导致有的机型汉字转拼音转换不过来,这时就需要加入一个增强条件。 加入 final Locale chinaAdditio原创 2016-02-21 11:00:04 · 1940 阅读 · 2 评论 -
Android Studio:can't reload AVD list的解决方法
在更新了Android Studio后,真机调试出现一下问题而无法调试: Cannot reload AVD list: cvc-enumeration-valid: Value ‘280dpi’ is not facet-valid with respect to enumeration ‘[ldpi, mdpi, tvdpi, hdpi, xhdpi, 400dpi, xxhdpi, 560d原创 2016-02-23 13:56:09 · 1544 阅读 · 0 评论 -
Android自定义属性分析
Android自定义属性分析原创 2015-10-20 23:08:54 · 613 阅读 · 0 评论 -
Volley网络框架学习笔记(三)
通过前面两篇学习,我们基本明白了Volley网络框架通过stringRequest和JsonArrayRequest来获取字符串和json串,也学习了用三种方式来加载图片。需要的同学可以去看看前两篇笔记: Volley网络框架学习笔记(一) http://blog.csdn.net/linshijun33/article/details/47954693 Volley网络框架学习笔记(一)原创 2015-09-01 23:25:59 · 598 阅读 · 0 评论 -
@InjectView的实例化
这里是一个官方例子,轻量级的处理,灵感来自于强大的开源项目RoboGuice,可以通过wiki文档了解。 https://github.com/roboguice/roboguice/wiki基于反射的injectview:Android的findViewById真是太烦人了,模板似的方法,要写在每个Activity,Fragment,Adapter里面。声明View和findView总是间隔着未原创 2015-08-05 14:29:06 · 2155 阅读 · 0 评论 -
intent页面跳转遇到的意外停止问题
当写完一个单个intent页面跳转程序后,程序编译并未报错,但却在运行时报错。这是为什么呢。如图这是我的代码片段,设置单击跳转事件。 public class RegisterListener implements View.OnClickListener{ public void onClick(View arg0) { Intent intent=n原创 2015-08-05 13:48:42 · 5187 阅读 · 5 评论 -
一个优秀的Android应用从建项目开始
http://www.jianshu.com/p/d9e4ddd1c530在简书上看到的,比较不错,但感觉还没更新完,转载分享给大家。原文地址在上面1.项目结构现在的MVP模式越来越流行。就默认采用了。如果项目比较小的话:app——Application Activity Fragment Presenter等的顶级父类config——API,常量表等model转载 2015-08-31 00:42:59 · 725 阅读 · 0 评论 -
Volley网络通信框架学习笔记(二)
上一篇介绍了如何用volley来创建获取JSON,上一篇的地址在 http://blog.csdn.net/linshijun33/article/details/47954693 这一篇就来介绍一下如何利用Volley来加载图片。1.利用Volley异步加载图片/** * 利用Volley异步加载图片 * * 注意方法参数: * getImageList原创 2015-08-25 23:39:21 · 916 阅读 · 0 评论 -
Android照片墙瀑布流的实现与思考
本文的思路主要是根据郭老师的博客来写的,能够实现,也遇到了一些问题。郭老师的思路是:用一个GridView控件当作“墙”,然后随着GridView的滚动将一张张照片贴在“墙”上,这些照片可以是手机本地中存储的,也可以是从网上下载的。制作类似于这种的功能的应用,有一个非常重要的问题需要考虑,就是图片资源何时应该释放。因为随着GridView的滚动,加载的图片可能会越来越多,如果没有一种合理的机制对图片原创 2015-08-27 22:27:09 · 1800 阅读 · 0 评论 -
Android Studio导入JAR包(以ButterKnife为例)
Android Studio有许多非常有用的插件,比如ButterKnifeZelezny,这个用来代替繁琐的findViewById()的一个好方法。这个Android Studio的插件可以让我们在使用ButterKnife注解的时候偷懒,直接分分钟搞定注解的添加,并且整个过程还是图形化可编辑的。我在添加这个包的时候也遇到了一些问题,最后解决了,想和大家来分享一下。 先说一个小tips吧,有的原创 2015-08-14 11:26:34 · 7823 阅读 · 0 评论