Android
文章平均质量分 73
宇光十色_FLY
任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。
展开
-
RxJava interval操作符的线程切换
当我们想要轮询和服务端通信的时候,上面是一个典型的请求方法,通过interval操作符来实现轮询,然后subscribeOn里切换到io线程,看起来没有问题,功能也能运行,然后这里面还是有一个隐患存在的。如图所示,我在map操作符里打印了当前的所在线程:发现结果并不符合我们的预期,这根本不是io型的线程,而是 Schedulers.computation() 对应的线程;而RxJava里的computation是固定线程数(CPU个数)的线程池,当我们的APP里有其他异步操作使用computati.原创 2021-08-11 15:05:44 · 380 阅读 · 0 评论 -
推荐一个极简通用的RecyclerView Adapter库——NoAdapter
NoAdapter你是否还在为项目中众多的列表样式而发愁?你是否还在为一遍遍机械重复的编写Adapter代码而厌倦?你是否还在为编写多类型卡片列表的众多细节而一次次的百度?是时候找一个更高效的手段来解脱自己了。NoAdapter——一个为解决Android列表开发的组件库。正如这个库的名称一样,NoAdapter致力于打造一个极简的RecycleView的Adapter组件,可以让开发者更专注于业务本身的卡片(item)开发,忽略复杂、繁琐、重复(尤其是一个列表有多种卡片类型的情况)的Adapter代码原创 2021-05-25 14:14:42 · 1405 阅读 · 10 评论 -
Android(Java)下载断点续传的实现
Android(Java)下载断点续传的实现,通过使用http range 和 不使用两种方法来实现,并说明了每种方法的优缺点,且着重说明了其中的要注意的地方原创 2020-04-24 19:34:04 · 2361 阅读 · 0 评论 -
LinearLayout子元素设置layout_weight注意的问题
最近在做项目的时候发现在设置android:layout_weight的同时,设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果,既占比小的实际显示反而大,为什么会这样呢 ?android:layout_weight的真实含义是:一旦View设置了该属性(假设有效的情况下),那么该 View的宽度等于原有宽度(androi...原创 2015-01-21 14:03:21 · 194 阅读 · 0 评论 -
android 9.png图片详解
一、何为.9.png.9.PNG是标准的PNG格式,该图片默认后缀是.9.png而得名,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。 在Android中以9.PNG格式的图片未背景,则能够自定义拉伸而不失真,比如系统的Button就是一个典型的例子。这种格式的图片在android 环境下具有自适应调节大小的能力。 (1)允许...2015-01-05 18:16:11 · 254 阅读 · 0 评论 -
RelativeLayout的坑
背景: 因为某个功能,修改了listview的header的根布局,由原来的FrameLayout改为了RelativeLayout,目的是这样能更方便的去处理header里的各个元素之间位置。Bug出现场景: 在Android4.2及以下的手机上加载列表的时候必崩,错误日志如下: 刚开始没有关注BtsViewUtil的155行,因为这个是一个用了很久的工具类,主要就是对view进行mea原创 2017-07-19 20:17:29 · 992 阅读 · 0 评论 -
一次繁杂问题的解决过程
起因:刚入职新公司,接了一个小任务,说来简单,就是把项目里现在所有的埋点任务过滤一遍,以新发给我的一个Excel表格数据为准,没有在表格里出现的埋点key就删除掉。当我接到这个任务的时候,内心其实是有一点抗拒的,毕竟是毫无技术含量低工作,而且项目中那么多文件我总不能一个个文件一行行代码找吧?!幸好我被告知项目中所有埋点功能都是通过一个Log类中的add方法来实现的,那样我只要查找项目中调用了这两个方原创 2017-05-02 16:51:40 · 571 阅读 · 0 评论 -
TextView设置超链接的那些坑
给TextView设置超链接其实很简单,但是要实现不同的效果,可能就要采取不同的方法,这其中也许也还有一些小坑,鄙人刚刚趟了一遍,记录下来,供大家借鉴。1. html设置超链接这是最简单的一种方法了,在自己的string.xml里如下定义<string name="baidu"><a href='www.baidu.com'>百度</a></string>然后你的textview设置上这个字符串就可原创 2017-04-12 18:30:41 · 950 阅读 · 0 评论 -
最简单的自定义Toolbar SearchView样式方法
Android toolbar的灵活性很高,因为它本身就是一个ViewGroup,所以可以通过添加自定义view的形式自行设置标题的样式,这样既不就能满足大部分需求了。 本次主要说一下使用SearchView的时候,如何自定义它的样式。网上大部分都是通过获取SearchView里的控件如EditText来修改它的样式,主要代码如下: SearchView searchView = (Se原创 2017-02-27 18:11:44 · 5501 阅读 · 2 评论 -
activity切换的时候添加动画效果
在startActivity的时候加上一个方法即可overridePendingTransition(R.anim.come_in_r2l, R.anim.come_in_r2l); 如果想为系统所有的activity之间切换,可以在自己定义的baseactivity里重写startactivity方法public void startActivity(Intent in...原创 2015-01-26 11:45:54 · 81 阅读 · 0 评论 -
httpClient封装——异步、回调、下载
安卓学习部分就暂时不更新了,因为现在工作中直接做安卓开发了,以后会陆续记录工作中遇到的问题。言归正传,最近工作开发安卓应用,由于我对安卓还不太熟,就先负责和服务端网络通信。要求:异步、回调。一般我们在Java做异步的时候,到是新开一个线程,然后把逻辑放到线程里去执行。但是安卓里有了封装更好的AsyncTask,而已还有回调方法,具体用法请百度,很详细。我的封装就是基于它来实现的。哎...原创 2014-03-21 13:40:10 · 248 阅读 · 0 评论 -
gson转换时遇到的一个错误
最近在做一个联动列表功能的时候,遇到一个非常奇怪的错误。刚点进去页面就会卡住假死。看了代码感觉没啥问题。然后一步步排查。 首先我以为是数据量比较大,把页面卡住了。打印出从服务器取得的json字串发现不是很多。 然后注掉取数据代码,从本地模拟数据加载,发现没问题。这好奇怪。 我又把adapter的notifyDataSetChange...2015-03-02 17:35:40 · 322 阅读 · 0 评论 -
Android关闭键盘时的一个小问题
最近遇到一个问题,拿出来跟大家分享下,并希望高手分析。事情是这样的,我在一个新弹出的dialog里有一个输入框,希望在弹出的时候自动把软键盘打开,输入完点击确定或取消的时候把软键盘关闭。创建dialog的代码 AlertDialog.Builder builder=new AlertDialog.Builder(context); final AlertDialo...2015-03-16 14:43:50 · 246 阅读 · 0 评论 -
记一次Android下载过程的内存优化
对于大多数程序猿(码农)来说,一提到内存优化肯定都是比较头大,我也不例外,但是因为我们这个项目就我一个人做,出问题了也没有大牛解决,所以只能是自己硬着头皮上了。 言归正传,先交代一下事情的原因。楼主是做网盘项目的,从从未接触过分块上传、断点续传(以前一听断点续传也是头大)到勉强把分块上传下载做完,也是经历了好多痛苦的,但是,有一个事情一直是我不愿承认不想面对但却偏...2015-09-02 10:48:52 · 157 阅读 · 0 评论 -
Android监测程序压入后台及从后台返回
在API14中,android提供了一个新的状态监听的接口 ComponentCallbacks2。在当中的onTrimMemory方法中,提供了一个状态参数 TRIM_MEMORY_UI_HIDDEN。应该算是一个“正式”的进入后台标志了,之所以打引号,是因为这个状态本意上并不是为了监听进入后台而设计的,它只是为了让开发人员能够在程序进入后台的时候去释放一些内存。但是,这个确实能够准确的监控。...2015-11-06 18:20:54 · 298 阅读 · 0 评论 -
记一次获取当前用户名错误的bug
在Android应用中很多时候都会要获取当前登录用户名,一般的逻辑是这样的,在登录Activity中,登录成功的时候记录当前用户的用户名,通过sharePrefrence保存;在BaseActivity中获取当前用户名,也是通过sharePrefrence获取。这个本没什么问题,错就错在我在登录成功后Activity oncreate里把当前用户记录了下来,代码类似mCurrentU...2015-11-16 14:45:33 · 404 阅读 · 0 评论 -
Android selector设置详解
Android 中的selector常用来设置背景,可以很方便的根据checked,selected等不同状态设置不同背景,不需要自己在Java代码设置了,简单,优雅!相信selector设置背景色大家都很熟悉了,这里介绍两个最近总结的一些技巧。背景色和文字颜色的设置 类似微信的底部导航,点击不同的底部按钮,会显示选中的图片,同时文字也会变色,背景图片用select...2015-12-01 11:41:46 · 575 阅读 · 0 评论 -
Webview加载asset下的css文件和加载HTML代码
在webview里加载html页面,正常建议是把html页面写好后放到服务器上,然后客户端去加载就ok了。但是最近遇到个要客户端本地加载html的,这里记录一下。1、webview动态加载html代码(不是html文件哦),用webView.loadDataWithBaseURL(null, minString, "text/html", "UTF-8", null);方法;2、如...原创 2014-12-17 14:54:15 · 438 阅读 · 0 评论 -
ReactNative开发之我遇到的那些坑(持续更新)
上篇文章里介绍了ReactNative环境的搭建,然后你以为就可以开开心心的进行开发了?too young! 最让人抓狂的部分才刚刚到来。。Q1、在启动js server的时候 react-native start ,老是报错 “operation not permitted, 1stat ‘’ 老实说,这个问题一直没有找到很好的解决办法,因为每次提示的文件都不是同一个。目前我采取的就原创 2016-12-20 15:08:06 · 5232 阅读 · 1 评论 -
React Native开发之windows开发环境最简配置
最近因项目需要,一个APP要用React Native开发。这里总结一下ReactNative在windows下的开发环境搭建。 当然这里先做一个重要总结!不要在windows下开发ReactNative!!! windows 下开发ReactNative确实非常麻烦,坑很多(至少目前情况是这样,当然随着RN越来越成熟,以后windows下应该也非常简单。) 如果你执意要在windows下开发原创 2016-12-20 14:37:01 · 544 阅读 · 0 评论 -
记录在使用react-native-echarts中遇到的问题
react-native-echarts是一个在react-native中非常好用的图表组件,感觉比guthub上排名第一的还好用。主要是因为它是基于百度的echarts做的,不知道echarts的自行百度,感觉echarts现在是图表中做的做好的组件了。 具体使用很简单,我就不说了。这里记录一下在使用中遇到的两个问题。Q1当数据量比较大的时候,x轴的数据不显示。这个是echarts自己的一个功能原创 2016-12-30 11:05:40 · 10850 阅读 · 4 评论 -
Android监测程序压入后台及从后台返回
在API14中,android提供了一个新的状态监听的接口 ComponentCallbacks2。在当中的onTrimMemory方法中,提供了一个状态参数 TRIM_MEMORY_UI_HIDDEN。应该算是一个“正式”的进入后台标志了,之所以打引号,是因为这个状态本意上并不是为了监听进入后台而设计的,它只是为了让开发人员能够在程序进入后台的时候去释放一些内存。但是,这个确实能够准确的监控。原创 2015-12-23 10:09:27 · 866 阅读 · 0 评论 -
startActivityForResult需要注意的问题
假设从Activity A启动Activity B1、如果B的launchMode不是 standard,那么B不会启动,且会立即执行A的onActivityResult方法; 控制台有如此经过提示: WARN/ActivityManager(67): Activity is launching as a new task, so cancelling activity re原创 2016-03-01 17:48:09 · 416 阅读 · 0 评论 -
httpClient封装——异步、回调、下载
安卓学习部分就暂时不更新了,因为现在工作中直接做安卓开发了,以后会陆续记录工作中遇到的问题。言归正传,最近工作开发安卓应用,由于我对安卓还不太熟,就先负责和服务端网络通信。要求:异步、回调。一般我们在Java做异步的时候,到是新开一个线程,然后把逻辑放到线程里去执行。但是安卓里有了封装更好的AsyncTask,而已还有回调方法,具体用法请百度,很详细。我的封装就是基于它来实现的。哎呀,原创 2015-12-22 17:49:59 · 1467 阅读 · 0 评论 -
记一次EditText设置默认选中setSelection的一个bug
需求:在重命名的时候,要默认选中文件的后缀之前的名字;代码如下:int index = name.lastIndexOf(".");if (index > 0) renameEditText.setSelection(0, index);但是发现有的文件重命名的时候app崩溃,报错如下: java.lang.IndexOutOfBoundsExcep原创 2016-03-02 14:52:34 · 6036 阅读 · 3 评论 -
[置顶] Android selector设置详解
Android 中的selector常用来设置背景,可以很方便的根据checked,selected等不同状态设置不同背景,不需要自己在Java代码设置了,简单,优雅!相信selector设置背景色大家都很熟悉了,这里介绍两个最近总结的一些技巧。背景色和文字颜色的设置 类似微信的底部导航,点击不同的底部按钮,会显示选中的图片,同时文字也会变色,背景图片用selector原创 2015-12-23 10:22:54 · 993 阅读 · 0 评论 -
Android获取手机本地图片缩略图
首先,提取图片和视频的缩略图可以直接访问Android系统数据库:1 android.provider.MediaStore.Images.Thumbnails2 android.provider.MediaStore.Video.Thumbnails这两个数据库,即可查询出来缩略图可以根据下面方法获取 public long getDbId(String path, b原创 2016-03-22 22:09:11 · 3056 阅读 · 1 评论 -
解决被依赖module中BuildConfig.DEBUG的值总为false问题
在Android的实际开发中,一般会有这样的需求,debug和release版本不同,接口地址不同,同时控制日志是否打印等,系统为我们提供了一个很方便的类BuildConfig可以自动判断是否是debug模式。 有了BuildConfig.DEBUG之后,你在代码中可以直接写入 if (BuildConfig.DEBUG) { Log.d(TAG, "output somet原创 2016-06-24 17:28:37 · 9945 阅读 · 7 评论 -
解决Android 5.0中出现的错误:Service Intent must be explicit
最近在开发SDK,用户在使用过程中遇到一个问题,在启动service的时候报如下错误:错误提示也比较明显,Service Intent必须是显示的。这里我启动service的时候确实是隐式的: bindService(new Intent(MidConstants.ACTION_SERV_TRANS), mTransServiceConnection, Context.BIND_AUTO_CRE原创 2016-07-22 11:35:01 · 567 阅读 · 0 评论 -
可能是讲解Android事件分发最好的文章
我几乎看过国内讲解Android事件分发的所有文章,但遗憾的是都没有这篇讲的好,原因有二:它阐明了具体的事件分发机制的设计意图,让人既知其然,又知其所以然;它没有贴源码,吓唬本宝宝。所以我决定将它翻译出来,造福广大Android开发者。原文请点击[这里](http://www.jianshu.com/p/2be492c1df96)有时,你必须要自己处理触摸事件(touch events)而不能依赖于转载 2016-07-22 14:45:47 · 321 阅读 · 0 评论 -
对于Activity生命周期,你想知道的,全在这里
本来没打算写这篇文章,毕竟网上讲解Activity生命周期的文章一搜一大把,没有什么可说的。但是因为最近开发的时候遇到一个因为生命周期的一个疏忽导致Service始终报android.os.DeadObjectException 错误,调试了半天才解决,总结下来还是生命周期不熟,这里在总结一下。 对于生命周期,一些很经典的图就足以说明了,比如下面这个 再比如这个 具体的Activity生命周期原创 2016-07-14 20:40:30 · 466 阅读 · 0 评论 -
Android调用系统相机的那些坑
Android实现拍照获取图片,有两种方案,第一就是调用系统相机拍照,然后获取拍照后的图片,实现比较简单,同时功能也比较简单;第二就是自定义相机,实现复杂,但是功能强大。这里讨论的是第一种实现方案。 虽然第一种方案比较简单,但是如果第一次用也会有一些磕磕绊绊,这里把我遇到的问题记录总结一些:1、调用系统相机拍照后,系统报错DeadObjectException; 解决办法:在An原创 2016-07-07 15:31:54 · 5525 阅读 · 0 评论 -
记一次使用Android studio修改代码不生效的问题
早晨到公司,匆匆打开Android studio,把昨晚构思了好久的代码敲上去,满怀期待的等待着“惊喜”出现。。结果惊喜果然出现了! 问题并没有解决,调试了半天发现原来新的代码并未生效,新打的log日志都没有,长舒一口气,原来并不是我的代码问题,是as的问题,好办!一顿clean,rebuild,卸载——卸载、clean、rebuild。。然而并没有什么卵用。。这到底是什么情况?!无意间发现了我的b原创 2016-07-05 15:49:23 · 20993 阅读 · 1 评论 -
Android Studio中的productFlavors指定默认编译执行的任务
Android Studio中指定了 productFlavors如下: productFlavors { /*日常*/ Daily { } /*线上*/ Online { } /*预发*/ Advance { } }但是这个时转载 2016-08-17 11:38:11 · 8163 阅读 · 3 评论 -
Gradle使用技巧1——根据buildType自动打包
自定义参数,在代码中使用 在开发过程中,一般接口地址根据环境不同分为release、debug等不同地址,如果只是debug和release两种还好办,可以根据 BuildConfig.DEBUG 来区分使用哪个地址,但是如果又多了一个dev环境呢?再有dev2……怎么办? 这个时候就轮到Gradle的自定义参数上场了!用户可以自己选择是在buildType或者Flavors里自己设定,设定的语原创 2016-08-02 11:59:24 · 3782 阅读 · 0 评论 -
Gradle使用技巧2——不同buildType使用不同applicationId
在工作中,有的时候会遇到比较奇葩的需求,就是线上环境和开发环境不能使用同一个applicationId,比如在使用推送的时候(小米推送),不同的KEY对应不同的applicationId,如果在注册的时候只使用同一个KEY,那么平时开发测试的时候很容易就导致消息发到了线上环境,这怎么办呢? 还能怎么办?在推送网站上申请两个账号呗,一个测试账号,一个正式账号。然后在初始化推送服务的时候可以根据 Bu原创 2016-08-09 16:42:37 · 4174 阅读 · 0 评论 -
关于ListView设置分割线的那点事
大家在刚接触Android的时候,ListView肯定是第一个接触到的、也是比较常用的一个比较“高级”一点的控件,说它高级,主要是它在使用的时候比TextView、ImageView等基础控件要复杂一点。 当我们兴致勃勃的学习了ListView和Adapter直接的关系绑定,并且把列表展示出来了之后,遇到一个说起来很简单的一个问题,列表怎么添加分割线?1、item view里添加分割线最直接最简单原创 2016-09-08 18:17:41 · 3924 阅读 · 0 评论 -
Error:Configuration with name 'default' not found. 解决办法
原文地址在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name ‘default’ not found.之前由于对gradle不熟悉,所以没有找到原因,其实也是偷懒,没有认真去排查问题,今天又遇到了,就折腾了会,把所有的配置文件都打开看,最终解决问题了,发现尽然是个低级的不能低级的问题,故记录下,警醒自己。打开set转载 2016-11-29 11:51:25 · 509 阅读 · 0 评论 -
记一次Android下载过程的内存优化
对于大多数程序猿(码农)来说,一提到内存优化肯定都是比较头大,我也不例外,但是因为我们这个项目就我一个人做,出问题了也没有大牛解决,所以只能是自己硬着头皮上了。 言归正传,先交代一下事情的原因。楼主是做网盘项目的,从从未接触过分块上传、断点续传(以前一听断点续传也是头大)到勉强把分块上传下载做完,也是经历了好多痛苦的,但是,有一个事情一直是我不愿承认不想面对但却偏偏存在的问题,那就原创 2015-12-23 10:01:23 · 542 阅读 · 0 评论