- 博客(103)
- 资源 (25)
- 收藏
- 关注
原创 AlertDialog 源码解析一
概要:AlertDialog,平常用的很多,今天走了一遍内部实现,记录一下。解析:一AlertDialog的常用调用: new AlertDialog.Builder(mContext) .setTitle("title") .setMessage("message") .
2017-11-30 11:53:08
434
原创 SparseArray
概要:SparseArray是android.util中提供的类,用于存储整数-Object映射。相对于我们常用的HashMap,它的性能更好:1,避免了自动装箱过程。(java中将基本数据类型自动转化成转载器数据类,拆箱:将装载器数据类型转化成基本数据类型);2,使用二分法对SparseArray的key检索。分析:public class SparseArray i
2017-11-08 16:39:47
418
原创 SharedPreference源码解析
概要: SharedPreference属于轻量级的键值存储方式,以xml文件保存。作为Android存储数据的一个重要的方式,值得透彻分析一下。SharedPreference的获取方式: 首先SharedPreference的获取方式,有两种Activity的getSharedPreference(int mode)与Context的getSharedPr
2017-10-20 16:21:03
469
原创 Android ORMLite框架笔记
一概要:在Android 项目开发中,如果要使用数据库,向大家介绍一个关于数据的开源框架ORMLite。提高我们开发数据的效率,特别是对于数据库使用频繁的项目开发。配置:我们需要去官网下载两个jar(ormlite-android-5.0.jar,ormlite-core-5.0.jar),官网:http://ormlite.com/releases/优点:轻量级;使用简单,易
2017-07-31 17:04:51
323
原创 AndroidStudio 打包apk笔记
一,概要:一个App开发完了之后,我们需要对其进行打包,然后才能发布。Android Studio里面就集成了打包工具,非常方便。下面归纳两种打包的方式:Generate Signed APK(可视化的操作)。Gradle(直接在Gradle中配置好)。二,签名文件,(Android Studio默认生成的是jks文件,就像Eclipse中keystore)1,其实
2017-07-25 18:10:43
509
原创 HTTP协议笔记
一概要:HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是从万维网(WWW:World Wide Web)服务器,传送超文本到本地浏览器的通讯协议。HTTP是基于TCP/IP协议来传送数据的。HTTP是属于应用层的传输协议,由于其简便快捷,快速的方式,适用于分布式超媒体信息系统。二主要特点:1,简单快速:客户端向服务器请求
2017-07-24 12:31:59
337
转载 Glide 简介
一概要:Google在2014的开发者论坛上,向我们介绍了一个开源的图片加载的类库Glide。作者BumpTech(碰撞科技)。这个库被广泛的运用在了Google的开源项目中。能够被Google如此推崇一定有其过人之处。研究一下发现picaso惊人的类似。所以干脆和Picaso做类比讲解。二配置Glide:Glide需要依赖support-v4库。 //使用glide
2017-07-20 17:51:01
1444
原创 AndroidStudio中gradle,buildToolsVersion,complieSdkVersion的关系
一概要:AndroidStudio:是Google官方基于IntelliJ IDEA开发的一个Android 应用开发工具。相对于之前的Eclipse实在是太好用了。Gradle:是AndroidStudio的管理工具,它可以完成Android App的编译、打包等工作。buildToolsVersion:是Android构建工具的版本,其中包括打包工具aapt,dx等。通过SDK
2017-07-20 15:03:08
2140
原创 LeakCanary 使用一
一概要:LeakCanary是GitHub上著名的开源组织Square贡献的一个内存泄漏自动检测工具。优点:自动化发现内存泄漏;配置非常的简单。缺点:配置时集成到低版本的应用会有bug,这时尝试修改版本:compileSdkVersion 21。配置请参考:https://github.com/square/leakcanary#补充一点:内存泄漏往往发生在,生命周期较长的对象
2017-07-12 16:37:48
1762
原创 RxJava 使用详情
一概要:RxJava已经被越来越多的人使用,提及。个人也觉得非常好用,优秀。这里做一个简单的归纳。1,RxJava是什么:GitHub上介绍(翻译):一个在Java VM上使用可观测的序列来组成异步的,基于事件的程序的库。简单点:一个实现异步操作的库。类似Handler,与AsyncTask。2,RxJava优点是什么:相对于Handler/AsyncTask,RxJava使用非常
2017-07-10 15:35:54
330
原创 OkHttp 使用详情二
一概要:OkHttp,作为当下最流行的网络请求方式,是非常方便且高效的。但是如果现在有个需求,上传和下载文件并且在过程中给用户提供友好的界面提示(提示用户下载的进度)。似乎没方法用简单的OkHttp API来实现。网上搜索了一个下,找到一个一些方法。在证明确实可行之后。在此归纳总结出这篇博客。(OkHttp的基本使用,请参考:OkHttp 使用详情一)二实现1,
2017-07-06 18:00:55
476
原创 OkHttp 使用详情一
一概要:Android已经为我们提供了HttpURLConnection 和 Apache Http Client,能够满足我们各种的Http请求需求,当时Android SDK依然为我们默认提供了OkHttp。因为OkHttp相对更高效,更省流量。OkHttp的特点:1,支持SPDY,共享同一个Socket来处理同一个服务器的所有请求。2,如果SPDY不可用,则通过连接池来减
2017-07-05 22:52:07
507
原创 ASimpleCache (ACache)缓存框架
一,概述官方介绍:ASimpleCache是一个为Android定制的轻量级的,开源缓存框架。轻量级到只有一个Java类(由十几个类精简而来)。1,它可以缓存什么对象?普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。2,它有什么特色?(1), 轻,轻到只有一个java类。(2), 可配置,可
2017-06-30 16:04:37
1100
原创 Windows+Git+GitHub
概要:Git分布式代码管理工具,gitHub是只支持git的远程代码库,本文介绍在Windows平台上使用这套代码管理系统。从创建GitHub仓库(repository)到使用git提交代码到github上的远程仓库。
2017-03-22 17:11:10
2705
原创 ImageLoader
ImageLoader,图片加载类。在Android中经常使用到图片加载。所以一个好的图片的加载类对一个优秀的app非常重要。本文中是一个自定义的ImageLoader,
2017-03-21 16:19:54
704
原创 AsyncTask
概要: AsyncTask是一种轻量级的简单异步任务类,它可以在线程池中执行后台任务,然后把执行任务的进度和执行任务的最终结果传递给主线程并在主线程中更新UI。分析:一,简单用法 AsyncTask的重要的方法:1,onPreExecute() 运行在主线程,在doInBackgroud前执行,一般做一些准备工作。2,doInBackground(Str
2017-03-02 13:15:56
395
原创 LiveTemplate
概要: LiveTemplate是非常好用的一个功能,他能极大的提高你编程的效率。通过Ctrl + J快捷键,快速的补全代码。分析: 比如我们最常用的findViewById,每次输入+提示补全,我其实可以做到更高效。就是设置LiveTemplate。一,调出Live Template的设置界面(Settings —— 搜索Live Template
2017-02-26 22:11:54
608
原创 Rotate3dAnimation
概要: Roate3dAnimation 实现了围绕y轴竖直方向 或者绕x轴方向旋转的3d动画效果。这个例子来自Android APIDemo中的一个自定义View动画。他的实现展示自定义View动画的基本步骤。主要是重写initialize方法,applyTransformation方法。分析: 在Roate3dAnimation中,我们使用Android
2017-02-23 15:36:07
2668
原创 Android.graphics.Camera
概要:Camera(相机),但是这里的android.graphics.Camera不同于hardware.Camera。它主要用于2d图像实现3d效果。Camera的一系列,旋转,平移方法。实质上改变的是内部的Matrix变量。最后我们可以通过camera.getMatrix(matrix)方法。获取Matrix的值。之后就可以通过Matrix来改变图像了。分析:
2017-02-21 18:47:35
2487
转载 Android Matrix(变形矩阵)
概要:Matrix(矩阵),这是一个数学的概念。通常的nxm(n行,m列)行列数是不受限制的。但这里主要讲的是3x3矩阵(3行3列)如图:Matrix对图形的变形通常有如下四种形式:Translate 平移变换 Rotate 旋转变换 Scale 缩放变换Skew 错切变换
2017-02-20 17:33:58
1026
原创 AppWidgetProvider的使用
一介绍:AppWidgetProvider 是Android用于生成桌面小部件的类,它继承自BroadCastReceiver.所以它本质上是一个广播接受者,谨记这一点,AppWidgerProvider的很多功能都好理解了。如图:二开发一个桌面小部件的步骤我会根据一个小demo,来记录整个桌面的开发流程,先看一下demo的效果(是一个时钟和文本用来形象的显示时
2017-02-16 16:55:08
6401
原创 Android Notification
概要Notification通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容。比较熟悉的通知有:短信同事,文件下载通知,以及在音乐播放时,在通知栏有播放通知界面可以控制播放的暂停播放。有几点特性:通知是运行在system server进程中的,由NotificationManagerService管理。Notificat
2017-02-14 13:08:48
268
原创 Eclipse项目转Android Studio项目
概要: Google为了方便我们使用Android Studio,提供了两种导入Eclipse代码的模式:一、兼容Eclipse模式,二、生成全新的Android Gradle Project。我们先看兼容模式。
2017-02-06 15:55:52
375
原创 Android SVG动画
Android 5.X SVG矢量动画机制概要Google在Android 5.X中增加了对SVG矢量图形的支持,首先大概了解一下SVG。可伸缩的矢量图形(Scalable Vector Graphics)使用XML格式定义图形图像放大或改变尺寸的情况下其图形质量不会有损失万维网联盟标准总的来说SVG是一个绘图标准。与Bitmap对比,SVG最大的优点就是放大不会失真。< path >标签
2017-01-04 18:04:19
1629
转载 Android proguard 使用
转载:ProGuard详解 - 李江东 综述 对于proguard工具相信大家都不陌生,它通过移除无用代码,使用简短无意义的称号来重新命名类、方法、字段的 方法,从而达到压缩,优化和混淆代码的目的。最终我们会得到一个较小的apk文件。并且通过proguard工具处理过的 apk文件更难进行逆向工程。ProGuard工作原理简介 ProGuard能够对Java类中的代码进行压缩
2016-12-29 11:23:04
362
原创 Android apk 反编译
通过反编译第三方apk,学习和借鉴他人代码是学习Android的一个重要途径之一。下面是我对。 测试环境:windows。 使用工具:
2016-12-28 17:41:20
364
原创 Android 从头开始
今天特别的倒霉,笔记本的硬盘坏了。我勒个去,好多东西都没备份!(以后一定要养成定时备份的习)。所以一切从零开始1,安装JDK。进入Oracle官网(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载,雨自己系统相匹配的jdk。下载完后点击安装(默认设置就好,一路
2016-11-02 17:35:10
435
原创 Java爬虫技术
Jsoup解析html方法,通常被人称之为爬虫技术。(个人认为可能是返回的数据,只有一小部分是我们需要的,造成了数据的冗余,和网络延迟)。1,下载Jsoup架包,小编在网上找了一个资源下载jsoup架包。(添加到libs后,add to path,其中jsoup-1.9.2-sources.jar的作用是,当我们需要查看源码的时候,指定到这个包就可以了)2,Jsoup的应用
2016-10-21 16:56:35
3427
原创 Android 沉浸式状态栏
沉浸式状态的应用,是android4.4加入的功能实现。先看看应用的实例(状态栏的颜色改变了,整个界面和谐了): 实现方法有三种:1,系统实现在代码中进行设置:public class TopBarActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanc
2016-10-20 18:13:15
392
原创 正则表达式
正则表达式:描述一种字符串的匹配模式,可以检查一个串中是否含有某种子串,可以将匹配子串做替换或提取串中符合某种条件的子串。(正则表达式并不仅限于某种语言,但是每种语言中有细微的差别)用途:正则表达式可以数据验证,替换文本,提取字符串。基本语法:
2016-09-30 15:23:22
290
原创 Thread,Runnable,Callable,Feature的之间的关系
A 调度执行线程单元的三种形式Thread,Runnable实现run()方法,Callable实现 T call()有返回值。B Runnable,可以被Thread包装,启动线程执行,也能被ExecutorService调度;Callable只能用ExecutorService作为调度容器。C Future 主要用于查看任务进行的状态(isDone()任务是否完成),结果。
2016-09-21 16:31:14
1696
原创 Android export jar file和代码混淆。
今天我要将的不是打包apk,而是一个项目打包成第三方jar,供别人使用。例如,这样一个项目:(本身也引用了第三的jar),怎样打包成一个简单的jar呢。先给大家介绍一个eclipse的插件,net.sf.fjep.fatjar_0.0.31.jar, fatjar插件解压net.sf.fjep.fatjar_0.0.31.zip后将plugins目录下的net.sf
2016-07-15 17:11:51
646
原创 Android实现滑动的7种方法
在Android4.x之后,滑动操作大量的出现在Android系统中,滑动的操作方式具有更好的用户体验。所以本章会对Android中实现滑动效果的方式做一个小归纳。 在介绍滑动方法前,先讲一下Android的坐标系,Android的坐标系分为两种。 1,Android坐标, 以屏幕的左上角为坐标0点,0点向右为X轴正方向,0点向下为Y轴的正方向。在触摸事件中eve
2016-06-02 15:36:42
3824
原创 自定义控件的归纳
Android类库为我们提供了非常丰富的控件来美化我们的UI界面。也提供了非常方式的拓展方法让我们设计自己风格的控件(自定义控件)。 要想自定义控件首先要先熟悉几个方法:1,onFinishInflate(),从xml文件中加载组件后回调。2,onSizeChange(),组件大小改变时回调。3,onMeasure(),回调该方法会组件的大小进行测量。4,onLayou
2016-05-30 14:52:40
405
原创 Android跨进程通讯的几种方式
Android系统的每个应用都是运行在一个单独的虚拟机中(不同的进程)。因此不同的app间不能直接通讯,但是可以间接进行通讯。今天我要介绍的四种跨进程通讯方式就是四种间接通讯方式。这四种跨进程通讯的方式,分别对应Android的四大组件:Activity,ContentProvider,Broadcast,Service。Activity可以跨进程启动其他应用的Activity,Conte
2016-03-30 19:03:03
3336
原创 android apk更新
一,检测是否需要更新1-1,检查当前的网络状态1-2,获取当前版本信息1-3,检测是否具有新版本,用户选择是否跟新二,下载最新apk2-1,下载最新版本的apk三,启动更新3-1,启动更新1-1,检查当前的网络状态: /** * 获取网络类型 * * @param context Context * @r
2016-03-29 17:01:46
419
原创 清除ViewPager+FragmentPagerAdapter的缓存
当ViewPager+FragmentPagerAdapter时,当系统配置发生改变时。我们Activity需要重新创建,但是FragmentPagerAdapter的缓存机制会影响我们重新加载数据。只需在activity的onCreate加上: @Override protected void onCreate(Bundle savedInstanceState) {
2016-03-15 17:07:05
6353
原创 自定义Camera
实现的功能是,第三方调用系统相册,可以选择进入此自定界面。可以预览图片。并且返回图片存储路径(第三方可以根据filePath获得图片并展示)布局文件:<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
2015-12-23 19:17:57
449
原创 Widget基础用法
这边只是一个简单的时钟提示Widget。分五个步骤:1,编写Widget的UI布局2,设定Widget的配置信息3,实现AppWidgetProvider4,创建Service5,配置清单文件。1,编写Widget的UI布局,只是RelativeLayout中添加一个TextView。Widget布局支持FrameLayout,LinearLayout,Rela
2015-12-22 17:02:36
439
Demo_ColorChange
2015-05-12
Demo_slidingMenu
2015-04-27
仿微信界面实现
2015-04-27
自定义view(视频音量调控)
2014-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人