详解Android主流框架不可或缺的基石

经过几年的发展和沉淀,Android开发中涌现出许多优秀的框架,比如:Retrofit、Afinal、OKHttp、ButterKnife、AndFix等等。这些框架的出现极大地简化了开发流程,提高了工作效率。在项目开发的过程中我们主要是使用这些轮子完成项目,很难有时间去顾及框架的内部实现。在项目交付之后我们可能就要去看看这些框架的源码了。...
阅读(14395) 评论(22)

I/O流的梳理和小结

package cc.testio;import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.support.v7....
阅读(5026) 评论(0)

探索Android软键盘的疑难杂症

在Activity中含有EditText时,我们常常在AndroidManifest.xml中为该Activity设置android:windowSoftInputMode属性,其中最常用的值就是adjustResize和adjustPan。在此请思考几个问题: adjustResize和adjustPan有什么区别? adjustResize和adjustPan的应用场景有何差异? 当设置a...
阅读(21152) 评论(19)

利用TouchDelegate提升用户体验

最近在维护公司的老项目,客户反馈了一个问题: 点赞的红色小桃心有时点击之后没有响应。嗯哼,既然客户说有这个问题,那么就需要确认一下。 从豌豆荚上下载了一个最新版本,安装后跳转到详情页面,然后点赞。反复操作几次发现:有时果然点不到。检查一下代码ClickListener没有问题,但是由于该图片较小(150*150),导致有时点击不到该图片从而带来不太好的...
阅读(5104) 评论(0)

详解ImageView的CENTER_CROP,CENTER_INSIDE,FIT_CENTER等属性

package cc.testscaletype; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.widget.ImageView; import android...
阅读(5016) 评论(4)

友盟新浪微博授权提示“找不到文件C8998”的解决办法

近来实在忙,原以为这个月是没有时间发博客了。 但是,心中熊熊燃烧的怒火难以抑制;也不想让更多人像我一样跳进火坑。 所以,我决定牺牲今晚学习中日文化交流的时间记录这个问题的解决。 开发背景 1 利用友盟SDK进行新浪第三方登录 2 下载友盟最新SDK(5.0) 3 下载友盟官方Demo运行,一切OK. 4 按照友盟官方文档开始开发 嗯哼,擦个神油的功夫就写好了相关代码。 运行,点击...
阅读(8031) 评论(6)

[置顶] 推翻自己和过往,重学自定义View

关于自定义View以前看了很多资料看,从博客园到CSDN,从stackoverflow到EOE论坛,从百草园到三味书屋,搜了一大筐,沮丧的发现这些文章大同小异:只举个简单的例子,很少研究为什么;人云亦云,文章里的内容根本没有去验证和深究就发出来了;或者避重就轻展示简单的Demo直接把难点给绕过去了;文章零零散散不成体系……每次看完这些文章觉得还是晕头转向,稀里糊涂,原本就不多的学习动力和勇气也消失殆尽了。...
阅读(27541) 评论(67)

自定义View系列教程08--滑动冲突的产生及其处理

在之前的几篇文章中,我们已经分析了View对于Touch的处理以及ViewGroup对于Touch事件的分发。但在开发中时常遇到一个棘手的问题:Touch事件的滑动冲突。比如ListView嵌套ScrollView,ViewPager嵌套ScrollView,ListView嵌套ScrollView时常常发生。 这些滑动冲突的产生,一般而言都具有以下特点: 子View和父View都有滑动的需...
阅读(9801) 评论(35)

自定义View系列教程07--详解ViewGroup分发Touch事件

