自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 JAVA虚拟机 类加载机制理解

前些时间坐车无聊翻手机的时候,无意中看到一篇之前别人写的关于分析JVM类加载机制的文章。其中作者列举了一段很有意思的代码,当时大概看了一下之后,也是很有兴趣的推测了一下运行结果,但其实过程中已经发现一些疑问,所以本身对结果就比较没把握。后来有空也是敲了一遍代码,发现果不其然真实的运行结果与自己想象的结果并不相同,囧~~ 周末大概回忆了一下,大概就是类似下面这样的代码逻辑:

2017-08-11 09:36:38 1184 1

原创 理解Android图像处理-拍照、单/多图选择器及图像优化

如以上DEMO截图所示效果,我们对于这种类似的功能肯定不算陌生,因为这可以说是实际开发中一类非常常见的功能需求了。而关于它们的实现,其实主要涉及到的知识面应该就是 Android当中的图像处理了。简单来说就比如:图像获取(例如常见的设置头像(获取单张图片);发布动态/朋友圈(获取多张图片))、图像显示以及图像优化等等。所以理解和掌握关于这方面的原理和相关技术、手段等肯定对我们是非常有帮助的。所以在这

2017-07-31 15:56:08 1729

原创 再看Java泛型

泛型对于稍有经验的Java使用者来说应该都不陌生,总的来说应该也算不上特别深奥的东西。但最近发现,如果不把关于它的很多细节和使用思路整理清晰,有的时候还真容易猛地一下犯糊涂。或者说想象一下,如果面试的时候涉及到相关的知识点,是否虽然你平时也经常都在使用它,却真不一定能条理清晰的讲清楚一二三。故特此整理,希望自己尽量能由浅入深 逐步递进的重新回顾关于泛型的一些细节 以及理清其关于其各种使用形式的关系和

2017-07-05 10:19:42 2297 3

原创 深入一点 让细节帮你和Fragment更熟络

有一段时间没有写博客了,作为2017年的第一篇,初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题: “假设,想要对一个Fragment每次在隐藏/显示之间做状态切换时进行监听, 从而在这个时候去完成一些操作,应该怎么去实现呢?” 相信大家听到这类问题第一反应都会觉得是很容易的。而又经过一番讨论过后,发现他的问题场景相对来说比较特殊一点的是: 其想要监听的Fragment是嵌

2017-03-08 09:23:40 1993 1

原创 自个儿写Android的下拉刷新/上拉加载控件 (续)

本文算是对之前的一篇博文《自个儿写Android的下拉刷新/上拉加载控件》的续章,如果有兴趣了解更多的朋友可以先看一看之前的这篇博客。事实上之所以会有之前的那篇博文的出现,是起因于前段时间自己在写一个练手的App时很快就遇到这种需求。其实我们可以发现类似这样下拉刷新、上拉加载的功能正在变得越来越普遍,可以说如今基本上绝大多数的应用里面都会使用到。当然,随着Android的发展,已经有不少现成的可以实

2016-11-04 10:45:38 3364

原创 一点点有助于巧用RecyclerView的小技巧

在RecyclerView问世之前,ListView可能是我们使用频率最高的系统控件之一了。而随着Android的发展,虽然ListView依旧重要,但确实越来越多的时候大家都开始选择使用RecyclerView了。当然这也是事物发展的必然,个人觉得最重要的原因就是RecyclerView相对来说,确实灵活性更高。但是显然并不能说RecyclerView就优于ListView,二者各有优劣,我们应该

2016-10-26 09:24:34 1330 2

原创 自个儿写Android的下拉刷新/上拉加载控件

前段时间自己写了一个能够“通用”的,支持下拉刷新和上拉加载的自定义控件。可能现如今这已经不新鲜了,但有兴趣的朋友还是可以一起来看看的。与通常的View配合使用(比如ImageView)与ListView配合使用与RecyclerView配合使用与SrcollView配合使用局部刷新(但想必这种需要实际应该还是不多的….)好啦,效果大概就是这样。如果您看后觉得有一点兴趣。那么,以下是相关的信息:

2016-09-27 16:58:26 8236 18

原创 用Canvas和属性动画造一只萌蠢的“小鬼”

