- 博客(90)
- 资源 (18)
- 收藏
- 关注
原创 认识ProtoBuf
Protocol buffers 是google开发的一种数据描述语言,类似于 XML 能够将结构化数据序列化,可用于数据存储、通信协议等方面。相比于现在流行的 XML 以及 JSON 格式存储数据,通过 Protocol Buffers 来定义的文件体积更小,解析速度更快 ...
2022-08-12 18:09:41
492
原创 浅谈贝塞尔曲线
浅谈贝塞尔曲线前段时间做了一个手写板功能的东西,其中手写部分用二次贝塞尔曲线完成,今天就来总结一下贝塞尔曲线在Android中的应用,先简单介绍各阶贝塞尔曲线的原理,然后实现通过贝塞尔曲线实现波浪线功能,感兴趣的同学继续看下去吧!概念在数学的数值分析领域中,贝塞尔曲线(英语:Bézier curve,亦作“贝塞尔”)是计算机图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝兹曲面...
2019-08-05 22:20:02
3821
原创 Kotlin 初体验
Kotlin 初体验Kotlin也是基于JVM设计的编程语言,相对Java来说,Kotlin在编写代码时有如下优势:代码简洁高效、函数式编程、空指针安全、支持lambda表达式、流式API等。kotlin配置在android studio 3.0以前需要下载kotlin插件 新建一个项目,新建完成后,点击code —> convert java file to kotlin...
2018-03-18 14:25:18
912
1
原创 dva 框架介绍
dva 是基于 redux 最佳实践 实现的 framework,简化使用 redux 和 redux-saga 时很多繁杂的操作 数据流向数据的改变发生通常是通过用户交互行为或者浏览器行为(如路由跳转等)触发的,当此类行为会改变数据的时候可以通过 dispatch 发起一个 action,如果是同步行为会直接通过 Reducers 改变 State ,如果是异步行为(副作用)会先触发...
2018-02-28 23:00:32
18424
原创 android 单元测试
单元测试的重要的和必要性这里不在强调,本文介绍几个常用的单元测试的框架JUnit4JUnit4是一个java的单元测试框架,多数Java的开发环境都已经集成了JUnit作为单元测试的工具,android studio默认继承了JUNit4testImplementation 'junit:junit:4.12'JUnit4主要是通过注解的方式来识别测试方法,下面介绍几个常用
2018-02-05 10:54:59
848
翻译 Fragment Transactions & Activity State Loss
原文链接StackOverflow的一个问题:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1341)
2016-08-10 11:28:09
2604
1
原创 Android自定义控件:如何使view动起来?
本文发表于优快云《程序员》杂志2016年8月期,未经允许不得转载!摘要Android中的很多控件都有滑动功能,但是很多时候原生控件满足不了需求时,就需要自定义控件,那么如何能让控件滑动起来呢?本文主要总结几种可以使控件滑动起来的方法实现其实能让view动起来的方法,要么就是view本身具备滑动功能,像listview那样可以上下滑动;要么就是布局实现滑动功能,像ScrollView那样使内测的子v
2016-08-07 17:39:11
3956
3
原创 DrawerLayout 源码分析
简介DrawerLayout充当窗口内容的顶层容器,允许”抽屉”式的控件可以从窗口的一边或者两边垂直边缘拉出使用抽屉的位置或者布局可以通过android:layout_gravity子view的属性控制从那边拉出,left/start代表从左边拉出,right/end代表从右侧拉出,需要注意的是只能有一个抽屉控件从窗口的垂直边缘,如果布局中每个垂直窗口有多于一个抽屉控件,将会抛出异常根布局使用Dra
2016-07-17 23:31:49
10804
原创 在已有的项目中引入react native
如果新建一个react native项目,在Android中写native的话是很容易的,一般情况下项目已经存在,如何在已经存在的app中引入react native呢?Prepare your app首先在你的app中的build.gradle引入react native的jar包compile "com.facebook.react:react-native:+"在项目的build.gradle
2016-07-05 14:32:05
4481
1
翻译 React Native 中 component 生命周期
React Native中的component跟Android中的activity,fragment等一样,存在生命周期,下面先给出component的生命周期图getDefaultPropsobject getDefaultProps()执行过一次后,被创建的类会有缓存,映射的值会存在this.props,前提是这个prop不是父组件指定的 这个方法在对象被创建之前执行,因此不能在方法内调用th
2016-07-03 03:48:00
77203
2
原创 TextureView 使用
简介TextureView可以用于展示内容流. 例如像视频或者OpenGL场景的内容流. 内容流可以来自本应用程序以及其他进程TextureView只能应用于开启硬件加速的窗口不像SurfaceView那样,TextureView不会创建一个单独的窗口但是可以作为一个普通的View. 不同的是TextureView可以移动,平移,动画等. 例如,通过调用myView.setAlpha(0.5f)将T
2016-06-16 12:22:35
7528
原创 设计模式之单例
设计模式之单例单例模式:确保一个类只有一个实例并提供一个对它的全局访问指针什么是线程安全?如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作,或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不
2016-06-05 21:40:12
3791
原创 初识React Native
初始React Native简介Facebook 在 React.js Conf 2015 大会上推出了基于 JavaScript 的开源框架 React NativeReact Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替
2016-06-03 18:41:49
2340
1
原创 android LRUCache源码分析
LRU(Least Recently Used)最近最少使用算法原理缓存保存了一个强引用(Android 2.3开始,垃圾回收器更倾向于回收弱引用和软引用,软引用和弱引用变得不可靠,Android 3.0中,图片的数据会存储在本地的内存当中,因而无法用一种可预见的方式将其释放)限制值的数量. 每当值被访问的时候,它会被移动到队列的头部. 当缓存已满的时候加入新的值时,队列中最后的值会出队,可能被回收
2016-05-23 17:25:16
2854
原创 android LRUCache解析
android LRUCache解析LRU(Least Recently Used)最近最少使用算法原理缓存保存了一个强引用限制值的数量. 每当值被访问的时候,它会被移动到队列的头部. 当缓存已满的时候加入新的值时,队列中最后的值会出队,可能被回收LRUCache内部维护主要是通过LinkedHashMap实现这是一个安全的线程,多线程缓存通过同步实现 使用默认情况下,缓存的大小是由值的数量决定,重
2016-05-23 00:42:26
4442
翻译 Bitmap API
1.简介Bitmap是Android系统中的图像处理的最重要类之一,通过bitmap可以获得图片的基本信息,以及对图片进行一系列的操作2.APIpublic boolean compress(CompressFormat format, int quality, OutputStream stream)把位图的压缩信息写入到指定的输出流.如果返回true,位图可以通过适当的输入流重建到BitmapF
2016-05-09 00:58:22
6269
原创 Android中的RxJava,Retrofit,MVP的使用
RxJava,Retrofit,MVP都是近几年讨论的比较热门的话题,我们也来凑个热闹!本博不展开讨论,分别讨论的文章有很多,后续有时间给出RxJava,Retrofit的源码分析先来说一下MVP(Model View Presenter)熟悉MVC结构的应该很容易理解MVP,这里先给出MVP的图解model具体业务逻辑处理的实现view负责显示数据、提供友好界面跟用户交互presenter负
2016-04-25 01:03:51
3730
原创 Android 5.0状态栏和导航栏
Material Design推出之后,app中也开始沿用这种风格今天来说一下状态栏颜色设置,在4.4的时候推出了透明状态栏和导航栏,在不使用第三方库的情况下,4.4还是没有完全解决存在actionbar的问题,于是乎,5.0推出了比较给力的方式使用方式很简单了,并且官方也给出了文档,先给出一张图片,方便大家了解其中的属性大家可以根据以上图片设置自己想要的引入v7包不引入v7包引入v7包的话,
2016-04-10 22:46:24
2707
原创 浅谈handler
今天就来谈一下面试中经常被问及的handlerhandler是什么?handler是Android提供用来更新UI的一套消息机制,也是一套消息处理的机制(发送和处理消息)handler原理handler负责消息发送,looper负责接收handler发送过来的消息,并把消息发送给handler,messageQueue存储消息的容器这里先说明一下ThreadLocal,主要在线程中保存变量信息,主要
2016-03-08 22:06:14
3959
4
原创 Android 之 图片压缩
在上一篇文章中(Android之图片变换)主要说明了bitmap的使用,当然其中也包括一点图片压缩的内容,但是没有详细描述,这篇文章就来阐述一下平时Android使用的图片压缩技术从图片的压缩方式区分:质量压缩和尺寸压缩。质量压缩是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的,经过它压缩的图片文件大小会有改变,但是导入成bitmap后占得内存是不变的。因为要保持像素不变,所以它就
2016-02-27 17:24:48
2826
原创 Android 之 图片变换
说到图片,第一反映就是bitmap,那就先来认识一下bitmapBitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。这必然是 某个辅助类提供了创建Bitmap的接口,而这个类
2016-01-26 16:02:13
2930
3
原创 JS与Native交互
实现JS和Native有两种方式:shouldOverrideUrlLoading(WebView view, String url)js与java互相调用先来说一下第一种方式shouldOverrideUrlLoading(WebView view, String url)通过给WebView加一个事件监听对象(WebViewClient)并重写shouldOverrideUrlLoadin
2016-01-15 10:44:21
9663
2
原创 android 之 Camera
由于我刚入职现在的这家公司的时候,他们对涉及到图片的比较多,所以打算写一系列图片的文章,首先就从制造图片的地方开始写起–Camera如果你的app里面只是需要拍一张照片,只需要调用系统的照相机就可以满足你的需求了通过ACTION_IMAGE_CAPTURE调用系统的照相机intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);然后在通过startActiv
2015-12-28 10:16:57
3305
7
原创 Android 悬浮窗
iPhone有个很好用的白色圆点,今天就来研究下Android中的悬浮框,这里主要是实现一个快捷键的功能,当然也可以在悬浮框中做想做的事!悬浮窗的实现主要是通过WindowManager实现,当然WindowManager只是一个接口,想了解源码的同志们可以去看WindowManagerImpl,悬浮框主要是通过WindowManager中的addView,updateView,removeView
2015-12-20 22:09:27
5049
原创 android AndFix--热补丁框架
我正在参加优快云的博客之星票选,如果你也喜欢我的文章的话,帮忙投我一票今天给大家带来阿里巴巴推出的AndFix框架首次给出大家这个框架的地址:https://github.com/alibaba/AndFix 对源码比较感兴趣的同学们可以自行研究代码AndFix介绍AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支
2015-12-14 16:42:23
7132
5
原创 Android activity任务栈
好久没写博客了,脑子都秀逗了,最近比较忙,整天睡不醒,还有私信我继续更新即时通讯的同伴们,近期可能没戏,但是我承诺的一定完成!任务栈,从它的名字我们就知道它有栈的特点『先进后出』,默认情况下activity的任务栈的名字就是你app的包名,当然,你也可以单独的为你的activity指定任务栈,通过修改TaskAffinity属性,当然不要指定成包名啦,否则跟没指定一样。任务栈分为前台任务栈和后台任务
2015-12-07 10:18:32
5522
1
原创 Android Theme and style
每家公司的app都有自己的统一的特色,这就涉及到theme和style,当然他们只不是仅仅为了这个特点存在,想activity的进入动画等都能通过theme和style实现,简单并且减少了代码数,熟练使用theme and style也能做出很炫的效果。what is theme ?主题是对整个应用中所有的Activity都起作用,或者对指定的Activity起作用 定义格式通常是改变
2015-11-15 20:49:59
3450
1
原创 Android 性能优化
上周四参加了MDCC大会的 Android,我比较关注的5R,做一个安静的app,图片缓存以及React Native For Android,其中很大一部分的内容都是讲的性能优化,后续还会给大家带来一篇React Native ,下面就来总结一下Android性能优化方面的内容!人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用
2015-10-19 18:02:39
6328
11
原创 简述fragment(上)
Fragment是在Android 3.0 以后引入的,如果你想在3.0以前使用那就只能引入v4包了,它很好的解决了Android的碎片问题,尤其是在平板上更能显示出Fragment的优势.Fragment既然这么好,如何加载呢?一种方法可以直接使用fragment布局,静态加载,另一种动态加载,在我们的应用中很少用到Fragment的静态加载方法,所以我们这里只讨论Fragment的动态加载.
2015-09-28 09:46:56
3907
5
原创 android事件分发(二)
很早之前写过一篇android事件分发的博客,主要写的是它是如何分发的,具体很多原理的东西都没有涉及到,今天就从源码看android如何控制它的分发机制。 鉴于手机屏幕的限制,所以android选择了分层的方式布局,这就引出了今天的主题--事件分发
2015-08-31 11:40:00
3825
5
原创 Android自定义控件之乱涂
随着Android的不断壮大,你想要的很多控件在github上基本都能找到,对于爱折腾的我来说,闲暇之余更喜欢自己倒腾,之前博客有提到想研究图片这一块,今天就来折腾一下编辑图片.先来实现在一张图片上坐标注,也就是说我可以在一张图片上乱画 在一张图片上乱花,首先要有一张图片,然后要有只画笔实现乱花 先把图片放上:public class DrawPicture extends View{ p
2015-08-14 19:09:38
3239
6
原创 LeakCanary:简单粗暴的内存泄漏检测工具
几乎每个程序员在开发的过程中都会遇到内存泄漏,那么我们如何检测到app是否哪里出现内存泄漏呢?square公司推出了一款简单粗暴的检测内存泄漏的工具-- LeakCanary什么是内存泄漏? 内存泄漏是指由于疏忽或者错误造成程序未能释放已经不再使用的内存,内存泄漏不是指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误失去了对于这段内存的控制,因而造成内存的浪费。
2015-08-07 15:47:05
7935
7
原创 android继续探索Fresco
我们接着上文继续说,上篇博客中我们已经知道了Fresco怎么用,也知道了它的很多属性,但是很多时候xml文件是不能满足你的要求的,这就需要你在代码中动态的改变显示的内容,今天我们就来探索一下如何在代码中改变图片实现的状态和内容 前面我们已经使用过SimpleDraweeView这个控件了,显示图片的时候直接写了一个setImageURI(uri),Fresco不仅仅提供了这一个方法
2015-08-05 09:44:00
5151
4
原创 android 初识Fresco
Fresco是facebook推出的一款强大的图片加载的框架,这个框架出来一段时间了,前一段时间使用过了ImageLoader的框架,生命在于折腾,今天就来折腾一下Fresco这个强大的框架 1.配置环境 由于我用的是android studio所以这里就只是说一下android studio下如何配置,在强大的gradle,只需要一句话搞定,gradle会帮你下
2015-07-27 09:32:25
6051
9
原创 android XXXActivity和getApplicationContext()区别
从接触android起,到处都能看到context(上下文)的身影,查看源码之后你会发现,它只是个抽象类,具体实现都在ContextWrapper实现。当你去查看android的源码时,你会发现activity,service和application都继承自ContextWrapper,也就是说它们都是context的子类,那我们应该如何给context的赋值呢?很多时候在acitivit
2015-07-21 10:04:21
3694
1
原创 android 开源框架Universal-Image-Loader解析
最近要在公司分享东西,很多项目中用到Universal-Image-Loader这个开源框架,没有太多的进程调度,没有各种内存读取控制机制、没有各种异常处理,一起学习一下1.UIL原理a.UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap。b.内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据。否则执行c。c.硬盘存储:使用唯一Ke
2015-06-27 16:21:47
2866
原创 Android之即时通讯(一)----环境搭建
最近脑子比较乱,还是静下来弄点东西心里比较踏实.在上一家公司也有接触过即时通讯,是用xmpp协议实现的,然后使用openfire服务器,拿来直接用,今天来研究一下环信实现即时通讯1.注册环信开发者账号并创建应用在环信官网上点击注册,跳转到环信管理后台注册页面,如下图:在注册页面中填写详细资料,如下图:企业ID,只限于数字,字母,横线,且不能以横线开头
2015-05-11 11:01:21
3144
4
原创 手把手教你配置Android studio
也许你以前用的是eclipse,现在as都出了这么长时间了,作为一个猿不能停滞不前啊,今天就直接用eclipse里面的东西来装as,follow me1.先从http://www.androiddevtools.cn/下载你要安装的as,这里我用的是1.2,你想用哪一个随意,最好用新的2.在bin下双击stdio,当然我的系统是64的,就需要点击stdio643.如果你的翻墙,
2015-04-23 15:54:01
2494
2
原创 Android横竖屏切换的生命周期
现在的手机默认情况下可以横竖屏切换,但是横竖屏切换的生命周期是怎么样的,今天就来说明一下,以防你开发的app横竖屏时game over1.在不做任何配置的情况下,加载一个activity的打印日志:切换屏幕时方向的打印日志:ps:我这里没出现什么横屏切换竖屏时执行两次oncreate,个人觉得不对2.配置android:configChanges="keyboard
2015-04-22 13:57:56
2465
1
原创 Android 获得手机屏幕大小
Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码/** * */package com.example.customview;import android.content.Context;import android.util.DisplayMetrics;import android.view.Win
2015-04-16 17:48:03
2566
2
ContentProvider实现数据共享
2015-03-04
Android控件IP地址输入
2015-01-06
实现类股票列表联动
2014-12-25
Android仿网易客户端实现抽屉式拖拉菜单界面
2014-12-19
上拉加载更多
2014-11-27
Drawerlayout实现仿网易客户端抽屉
2014-11-25
使用Gallery显示图片文字左右滑动并放大
2014-11-21
ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
2014-11-18
实现界面导航
2014-11-17
FragmentTabHost和viewPager实现仿微信主界面
2014-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人