在上一篇中已经分析完了View对于Touch事件的处理,在此基础上分析和理解ViewGroup对于Touch事件的分发就会相对容易些。 当一个Touch事件发生后,事件首先由系统传递给当前Activity并且由其dispatchTouchEvent()派发该Touch事件,源码如下: public boolean dispatchTouchEvent(MotionEvent ev) {...
阅读(14870) 评论(48)

自定义View系列教程06--详解View的Touch事件处理

在之前的几篇文章中结合Andorid源码还有示例分析完了自定义View的三个阶段:measure,layout,draw。 在自定义View的过程中我们还经常需要处理View的Touch事件,这就涉及到了大伙常说的Touch事件的分发。其实,这一部分还是有些复杂的,而且有的地方不是很好理解,尤其是对于刚上路的新司机来说经常理不清楚,欲求不满,欲罢不能——想搞懂却又觉得难,想放弃又觉得舍不得。 好吧,我也经历过这些痛...
阅读(14981) 评论(25)

自定义View系列教程05--示例分析

之前结合源码分析完了自定义View的三个阶段:measure,layout,draw。 那么,自定义有哪几种常见的方式呢? 直接继承自View 在使用该方式实现自定义View时通常的核心操作都在onDraw( )当中进行。但是,请注意,在分析measure部分源码的时候,我们提到如果直接继承自View在onMeasure( )中要处理view大小为wrap_content的情况,否则这种情...
阅读(19437) 评论(57)

自定义View系列教程04--Draw源码分析及其实践

通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。 完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPriv...
阅读(22511) 评论(33)

自定义View系列教程03--onLayout源码详尽分析

在经过measure阶段以后,系统确定了View的大小,接下来就进入到layout的过程。 在该过程中会确定视图的显示位置(即子View在其父控件中的位置)。 嗯哼,我们直接扒开源码从View的layout( )开始入手。 //l, t, r, b分别表示子View相对于父View的左、上、右、下的坐标 public void layout(int l, int t, int r, in...
阅读(21303) 评论(34)

自定义View系列教程02--onMeasure源码详尽分析

大家知道,自定义View有三个重要的步骤:measure,layout,draw。而measure处于该链条的首端,占据着极其重要的地位;然而对于measure的理解却不是那么容易,许多问题都是一知半解,比如:为什么父View影响到了子View的MeasureSpec的生成?为什么我们自定义一个View在布局时将其宽或者高指定为wrap_content但是其实际是match_parent的效果?子V...
阅读(32666) 评论(91)

自定义View系列教程01--常用工具介绍

在自定义View的时候,常常会用到一些Android系统提供的工具。这些工具封装了我们经常会用到的方法,比如拖拽View,计算滑动速度,View的滚动,手势处理等等。如果我们自己去实现这些方法会比较繁琐,而且容易出一些bug。所以,作为自定义View系列教程的开端,先介绍一下这些常用的工具,以便在后续的学习和工作中使用。...
阅读(37849) 评论(60)

仿QQ获取设备中APK并分享

我和郭霖13年,郭霖开始写技术博客。我在CSDN的博客频道逛着玩,刚好看到他的文章,于是点击进去阅读。看完之后最大的感受就是:代码整齐,技术深厚;文章写得图文并茂,有条有理。从那时起,我就成了郭霖的一个粉丝,每周四早晨都等着看他的更新。诚实地说:没有脑残地追过星,但这么实在地喜欢看一个人写的技术博客,这还是头一回。其实,从他每篇文章的点击量和评论数也可以看出:大家对郭霖非常的认可。他也常出现在CSD...
阅读(18416) 评论(11)

Android中线程那些事

如何理解线程在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都会有相应的开销,当系统中存在大量的线程时,系统会通过时间陪轮转的方式调度每个线程,在这么多线程中有一个被称为主线程,主线程是指进程所拥有的线程,在JAVA中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程主要处理界面交互相关的逻辑,因为用户随时会和界面发生...
阅读(10610) 评论(4)

Android官方底部Tab栏设计规范

上一篇《仿微信底部Tab栏》中粗略的讲了下底部Tab栏的封装,不少同学在实际运用中发现了一些问题,比如我demo中的title用了actionbar,所以如果新建的Activity的Theme不包含actionbar就回出现空指针;再比如假如底部的Tab对应的并不全都是Fragment,而是一部分Fragment,一部分Activity,就不适用了,但办法总比困难多,这个也是可以解决的;还有一个很常...
阅读(20725) 评论(2)

封装实践——打造微信底部tab栏

目前市面上很多App都采用底部一个Tab栏,管理四到五个Tab,然后选择切换页面的方式的设计,这虽然不太符合metro design,但确是一个不容易出错而又符合国人使用习惯的设计方式。比如微信,支付宝,网易新闻,简书等都采用这种设计。而所谓封装一定是基于某种确定的业务需求,所以针对上述的通用设计方式,我们可以做一个比较理想化的封装。 为什么要做封装 你可能会觉得,这就是一个选择切换嘛,我只要做...
阅读(10923) 评论(3)

利用ActivityLifecycleCallbacks判断APP是否在后台运行

利用ActivityLifecycleCallbacks判断APP是否在后台运行(附源码)...
阅读(12257) 评论(5)
779条 共39页首页 上一页 ... 6 7 8 9 10 ... 下一页 尾页
    个人资料
    • 访问:1813082次
    • 积分:26086
    • 等级:
    • 排名:第249名
    • 原创:778篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1205条
    博客专栏
    开发交流


    为方便大家学习和交流Android开发,建了个群,欢迎大家加入。

    QQ群: 183899857

    文章分类