最近没事的时候想自己写一个支持下拉刷新,上拉加载的自定义View。写着写着,就觉得最常见的“一个圈转啊转”的进度条太普通了。 于是,就想看看有没有更有趣的一点的加载效果。在GitHub上以”android loading”为关键字一搜索,就发现有作者开源了这么一个库:库的地址是:https://github.com/ldoublem/LoadingView。里面提供了很多有趣的加载动画(非常棒),

2016-09-18 18:37:59 5399 1

原创 动手写一个Android数据加载时界面状态切换的开源库

文章伊始,让我们先静心回忆三秒:在我们写过的Android应用当中,是不是有很多地方都离不开数据加载的需求呢?如果是,那么我们首先来看下图:好的,从这里开始我们暂时忘记自己是一个安卓开发者,而是以一个不懂技术的APP使用者的身份来继续接下来的交流。如果是作为一个使用者,那么现在我们的内心应该是懵逼的。因为自打我们打开这个应用进入到第一个界面后,就发现没有任何内容。 这个时我们可能会开始推测:什么鬼

2016-09-09 19:12:01 8562 1

原创 带着疑惑走进Dagger2

Dagger2是一款最初由Square公司研发,后交由Google进行维护管理的依赖注入(Dependency Injection DI)框架。 我想之所以其越来越受欢迎,一是其自身的优异。二是当我们了解了对它的使用之后,就会发现它和Android现在盛行的MVP架构可以说是天生一对。 于是当我们看到越来越多的地方开始提及Dagger2这个东西,难免自己就会想要去尝试一下。那么,当我们看着一大堆

2016-09-02 19:33:45 2484 3

原创 Android网络请求库 - Say hello to retrofit

回顾: Android网络请求库 - Say hello to OkHttp Android网络请求库 - Say hello to Volley 之前对Android里常用的网络请求库OkHttp与Volley做了简单的学习归纳与总结,这里看这个系列中的最后一篇,来认识一下Retrofit。 Retrofit可以认为是OkHttp的“升级版”。之所以这么说,是因为其内部默认正

2016-08-30 18:52:42 9191 28

原创 Android网络请求库 - Say hello to Volley

书接上篇 《Android网络请求库 - Say hello to OkHttp》,今天接着来简单的看一下常用的网络请求库中的第二种库:Volley。 Volley是谷歌2013年在I/O大会期间推出的网络库。开发Volley是因为在Android SDK中缺乏一个用户体验良好的网络加载类。 Volley自身的特点在于:适合去进行数据量不大,但通信频繁的网络操作;而对于大数据量的网络操

2016-08-27 10:12:45 3748 1

原创 Android网络请求库 - Say hello to OkHttp

引言 网络请求是Android开发中必不可少的一块,通常我们可以用原生的HttpUrlConnection或者Apache封装的HttpClient来完成网络请求的实现。 如今来说,HttpClient在API23问世后也被废弃了。也就是说Google现在更推荐我们使用HttpUrlConnection来实现Http网络请求。 但以Http请求来说,大多数时候都是遵循一定的套

2016-08-19 18:24:17 5037 2

原创 自己动手写一个轻量级的Android网络请求框架

最近有空在看《App研发录》一书,良心之作。书中第一部分第二章节讲了不少关于网络底层封装的知识,看后觉得学到了不少干货。 索性自己也动手完成了一个非常轻量级的网络请求框架,从该书中获得了不少帮助。特此记录,回顾一下思路,整理收获。OK,一起来看。就如书中所言,通常我们可以通过AsyncTask来进行网络请求的处理。而不少网络请求框架的底层也正是基于AsyncTask来进行封装的。 显然Async

2016-08-05 16:19:42 6490 1

原创 从源码一次彻底理解Android的消息机制

