- 博客(30)
- 收藏
- 关注
原创 牛顿迭代与二分查找开平方
牛顿迭代不要被牛顿的大名唬住,牛顿迭代其实就是一种求近似解的方法。求解过程就是对曲线做切线,然后在切线与x轴交点,然后在这个点做x轴垂线,垂线到曲线交点继续做切线,一直重复上述步骤。然后切线与曲线交点就会慢慢的趋近于X轴与曲线交点。x轴与曲线交点就是曲线方程的根,但是直线方程的跟比较好计算,计算出最近的直线方程根,约等于曲线的根。大概做曲线切线的过程如下公式推到过程假设曲线f(x)...
2018-03-29 17:38:55
1048
原创 Hello World,使用OpenGL ES绘制一个三角形
1.Android中创建OpenGL ES环境为了使用OpenGL画图,我们首先需要创建OpenGL环境。a.第一步当然要在Manifest中声明一些东西首先要声明下使用的OpenGL ES版本,由于OpenGL ES 2.0支持Android 2.2 (API Level 8)以上版本,兼容版本比较广泛,这里使用 OpenGL ES 2.0<uses-feature...
2018-03-13 10:54:31
705
原创 Android的Html类分析与扩展
Android中的Html类可以把一些html标签转换成Android对应的Spanned,因此我们可以解析服务端返回的Html来显示富文本信息。 有两个核心方法fromHtml把html转为span,另一个方法把span转为html。 public static Spanned fromHtml
2017-11-19 19:42:52
890
原创 搭建ReactNative开源应用f8app环境与踩坑
f8app是facebook官方开发的ReactNative开源APP,github地址https://github.com/fbsamples/f8app,github地址中有详细的搭建步骤,但是坑太多,这里记录下。
2017-06-15 20:21:28
5388
6
原创 SimpleArrayMap源码分析
由于在移动端内存与CPU都是很宝贵的资源。在Android中可以使用SimpleArrayMap来代替HashMap实现Map的功能,SimpleArrayMap内部使用了两个数组,一个是Hash数组mHashes,另一个是2倍大小的Object数组mArray。Object数组中使用key+value间隔存取的方式;另外Hash数组,则是对应的 Key 的Hash值数组,并且这是一个递增的int数组,这样在进行Ke
2017-06-05 20:27:54
1976
原创 Android插件中使用EventBus出现java.lang.IllegalArgumentException: Expected receiver of type xxx, but got xx
使用场景由于所开发的Android项目是个老项目,EventBus使用的还是EventBus2,整个项目是插件化架构,不同插件使用的ClassLoader不同。插件1中有个onEvent方法,用来更新插件1中的一些信息。在插件2中发送一个EventBus消息更新插件1。在插件升级的时候(新老插件ClassLoader不同)偶现下述异常。java.lang.IllegalArgumentExcepti
2017-06-02 18:51:06
13446
原创 Android中NestedScrollingParent嵌套ListView
使用CoordinatorLayout,AppBarLayout,RecyclerView很容易就能完成。由于当前开发的工程由于一些原因不能使用AndroidDesignSupport包。只能自己解决滑动嵌套的问题,这里顺便学习了下NestedScrollingParent,NestedScrollingChild的用法。
2017-04-21 19:46:02
3595
原创 Ubuntu下Android开发环境配置
Ubuntu下配置Android开发环境,jdk,android studio,sdk,git,repo等等
2017-02-04 16:51:06
9507
1
原创 Android中使用AbstractProcessor在编译时生成代码
根据注解生成新的Java类,这也就是EventBus,Retrofit,Dragger等开源库的基本原理。Java API已经提供了扫描源码并解析注解的框架,我们可以继承AbstractProcessor类来提供实现自己的解析注解逻辑。下边我们将学习如何在Android Studio中通过编译时注解生成java文件。
2016-12-29 22:00:28
15368
11
原创 Android中判断子View从ListView中移除
在使用ListView的时候,有一些场景,可能需要在子View中判断是否已经从ListView移出,然后做一些列操作。一般我们在普通的Layout,例如LinearLayou中,会把这些操作写在了子View的onDetachedFromWindow里。但是在使用ListView的是,发现子View这个方法不会调用。接下来一起探究下如何解决这个问题。
2016-12-27 11:37:37
6527
4
原创 Android自定义圆角Span背景
在Android开发中,有时候需要对TextView中文字进行特殊化处理,例如给局部文字设置超链接、颜色、字体,背景色等。文主要讲了怎么自定义圆角背景Span,同时讲述了ReplacementSpan这个高度定式化的Span。
2016-12-06 21:14:58
11724
2
原创 基于Fragment的轻量级Android插件化框架
本文写了一个简单的插件化框架学习的Demo,下载地址https://github.com/pengyuntao/yuntao-plugin本插件使用fragment来构建页面,没有实现service,receiver,provider等的动态加载,这里只是作为学习的例子,当然纯界面应用也可以使用这种架构来分模块开发,动态升级。例子核心类只有PluginInstallUtils,PluginHostActivity
2016-09-01 18:49:24
4594
1
原创 Android面试题目总结
最近刚换了工作,在这里把各互联网公司问到的题目做下总结。涉及的内容都是Android研发应该掌握的基础问题,我把题目大概分为JAVA,设计模式,Android,网络,算法五类。最后边列一下自己看过的技术书籍,希望大家都能提高自己。
2016-06-03 18:30:17
3445
1
原创 常用排序算法总结(Java)
自己平时总结的排序算法,使用JAVA编写,https://github.com/pengyuntao/Sort_Algorithms_Java
2016-05-15 15:58:24
628
原创 字符串搜索算法(二)Sunday算法
Sunday算法是Daniel M.Sunday于1990年提出的一种非常高效的字符串搜索算法。其与其他搜索算法核心思想一样,都是跳过尽可能多的字符。但是Sunday算法更容易理解,算法更简单。Sunday算法的跳跃规则是,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在匹配串中出现则直接跳过,即移动步长= 匹配串长度+1;否则,同BM算法一样其移动步长=匹配串中
2016-04-04 13:03:41
921
原创 字符串搜索算法(一)Boyer-Moore算法
Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。不同于朴素模式(brute-force search)的逐个字符对比,它不需要对被搜索的字符串中的字符进行逐一比较,而会跳过其中某些部分,来提高匹配效率。
2016-04-04 12:52:29
1314
1
原创 Android绘图drawText垂直居中与FontMetrics
自定义了一个MyView控件,重写它的onDraw来绘制一个点,和一串文字。绘制圆的坐标为200,300,绘制文字的坐标也为200,300。最初以为文字也是以中心为基准的,然后绘制之后发现文字并不是垂直居中的,它的中心与圆心并不在一条水平线上。文字会偏上。这里就要说到FontMetrics,绘制文本时,使用FontMetrics对象,计算位置的坐标。文字的基准线为baseLine
2016-03-29 21:01:19
2154
原创 一种TV(Android系统)通用焦点框的实现
在电视的交互设计中,通常需要一个焦点框来指示当前选中了哪个控件,如果每个控件都通过给background设置selector的方式,实现焦点框效果,需要写很多xml文件。所以这里实现一个通用的焦点框,自动跟随焦点的变化,来完成一些通用的焦点框指示作用。
2016-03-23 18:21:15
9313
15
原创 Android的消息机制学习(一)Looper,Handler,MessageQueue
Message,Handler是在Android中最常用的,更新UI点手段。与其他图形界面的原理类似,Android系统中UI也是靠消息驱动来工作的,具体有以下一些概念。消息发送者:发生消息到队列消息队列:存储消息的队列消息循环:不断的循环取出消息,发给处理者消息处理者:处理消息
2016-03-19 22:16:49
1080
原创 解决Error inflating class android.support.v7.widget.RecyclerView
使用RecyclerView的时候出现Error inflating class android.support.v7.widget.RecyclerView错误一般是因为RecyclerView的v7包与其v4或v13包版本不同导致的可以把依赖的v4 v7 v13包版本改成相同的版本号例如compile 'com.android.support:support-v4:23
2016-03-08 16:33:35
4219
原创 Android中使用OrmLite(三):批处理
OrmLite提供了批处理方法,来提高执行效率,同时提供了事物,保证了执行的正确性,执行错误数据库回滚。
2016-03-03 21:58:53
2771
原创 Android中使用OrmLite(二):复杂条件查询
在数据库中经常会使用到复杂的条件查询,来完成业务,下面学习下如何使用OrmLite进行复杂条件查询。
2016-03-03 20:58:56
23368
5
原创 Android中使用OrmLite(一):表创建及增删改查
OrmLite是一个轻量级的ORM框架,面向JAVA语言。也是时下流行的Android的ORM框架之一。在Android中使用Sqlite数据,如果又不想写SQL,OrmLite或许是个不错的选择。在这里学习下如何创建表,及对表的增删改查
2016-02-27 18:18:05
14695
2
原创 彻底解决错误Duplicate files copied in APK xxx/xxx/xxx/LICENSE.txt
出现这个问题的主要原因是,两个工程都依赖了相同的包,回把两个相同的jar都打入最终的apk,会曝出重复copy的错误,使用provided代替compile可解决这个问题
2016-02-26 13:09:19
5272
原创 ListView学习(二)-ListView缓存机制
ListView作为列表,可以显示成百上千个item。如果有多少数据,就创建多少个item,会占用很大内存,但是大多数item并没有显示在屏幕上,造成了内存浪费,所以移除屏幕的view就可以缓存起来,以便下次重用。这里就探究下ListView是如何缓存的。
2016-01-24 23:21:06
2174
原创 使用Android Studio调试Android Framework代码
使用Android Studio调试Android Framework代码阅读源码很枯燥,如果能单步调试岂不是能使逻辑更清晰,更轻松的学习,本文章讲如何使用Android Studio调适Android Framework。
2016-01-20 14:53:42
10366
原创 ListView学习(一)-ListView使用
ListView是android最常用的控件之一,可以实现各种列表:例如通讯录,聊天列表,好友列表等等。这里学习一下如何使用android的ListView
2016-01-03 21:39:11
627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人