- 博客(36)
- 资源 (20)
- 收藏
- 关注
原创 插件化:资源加载
参考:http://blog.youkuaiyun.com/yulong0809/article/details/59489396插件化:加载资源 1、LoadedApk是一个apk在内存中的标示, Apk文件的相关信息,诸如Apk文件的代码和资源,甚至代码里面的Activity,Service等四大组件的信息我们都可以通过此对象获取; 2、LoadedApk 创建的时候会传入一个ApplicationIn
2017-04-08 15:12:38
407
原创 插件化:动态加载类
参考: 1、http://blog.youkuaiyun.com/yulong0809 2、http://weishu.me/主要涉及到基础知识:Binder机制、代理模式、dex类加载、app启动过程、反射hook等。动态加载类1、通过Dex:类加载过程得知:类是又classloader加载的,所有看一下classloader是怎么获取的; 2、在app启动过程中,classLoader 是通过r.pa
2017-04-08 15:08:15
420
原创 代理模式及具体实现
代理模式(其他的请看参考或者自行google) 1、作用:对其他对象提供一种代理以控制对该对象的访问;主要就是在执行真正的方法的前或后添加一些操作,如:对该方法的参数进行修改等。 2、动态代理类: java代理类位于Java.lang.reflect包下,一般主要涉及到如下两个类:Interface InvocationHandler, 该接口仅定义了一个方法 Object
2017-04-08 13:49:48
459
原创 App启动流程
本文主要介绍一个app是如何启动的。 源码:(源码只有一部分,其他的只要把类名google一下就出来了) https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app如图:
2017-04-06 09:59:30
321
原创 dex: 类加载过程
dex:类加载过程 此文主要介绍如何加载一个类。 如图: 备注: 1、除了第一个dex,其他的dex都是以资源的形式加载;2、插件化实现,就是在application初始化前,要将dex文件注入到 系统的classloader中;3、android虚拟机的类加载机制是一个类只会被加载一次;4、类加载器:BaseDexClassloader有两个子类 PathCla
2017-04-05 17:07:24
627
原创 android 动画系列:插值器-Interpolator
参考资料: http://www.lightskystreet.com/categories/Android/Android%E5%8A%A8%E7%94%BB/只为做个记录:代码下载 关键代码:import android.animation.TimeInterpolator;/** * Created by baiyuanwei on 16/12/29. * 动画过程1:0 -> 1;
2016-12-29 18:24:14
676
原创 Android 实现字体颜色渐变(滚动),包括表情:AnimatorSet、LinearGradient
动画效果:可以参考 https://github.com/facebook/shimmer-android思路: 为AnimatorSet添加一个AnimatorListener监听器,当动画结束时,立刻再次启动该动画。监听器:private static class InternalAnimatorSetListener implements Animator.AnimatorListener {
2016-09-06 16:41:24
2642
原创 Android annotations 框架
Gradle配置: Project: build.gradle 只需要在dependencies中加: classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’ 如: buildscript { repositories { jcen
2016-09-05 20:30:31
229
原创 Activity启动过程中获取控件宽高的方式
问题: 为什么在activity的生命周期中获取不到控件的宽高??解答: Activity的启动流程和Activity的布局文件加载绘制流程,其实没有相关的关系的,其实两个异步的加载流程,这样我们在Activity的onCreate和onResume方法调用textView.getHeight或者是textView.getWidth方法的时候,其组件并没有执行完绘制流程,因此此时获取到的组件的宽高都
2016-09-02 17:20:59
1383
原创 android 流布局 FlowLayout
功能一、自定义属性: 1、行数:max_lines_num , 默认无限制; 2、行间距:width_space,默认16dp; 3、列间距:height_space,默认8dp;
2016-09-01 18:05:16
489
原创 android 图片的高斯模糊实现
摘要:问题:我们利用RenderScript来实现图片的高斯模糊时,模糊度只能到25,所以有时候就不能满足我们的需求,模糊度不够。解决思路:我们可以利用图片放大也会导致图片模糊的原理,来提高我们图片的模糊度,如:我们先把图片缩小到原来的1/2,然后利用RenderScript做模糊处理,最后我们再把图片放大2倍,回到原来的大小,这样就可以达到我们想要的模糊度了,如果还不行,你可以把图片缩小到原来的1
2016-08-11 00:18:18
704
原创 android 单元测试中遇到的坑
问题: Robolectric.setupActivity(AddNewPhoneActivity.class);得到的对象居然是空的; 原因:@Config(constants = BuildConfig.class, sdk = 21)中的constants出现了问题,及BuildConfig.class没有匹配对;一般是一个项目中有多个module,在写单元测试时,BuildConfig.
2016-06-10 01:30:04
377
原创 android 倒计时
倒计时利用API中提供的CountDownTimer实现,只需要传入总时间、时间间隔、显示时间的控件view 即可; 使用方法:在需要的地方,调用CountDownTimer.start()方法即可。/** * * 倒计时 * */public class TimeCountDownUtil extends CountDownTimer { private Activity mA
2016-05-04 13:18:14
272
原创 android 有关毫秒转时间的方法,及时间间隔等
毫秒转时间 注意:”HH:mm:ss”是24小时制的,”hh:mm:ss”是12小时制。看代码:/** * Created by baiyuanwei on 16/5/3. * <p/> * "HH:mm:ss"是24小时制的,"hh:mm:ss"是12小时制。 */public class TimeUtil { /** * 从时间(毫秒)中提取出日期 *
2016-05-04 13:01:00
17887
转载 EventBus使用详解1、2两篇
EventBus使用详解(一)——初步使用EventBus: http://blog.youkuaiyun.com/harvic880925/article/details/40660137EventBus使用详解(二)——EventBus使用进阶: http://blog.youkuaiyun.com/harvic880925/article/details/40787203
2016-04-20 15:36:22
349
原创 Android 刻度表的实现
Android 自定义View: 刻度表 如图所示:橘黄色的刻度表是仿照下面暗灰色的刻度表做的参考资料:http://blog.youkuaiyun.com/ttdevs/article/details/38944799思路总结:详情请看参考资料 1、先完成onTouchEvent方法,然后再去完成onDraw方法 2、刻度表中滑动是通过改变绘制的参数,重绘刻度表形成的 3、scrol
2016-04-09 16:23:53
1889
原创 Android 拖放(OnDragListener)
参考资料:http://www.jcodecraeer.com/a/anzhuokaifa/developer/2013/0311/1003.htmldemo 下载,请点我
2016-04-04 21:01:54
832
原创 android: 带很多tab的指示器的ViewPager
参考资料:慕课网的课程-Android-自定义ViewPager指示器1、固定tab数量的带有指示器的viewPager,代码下载请点我2、动态加载tab的带有指示器的viewPager,代码下载请点我学习笔记:fragment传递参数首先在自己的TestFragment中定义一个创建fragment 的方法: public static TestFragment newInstance(Stri
2016-03-17 13:50:58
631
原创 Greendao 使用总结
关于GreenDao的配置:http://itangqi.me/2015/07/26/orm-greendao-summary/在上述配置中的第三步,生成DAO文件时,步骤如下:主菜单->Run -> Run… 然后就会弹出 选择ExampleDaoGenerator运行就ok了。注意:可以用“RE文件管理器“来查看数据库,测试是否创建成功。GreenDao 的基本使用方法1、如何创建表
2016-03-14 23:07:29
2104
原创 自定义View、ViewGroup及ViewPager的动画应用总结
下面提到的所有例子,我都在我的项目里实现好了,需要代码的,请点我。如下图所示: 代码所包含的内容: 1、有关圆的ImageView的实现方法,请点我;2、类似于ViewPager的自定义布局;3、同一方向(垂直)上有双层滚动,且解决了滑动冲突;4、流式布局;5、带动画切换的ViewPager,请点我;6、线条跟着页面切换而平移;
2016-03-09 15:05:29
347
转载 Android BitmapShader 实战 实现圆形、圆角图片
参考资料:http://blog.youkuaiyun.com/lmj623565791/article/details/41967509
2016-03-07 12:39:49
594
原创 简单总结RectF、Rect 和Matrix ,还有Paint的使用方法
1、Rect类和RectF类 参考资料:http://byandby.iteye.com/blog/826230 管方文档:Rect 类: http://developer.android.com/reference/android/graphics/Rect.html RectF类:http://developer.android.com/reference/android/graphi
2016-03-07 12:05:16
8120
原创 Android View 的弹性滑动: Scroller使用说明
我在实现View滑动的方法总结这篇博客中介绍了View滑动的三种方法,没看过的可以先去看一下。这篇文章主要讲解View的弹性滑动,即它滑动时会有一个过程,实现方法包括 Scroller、属性动画、使用延迟策略 这三个方法。实现弹性滑动的思想:将一次大的滑动分成若干次小的滑动,并在一个时间段内完成。具体方法讲解:利用Scroller 实现弹性滑动首先我门要明白getScrollX()、getScro
2016-03-06 18:54:35
2047
原创 Android 滑动冲突的解决方法
一、常见的滑动冲突场景场景1——外部滑动方向和内部滑动方向不一致,如:ViewPager中有多个fragment,而fragment中有ListView,这时ViewPager可以左右滑动,而ListView可以上下滑动,这就造成了滑动冲突。注意:这只是举个例子说明一下场景1,事实上ViewPager内部已经处理了这种滑动冲突,在采用ViewPager时,我们无需关注这个问题。场景2——外部滑动方向
2016-03-03 16:54:40
3714
原创 实现View滑动的方法总结
此博客主要介绍基本View滑动的实现方法,主要方法如下: 1、利用ScrollBy/ScrollTo方法实现; 2、利用动画的方法实现; 3、通过更改View的LayoutParams的属性值来实现。View滑动的重要性:掌握滑动的方法是实现绚丽的自定义控件的基础。一、利用ScrollTo/ScrollBy方法实现View的滑动首先我们要明白View内部的两个属性mScrollX、mScrol
2016-03-02 10:25:09
555
原创 Aandroid 事件分发机制(二):ViewGroup
参考资料:http://blog.youkuaiyun.com/guolin_blog/article/details/9153747官方ViewGroup的树状图: 由图可知,ViewGroup是继承View的,所以它就是一个View。ViewGroup就是一组View的集合,它包含很多子View和子ViewGroup,是android所有布局的父类或间接父类,如LinearLayout、Relativ
2016-02-26 18:14:31
549
原创 Android View的事件分发机制(一):View
参考资料:http://blog.youkuaiyun.com/guolin_blog/article/details/9097463官方View的树状图: View的子类:ImageView、TextView、Button …… 很多解析View的onClick和OnTouch的处理机制以一个可点击的控件为例:button 在Activity中给button注册一个点击事件: button.setOn
2016-02-26 13:20:19
364
原创 RecyclerView 使用总结(三):点击事件、GridView等、瀑布流、动态增删
一、RecyclerView的点击事件实现方法:在适配器Adapter中定义接口,接口中定义两个方法:一个点击事件、一个长按事件。然后在onBindViewHolder中调用,利用view.setOnClickListener()和view.setOnLongClickListener()方法实现。最后在Activity中给适配器设置监听接口的对象就ok了。代码如下,适配器: 监听接口 publi
2016-02-25 22:56:27
1797
原创 RecyclerView 使用总结(二):RecyclerView的下拉刷新、加载更多
一、实现带”下拉刷新”和”加载更多”的仿ListView的RecyclerView1、下拉刷新 方法:利用SwipeRefreshLayout来实现,将RecyclerView放在SwipeRefreshLayout中,然后调用SwipeRefreshLayout.setOnRefreshListener()方法就可以了。 布局: <android.support.v4.widge
2016-02-24 22:47:08
2167
原创 RecyclerView 使用方法总结(一):RecyclerView的基本用法,及实现ListView
参考资源:http://blog.youkuaiyun.com/developer_jiangqq/article/details/49992269?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io一、为什么叫RecyclerView?不关注item是否显示在正确位置,是否显示正确不关注item是如何分割的,即不关注分割线不关注item
2016-02-23 20:53:57
649
原创 常见Android OOM异常
*参考:***1、http://www.jianshu.com/p/c59c199ca9fa 2、http://my.oschina.net/jack1900/blog/293145
2015-12-10 15:00:18
542
原创 okhttp简单的应用
okhttp的git仓库:https://github.com/square/okhttp okhttp的使用方法:https://github.com/square/okhttp/wiki/Recipes(以下所有方法都是同步的,因为okhttp暂时没有提供异步的方法) 一、配置 android studio中,在app下的build.gradle文件中添加:compile ‘
2015-12-04 17:09:35
426
原创 android 加载图片oom异常
一、OOM异常是什么?产生OOM异常的原因 OOM(Out Of Memory--内存不够用了) a、计算图片占用的内存大小: 1、 占用内存 = 图片的长度 * 图片的宽度 * 单位像素占用的字节数; 2、 单位像素占用的字节数是由BitmapF
2015-07-26 16:25:22
959
原创 FragmentStatePagerAdapter第二次加载时不能显示其界面的原因及解决办法
问题描述:一个ViewPager1中有多个Fragment1,在某个Fragment1中又有一个ViewPager2,这个ViewPager2中又有多个Fragment2,但是当再次加载这个Fragment1的时候,Fragment2的界面不会显示出来?问题原因分析:因为Fragment2不会调用onCreateView方法,及在Fragment1中的FragmentStatePage
2015-07-13 23:06:03
1626
自定义的圆环ImageView、ViewPager的动画切换、流式布局
2016-03-08
RecyclerView使用总结
2016-02-25
RecyclerView实现下拉刷新和加载更多
2016-02-24
RecyclerView 下拉刷新 加载更多
2016-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人