Android
文章平均质量分 85
大菜鸟一号
这个作者很懒,什么都没留下…
展开
-
Android源码分析-点击事件派发机制
载请出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857概述一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,不然总是只停留在会用的层次上但是无法了解其内部机制。我用的是4.4源码,打开看看,挺复杂的,尤其是事件是怎么从Activity派发出来的,太费解了。了解Window...转载 2017-03-08 17:19:11 · 324 阅读 · 0 评论 -
ViewPager中嵌套HorizontalScrollView导致无法滑动换页冲突解决
在之前的开发过程中,遇到过ViewPager中嵌套HorizontalScrollView导致无法横向滑动换页,最终也是通过对onTouchEvent方法判断滑动的状态来进行控制左右的滑动,注意的是onTouchEvent的事件分发的方向正好与onInterceptTouchEvent相反,是从下往上分发的,所以也会先执行子View的onTouchEvent方法(如果想进一步了解View...原创 2016-05-09 13:36:40 · 6365 阅读 · 0 评论 -
ScrollView和ViewPager滑动冲突的解决和整理
最近看了看以前的bug和解决方法,发现自己在解决问题后很少去总结,现在发现下次再遇到的时候还是需要去查阅,在这里我还是把它拿出来总结了一下。当时在做项目的时候,是在ViewPager里面嵌套了ScrollView,导致了滑动十分的卡顿的bug,最后通过了ScrollView的onInterceptTouchEvent的重写,解决了这个bug。重写了ScrollView的onInter...原创 2016-05-03 17:11:16 · 5513 阅读 · 0 评论 -
Android canvas绘制柱形统计图
现在很多应用都需要一些统计图,目前第三方的统计图也有很多,但是在自己看来只要不是特别耽误时间还是选择用canvas自己绘制比较合理,依赖于第三方的绘制在需求上也荣容易有一定出入,而且也不容易扩展,所以自己就根据需求绘制了一些统计图,下面就是我绘制的柱状统计图,可以根据给定高和宽来自适应,不懂的地方可以留言联系我。 首先写一个基类,将公用的模块提取出来,这也体现设计模式中的抽象工厂模...原创 2016-04-20 13:54:31 · 2231 阅读 · 0 评论 -
为RecyclerView打造万能适配器
为了方便开发,减少代码量,打造万能的RecyclerView的适配器。1、重写RecyclerView.Adapter<BaseViewHolder>,继承package com.partjob.commonjar.base;import java.util.List;import android.content.Context;import android.support...原创 2016-04-05 19:45:05 · 767 阅读 · 0 评论 -
android6.0以后删除HttpClient的解决方法
Android6.0以后,不再提供org.apache.http.*(只保留几个类),所以导致使用HttpClient的时候会报错,比如android-async-http等等。HttpClient在Android2.2以后就不提倡使用了。这里解决办法就是libs中加入org.apache.http.legacy.jar。android studio还需要在build.gradle中加入:andr...原创 2016-04-03 11:53:37 · 1174 阅读 · 0 评论 -
使用volley读取压缩文件的内容(zip、gz)
volley无法直接读取gzip文件,最后通过重写了Request实现了对gzip文件读取package com.partjob.commonjar.okhttp;import com.android.volley.NetworkResponse;import com.android.volley.ParseError;import com.android.volley.Request;...原创 2016-04-19 14:21:01 · 1432 阅读 · 1 评论 -
Android图片压缩(质量压缩和尺寸压缩)
在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成缩略图。两种方法都实装在了我的项目中,结果却发现在质量压缩的模块中,本来1.9M的图片压缩后反而变成3M多了,很是奇怪,再做了进一步调查终于知道原因了。...转载 2016-05-10 15:27:10 · 472 阅读 · 0 评论 -
GreenDao使用教程
一 Greendao简介二Greendao的使用方法配置初始化GreendaoGreendao操作数据库文件增删改查三多表关联四Greendao注解含义五Greendao特性一、 Greendao简介Greendao是一款用于数据库创建与管理的框架,由于原生SQLite语言比较复杂繁琐,使得不少程序员不得不去学习SQLite原生语言,但是学习成本高,效率低下,所以不少公司致力于开发一转载 2018-04-27 13:48:38 · 1043 阅读 · 0 评论 -
ConstraintLayout使用
一、ConstraintLayout概述ConstraintLayout约束布局和其他布局容器一样,都是继承自ViewGroup的,所以他也拥有其他布局的一些公用属性,与其他布局不同的是他是通过约束规则来实现布局的,所以他还新增了一些他特有的属性(后面再详说),虽然是在Android Studio2.2之后才有这个工具,但是向下兼容到Android版本2.3,官网中对它的描述就一句话:它允许您...原创 2018-05-12 17:57:13 · 361 阅读 · 0 评论 -
HandlerThread和IntentService
HandlerThreadHandlerThread继承了Thread,它是一种可以使用Handler的Thread,它实现也很简单,就是在run中通过Looper.prepare()来创建消息队列,并且通过Looper.loop()来开启消息循环,这样再实际使用中就允许在HandlerThread中创建Handle了。public class HandlerThread extend...原创 2018-05-14 17:35:22 · 630 阅读 · 0 评论 -
Android 性能专题篇 - 内存优化
一、解决所有的内存泄漏1. 单利泄漏 主要原因还是因为一般情况下单例都是全局的,有时候会引用一些实际生命周期比较短的变量,导致其无法释放。例如 :activity 的 context赋值到单利对象里面的成员量变量:private static volatile ClassXX instance; private Context context; pr...原创 2018-05-22 20:18:07 · 324 阅读 · 0 评论 -
Android中View绘制流程
View的工作流程主要分为onMeasure、onSizeChanged、onLayout、onDraw; onMeasure MeasureSpec onSizeChangedint w int h int oldw int oldh onLayout onDraw invalidate 自定义View注意事项 ...原创 2016-05-09 17:08:27 · 508 阅读 · 0 评论 -
GreenDao源码
简述DaoMaster、具体的Dao 和 DaoSession对象为greedao生成的代码从平时的使用可以看出他们的作用DaoMasterGreenDao的总入口,负责整个库的运行,实现了SqliteOpenHelper DaoSession会话层,操作Dao的具体对象,包括DAO对象的注册 xxEntity实体类,和表内容一一对应 xxDao生成的DAO对象,进行具体的数据库操...转载 2018-08-06 16:37:06 · 379 阅读 · 0 评论 -
Android获取View的高宽的方式
一、MeasureSpec(测量方法):LinearLayout newsTopLayout = (LinearLayout) viewHashMapObj.get("top");int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);int h = View.MeasureSpec.makeMeasur...原创 2016-05-10 10:24:18 · 1518 阅读 · 0 评论 -
如何定位和解决Andorid的内存溢出问题(大总结)
我们经常在做项目过程中遇到内存溢出的问题,同时面试中关于OOM的问题也常常出现。这里,我将前辈们解决Andorid内存溢出的方法重新整理一番,方便自己以后使用。最后附上参考博文。一、Android的内存机制android应用层是由java开发的,android的davlik虚拟机与jvm也类似,只不过它是基于寄存器的。在java中,通过new为对象分配内存,所有对象在java堆内分配空间;而内存的...转载 2016-05-11 15:58:36 · 341 阅读 · 0 评论 -
AsyncTask源码分析
AsyncTask简介AsyncTask步骤注意事项AsyncTask工作原理解决3.0以上版本不能并行执行的问题AsyncTask简介 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。 ...原创 2017-03-20 12:18:05 · 305 阅读 · 0 评论 -
Fragment生命周期
Fragment生命周期详细解读每个方法的调用场景fragment生命周期解析当一个fragment被创建的时候:当这个fragment对用户可见的时候,它会经历以下状态。可以理解为从创建到显示(或切换)当这个fragment被销毁了(或者持有它的activity被销毁了):就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。其他...原创 2017-03-21 18:54:03 · 858 阅读 · 0 评论 -
Activity和Fragment生命周期
原文:http://blog.csdn.net/android_tutor/article/details/5772285Activity生命周期先来看张官方说明图详细解读每个方法的调用场景onCreate():当创建启动时调用onStart():当处于可见状态时调用调用场景:Activity启动:onCreate()->onStart()->onResumeonResume ()调用...转载 2017-03-14 17:25:46 · 762 阅读 · 0 评论 -
点击事件传递规律
点击事件的分发过程有三个主要的方法:onTouchEvent:onTouchEvent是在view中定义的一个方法。处理传递到view 的手势事件。手势事件类型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL四种事件。一旦onTouchEvent方法被调用,并返回true则这个手势事件就结束了,并不会继续传递到子控件。onInt...原创 2017-03-07 17:58:02 · 736 阅读 · 0 评论 -
Android View
View基础知识View的位置参数:MotionEvent和TouchSlopVelocityTrackerGestureDetectorView的滑动scrollTo和scrollBy使用动画改变布局参数ScrollerView基础知识View的位置参数: top、left、right、bottom,分别对应View的左上角和右下...原创 2017-03-07 16:14:39 · 287 阅读 · 0 评论 -
Android根据可显示宽度调整字体大小
1、实现结果:定义一个字体最大值和字体最小值默认情况下显示最大值,当内容排版空间不足的情况下,调整字体大小 2、分析过程: 可以通过计算指定字体大小的文字计算宽度是否能够排下内容,不能,就减小字体大小 3、attrs添加参数: <attr name="maxTextSize" format="dimension"/> <attr name="minTex...原创 2017-01-12 16:27:39 · 6021 阅读 · 2 评论 -
Android自定义柱状图,带有标注和左右滑动效果
最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动),下图是整体效果,下面我分析一下代码:1、设置内容: tagging:标注 xRawData:x轴坐标 yRawData:为柱形图的内容,通过List<Float>... yRawData传入,可以有多个/** * 设置值 tagging:标注 xRawData:x轴坐...原创 2016-11-18 14:38:15 · 4506 阅读 · 4 评论 -
ActivityCompat使用
今天在查看资料的时候看到了ActivityCompat这个类来启动Activity,ActivityCompat是v4包里新加的一个类,打开了看了看代码:<span style="font-family:SimSun;font-size:14px;">public static void startActivity(Activity activity, Intent intent, @...原创 2016-05-25 11:02:52 · 23714 阅读 · 0 评论 -
TraceView界面
TraceView界面现来看一下整个界面的图,整个界面包括上下两部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行;下面是每个方法执行的各个指标的值上面一部分是你测试进程的中每个线程运行的时间线,下图中可以可以看到,主要只有一个main线程在执行,因为我滑动了一下列表,main线程(UI线程)正在进行绘制View呢~然后我点击了序号为133的一个方法io.bxbxbai.android....转载 2016-05-24 15:58:18 · 322 阅读 · 0 评论 -
Activity被内存回收的思考1
手机开发者模式中有这样一个功能,不保留活动,打开以后跳转后,当前Activity会被系统回收,走onSaveInstanceState()方法保存activity的信息,返回时会重走生命周期,加上onRestoreInstanceState()方法。但是在调试的时候回报这样的java.lang.InstantiationException异常,意思是反射的时候不能不能实例化这个类,我找到了地方,就...原创 2016-05-23 17:27:40 · 647 阅读 · 0 评论 -
Activity启动过程分析
一、启动:startActivityForResult()、startActivity(): startActivity也会调用startActivityForResult,所以Activity启动入口当然是startActivityForResult: public void startActivityForResult(Intent intent, int requestCode,...原创 2016-05-18 14:26:43 · 1171 阅读 · 0 评论 -
SparseArray代替HashMap
今天查看Fragment的源代码,发现了这样的代码:SparseArray,我看了一下SparseArray,这是一个在android.support.v4.util包里的类:,第一时间想到是不是用来替代HashMap的类,还有一个ArrayMap,ArrayMap是继承于SparseArray。lruCache使用过的人应该很熟悉,这是做Bitmap缓存的时候使用的。我特地查了下资料,看了看Sp...原创 2016-05-13 18:05:15 · 906 阅读 · 0 评论 -
Android Handler机制分析
今天特地分析了一下Handler机制原理,如何实现线程之间的通信的,最终总结了一下几个方面。在主要有四个类:Handler、MessageQueue、Message、Looper消息的表示:Message消息队列:MessageQueue,主要包括两个操作,插入(enqueueMessage)和读取(next,从消息队列中去除一条)。消息循环,用于循环取出消息进行处理:Looper消息处理,消息循...原创 2016-05-13 16:49:28 · 861 阅读 · 1 评论 -
retrofit源码解析
在Android客户端的项目网络请求实践中,对retrofit进行了实践和源码的阅读。从retrofit的用法入手,对retrofit进行解析。首先看一下retrofit的基本用法:第一步创建retrofit对象:Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .build(...转载 2018-08-06 16:36:56 · 366 阅读 · 0 评论