情景重现 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { Thread.sleep(5 * 1000);

2016-07-26 17:59:37 4422 3

原创 一步步理解Android事件分发机制

回想一下,通常在Android开发中,我们最常接触到的是什么东西?显然除了Activity以外,就是各种形形色色的控件(即View)了。 与此同时,一个App诞生的起因,终究是根据不同需求完成与用户的各种交互。而所谓的交互,本质就是友好的响应用户的各种操作行为。 所以说,有很多时候,一个控件(View)出现在屏幕当中,通常不会是仅仅为了摆设,而是还要能够负责响应用户的操作。 以最基本的例子而言

2016-07-21 18:57:36 4255 4

原创 Java并发编程 - 逐级深入 看线程的中断

最近有足够的空闲时间 去东看看西看看,突然留意到在Java的并发编程中,有关线程中断的,以前初学时一直没弄清楚的一些小东西。 于是,刚好把收获简单的总结一下,通过此文来总结记录下来。从源码看线程的状态在开始分析线程的中断工作之前,我们肯定要先留意一个点,那就是肯定是有开启,才会有与之对应的中断工作出现。 开启一个线程的工作,相信每个Javaer都烂熟于心。它很简单,new一个thread对象,然

2016-07-19 10:16:24 2355

原创 Java断点续传实现原理很简单

原理解析在开发当中,“断点续传”这种功能很实用和常见,听上去也是比较有“逼格”的感觉。所以通常我们都有兴趣去研究研究这种功能是如何实现的? 以Java来说,网络上也能找到不少关于实现类似功能的资料。但是呢,大多数都是举个Demo然后贴出源码,真正对其实现原理有详细的说明很少。 于是我们在最初接触的时候,很可能就是直接Crtl + C/V代码,然后捣鼓捣鼓,然而最终也能把效果弄出来。但初学时这

2016-07-16 12:59:13 26863 19

原创 由浅入深 细细体会Android的视图滚动

其实对于接触过Android开发的人来说,视图的滑动并不陌生,因为这一功能特性可以说是随处可见。 常用的就例如ScrollView、HorizontalScrollView、ListView,还有熟悉的ViewPager等控件,就都支持这一特性。之所以这一类的控件在Android系统中如此受欢迎,其实也不难想象,最显而易见的: 手机的屏幕(可视区域)是十分有限的,那么如何在有限的区域内提供给用户

2016-07-12 19:32:53 4524 2

原创 从源码切入 透彻理解Android的weight属性

最近在看一本古董书《50 Android Hacks》,而书中开篇的第一个Hack就是”使用weight属性实现视图的居中现实“。事实上weight是一个使用简单,但却又十分强大的属性。但关于其的实现原理和使用细节我们却不一定真正深入的进行过理解。 今天我们就来由浅入深,从源码中去好好的研究研究这个东西。看看它有哪些可能被我们忽视的地方。以上述书中的案例来说,它的需求很简单,请实现“让一

2016-07-02 10:54:51 5201

原创 JAVA 笔记(五) ThreadPoolExecutor 源码剖析

基本概念 Thread t = new Thread(); t.start();上面的代码我们再熟悉不过了,因为我们通常在需要开启一个线程的时候都会这样做。 但使用这样的方式,有时候也会照成困扰。例如如果程序中存在大量的并发线程,这样做会带来什么缺陷? 答案很明显,会造成编写工作繁杂,降低系统效率,线程难以管理等等问题。在这种情况下,有没有一种方式能够让我们

2016-06-09 15:12:41 2499

原创 JAVA 笔记(四) RTTI - 运行时类型检查

运行时类型检查,即Run-time Type Identification。这是Java语言里一个很强大的机制,那么它到底给我们的程序带来了什么样的好处呢? 在了解运行时类型检查之前,我们要首先知道另一个密切相关的概念,即运行时类型信息(Run-time Information - 也可以缩写为RTTI) 运行时类型信息使得你可以在程序运行时发现和使用类型信息。 来自:《Thinking i

2016-05-29 14:43:06 6698 3

原创 JAVA 笔记(三) 从源码深入浅出集合框架

集合框架概述以Java来说,我们日常所做的编写代码的工作,其实基本上往往就是在和对象打交道。 但显然有一个情况是,一个应用程序里往往不会仅仅只包含数量固定且生命周期都是已知的对象。 所以,就需要通过一些方式来对对象进行持有,那么通常是通过怎么样的方式来持有对象呢? 通过数组是最简单的一种方式,但其缺陷在于:数组的尺寸是固定的,即数组在初始化时就必须被定义长度,且无法改变。 也就说,通过数组来

2016-05-25 17:53:04 5198 1

原创 JAVA 笔记(二)

关于interface值得被了解的东西当我们最初开始接触编程的时候,都会听到类似,你可以使用这个API,使用那个API 类似的说法。 没错,API就是说Application Programming Interface,也就是应用程序编程接口。 但对应到Java里来说,初学乍练之时可能会造成一定的疑惑。因为,大部分时间来说, 你发现在使用的不是别人的工具类(class)里的方法,但是Java里

2016-05-17 14:31:16 3600

原创 JAVA 笔记(一)

Java 的工作方式 编写Java源代码。 → “.java文件” 编译器对源代码文件进行编译工作,编译过程中,如果源代码编写存在隐患,则会得到编译时异常。 如果编译工作通过,则得到一份计算机可执行的字节码文件。→ “.class文件” JVM(JAVA虚拟机)对字节码文件进行读取与执行,也就是让我们的代码跑起来。 Java 的内存区域划分程序计数器 1、首先这

2016-05-11 14:34:44 4992 1

原创 Android ContentProvider UnderStanding

ContentProvider是Android里的四大组件之一。顾名思义,其作为内容提供者,为不同应用之间提供了一个数据访问通道。对于其的使用,无非也就是两方面: 在我们自己的应用里,通过ContentProvider访问外部应用的数据。 我们在自己的应用里编写ContentProvider,提供给其它想要访问我们应用某些数据的应用使用。 那么,首先我们来看一下,如何最基本的通过

2016-01-06 16:55:15 1267

原创 Android-Activity 启动模式解析

1.Standard 标准模式 Activity的默认启动模式,在不显示指定启动模式的情况下,Activity都以这种方式进行启动。 在Standard模式下,每启动一个新的Activity,就会在返回栈中进行入栈,并处于栈顶的位置。 对于使用Standard模式启动的Activity,系统不检查该Activity之前是否已经在返回栈中存在,每次启动都会创建一个该Activity的

2016-01-04 16:49:08 1765

原创 Git的基本原理 及 常用命令情景模拟

Git是一个分布式的版本控制系统,github可以用于管理项目版本控制。msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。在开始正式尝试使用之前,先简单看一下GIT的工作原理:、在本地GIT仓库当中,实际分为工作区和版本库。简单来说:工作区就是你存放工作文件的目录。而当执行gi

2015-12-03 17:08:58 1907

原创 Android - ViewPager + Fragment 实现仿微信界面

效果图:要实现的效果如图所示,简单归纳:安置一个底部菜单栏,共有4个功能选项。4个功能选项分别联系4个不同内容的fragment。支持通过滑动屏幕的方式,完成fragment的切换。支持通过类似tabhost,点击选项卡的方式,完成fragment的切换。项目结构:    通过Project的结构,我们可以看到实际上逻辑还是比较清晰。

2015-12-02 15:53:23 1919

原创 Android关于Activity的一些使用和全局管理技巧

今天以一个小的Demo,来总结一点在Android关于Activity的使用和全局管理的技巧。效果图:从这个效果图,我们最直观的能看到的两个比较简单但也具有代表性的功能:在某个Activity处于非可见状态时(或在非属于于该Activity类的代码中),对其进行一定的界面更新工作。在任一界面退出程序(管理自己的App里的所有Activity)。

2015-11-27 17:22:13 2584 1

原创 Android屏幕适配 px,dp,dpi及density的关系与深入理解

px(Pixel) :既传统计算机语言中描述的像素,在Android则代表绝对像素。之所以Android中不推荐使用这种单位,正是因为:Android中不同品牌,不同屏幕的设备,其分辨率亦不一。例如,我们现在将某个Button的width设为160px,则出现如下情况:在分辨率为:320宽的设备里,该按钮占屏幕宽度一半;在分辨率为:640宽的设备里,该按钮则只占

2015-11-25 21:31:20 10886 2

原创 对Android-MVP架构模式的理解与初尝试

通常,如果你是一名面向对象的开发者,或多或少都了解和接触过大名鼎鼎的“MVC”模式。到了Android移动端上,因为其自身的某些特性。于是,从“MVC”模式里又衍生出了一种新的模式,既“MVP”模式。关于其二者的特点,从根本来说,十分相似:Controller/Presenter负责接受数据,并命令View或Model做出相应的修改;Model负责封装应用程序的数据模型

2015-11-23 14:35:02 2246

原创 Android - Acitivty生命周期 理解

1、Activity的四种状态理解Activity的生命周期之前,先理解对android的生命周期的特点进行整理,从而归纳出的Activity的四种活动状态。那么,通常来说,一个Activity的整个生命周期内,会经历如下的几种状态:运行状态:         * 当一个Activity位于返回栈栈顶的时候,既是处于这种状态之下。            

2015-11-18 20:45:33 2564

原创 Android — 长按ListView 利用上下文菜单(ActionMode) 进行批量事件处理

好久没写博客拉```````最近终于稍微闲一点了```````无聊拿手机清理短信,发现批量事件的处理还是挺管用的``````那么自己也来山寨一记看看效果吧`````闲话少说,首先,我们来看下手机自带的短信功能里执行批量删除时的效果:然后  是我们自己简单山寨的效果:     模拟的操作过程很简单,但也很有代表性。我们假定我

2015-07-10 10:59:44 4362 3

原创 Android - SurfaceView + MediaPlayer实现分段视频无缝播放

Android当中实现视频播放的方式有两种,即:通过VideoView实现或者通过SurfaceView + MediaPlayer实现。由浅至深,首先来看下想要在Android上播放一段视频,我们应当怎么做。前面我们已经提到了两种方式,这里我们来看一下具有更好的拓展性的第二种方式,也就是通过SurfaceView + MediaPlayer进行实现。首先,我们来定义一

2015-04-10 16:09:46 13901 9

原创 记,基于Android开发类似于微博的东东时,值得记录的几个问题~

作为一个Java的使用者,在经历了Web到服务端开发的工作后,今年终于开始接触一些android开发方面的工作了。新的挑战~~最近有一个需求是在应用里开发一个类似于微博的功能模块,说难不难,说易不易~~作为一名Android上的菜鸟,在开发的过程里还是遇到不少问题的。当然,紧接着的就是一个个的想办法解决问题~~~~~一直想把过程中遇到的,自己觉得几个比较有意义的问题,及其解决方法记录下

2015-03-21 16:06:56 2974 2

原创 理解Java回调机制

其实对于回调机制,在实际使用中还是经常用到的。但好笑的是,一直没能对所谓的回调的概念有一个很清晰的理解。最近抽空看一些书的时候,老是时不时的提到回调的概念。那好吧,正好抽空来简单总结总结,加深一下印象和理解~网上的百科之类的资料中,看到的对于回调比较书面和规范的解释是:在计算机程序设计中,回调函数,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层

2015-03-03 16:07:08 4331 3

原创 Java网络编程 - 浅析web服务器与浏览器的实现原理

我们基本每天都在通过WEB浏览器,去浏览一些新闻,看看视频之类的。众所周知,这就是所谓的B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。那顺道就来简单的看一下,所谓的Web服务器(例如知名的Tomcat)与浏览器,基本的实现原理是什么样的呢?首先可以明确的就是,例如我们所做的通过浏览器输入一

2015-02-03 10:34:29 7468 1

原创 Java网络编程 - 基于UDP协议 实现简单的聊天室程序

最近比较闲,一直在抽空回顾一些Java方面的技术应用。今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序。现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆。先看一下效果:实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理。“聊天室001”的用户,小红和小绿相互聊了两句,“聊天室002”的小黑无人理会,在一旁寂寞着。

2015-01-28 16:19:15 19945 36

原创 牛刀小试 - 详细总结Java-IO流的使用

流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流。流的本质是数据传输,根据数据传输的不同特性将流抽象封装成不同的类,方便更直观的进行数据操作。 IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流输入流和输出流所谓输入流和输出流,实际是相对

2015-01-26 16:40:30 2682

Java基于UDP传输协议的简单聊天室

1、java socket 2、UDP传输协议 3、json数据格式 4、简易聊天室程序实现

2015-01-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除