自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NiZhuanXingHeIT的博客

贡献自己的知识!

  • 博客(64)
  • 资源 (6)
  • 收藏
  • 关注

原创 观察者模式深度分析

概述观察者模式是一种很常用的设计模式,Android中的广播(Broadcast)就是用观察者模式设计的,再往大一步,诸如微博这种社交平台也是用的观察者模式,观察者模式亦被称作发布-订阅模式。观察者模式包含两个要素:目标对象、观察者对象。其中,当目标对象的状态发生改变时,它所依赖的观察者将立即得到通知,通知携带的数据将在消息中心得到处理。内容1、使用观察者模式的场景当一个对...

2018-04-16 17:02:30 464

原创 单例模式深度分析

概述单例模式,它能保证我们始终如一的使用同一个对象,我们平时经常会去用它,因为可以避免重复制造对象,减少内存隐患,我们也都可以写个常见的单例出来。 这里要讲下单例到底应该怎么写,既能避免线程不安全,也能保证性能。内容1、一个最简单的单例模式public class GirlFriend { //静态变量记录唯一实例 private static Gi...

2018-04-04 18:02:30 487

原创 利用Visual Studio自带的EBuilder工具编译一个静态库

概述编译工具一般自带编译生成库文件的功能,VS生成静态库用的工具是Ebuilder。步骤1、静态库的代码实现首先写一个c程序,包含.h头文件和.c文件: des.h:#ifndef DES_H#define DES_H#include <Stdio.h>#include <String.h>//B.DES/3DES加密示例代码int Pu...

2018-04-02 17:40:09 872

原创 Android之服务Service和它的CP们(BroadcastReceiver、Messenger、AIDL)详解

概述Service,乃Android四大组件之一,除Activity之外最常用的组件,经常配合Activity完成各项工作,是Activity的好基友。但同时,Service也有很多其它的CP,搭配使用干活不累。内容1、ServiceService被启动后,可以长时间在后台执行。每个服务类必须有一个相应的申明,在其AndroidManifest文件中。服务有两种开启的状...

2018-03-29 18:01:50 1172

原创 HTTP连接及TCP

概述首先来了解几个名词——WWW(World Wide Web):万维网,是一个大规模的、联合式的信息储藏所,英文简称Web。HTTP(HyperText Transfer Protocol):超文本传输语言,它定义了客户端如何向王维网服务器请求万维网文档(即数据资源),它是万维网上可靠的交换文件的基础,每个万维网都有一个服务器进程,它不断地监听TCP的端口80,以便发现有客户端向它发...

2018-03-23 10:50:08 887 1

原创 HTTP报文

转载请注明出处: 本文出自:逆转星河的博客概述HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,报文在客户端、服务器、代理之间流动。内容1、报文流报文会流入服务器,之后流出服务器,流入代理。所有报文的接- 受者是下游,发送者是上游。报文由三个部分组成:进行描述的起始行,包含属性的...

2018-03-21 17:34:57 339

原创 HTTP之统一资源定位符URL

转载请注明出处: 本文出自:NiZhuanXingHe的博客概述每一个服务器资源都有一个名字,服务器的资源名被称为 统一资源标识符 ——URI,URI有两种形式,分别是URL(统一资源定位符)和URN(统一资源名),目前,URL被使用的很广泛。URL可以这么说,URL是web客户端向web请求信息时所需的资源位置,通过url,web客户端可以获取到数据资源。...

2018-03-19 18:06:04 3266

原创 Handler工作原理及源码分析

转载请注明出处: 本文出自:NiZhuanXingHe的博客概述Handler对于android开发人员来说,甚至耳熟能详,不管是什么样的项目,大到陈年老项目,小到炫技小项目,你几乎都离不开它。 通过源码可知,一个Handler允许你去发送、处理消息和可运行对象,而这些消息和可被捕获的对象关联着一个消息队列,每个线程都会对应一个消息队列,而每个Handler实例...

2018-03-18 21:49:02 399

原创 objective-c与c的混编之道

ocbjective-c,大家简称oc,oc一般来说不需要和底层的c\c++混编,一是oc效率已经很快,二是二者混编对于一般开发者来说难度太大,坑太多,但有时候,有的框架、算法等已经用c/c++写好了,用oc重写太费劲,那么不如直接拿过来用,但偶尔c/c++中涉及到需要和被调用模块交互的地方,这个时候,就需要用底层调上层。 oc可以兼容c,但是c不能兼容oc,这就尴尬了。这篇博客的代码样例没有什...

2017-11-01 21:25:09 3070

原创 gradle和groovy的甜蜜故事

这篇博文介绍了何通过android studio执行groovy编写的脚本,看之前需要了解groovy基本语法和gradle的概念。1、新建一个android工程GradleLearn,在其根目录下build.gradle文件中添加以下代码://groovy testtask testGroovy { doLast { println "start exe...

2017-10-31 17:00:03 636

原创 Android之3.5版的百度地图的定位、覆盖物实现以及覆盖物的点击事件

概述前段时间,在用到新版(3.5.0版)百度地图时,在地图覆盖物实现以及覆盖物点击事件的添加部分遇到点挫折,发现网上很多的资料写得都不够详细,所以我就想写一个有关从地图定位到地图覆盖物及其点击事件的实现的博文。效果图:覆盖物及其点击事件:自定义缩放控件的实现效果(注意图中的加减按钮):实现此例程之前要做的的步骤:1、申请Baidu API_KEY;...

2015-10-27 21:21:59 3811 1

原创 Android自定义控件之美观的实用型统计表的制作

概述绘制统计表,势必要用到自定义控件,一个统计表,看起来单元项很多,但实际上做起来并不复杂。要传递数据进来,用集合类最好。要确定每个表格单元的宽和高,并根据数据数目和表格每列的高来决定自定义控件的高。绘制表格线和表格单元背景的颜色,同时,绘制每个表格单元的文本。先看看效果:Demo自定义一个控件:/** * Created by Administ...

2015-10-21 18:36:14 6213 2

原创 Android自定义控件之滑动解锁九宫格

概述:滑动解锁九宫格的分析: 1、需要自定义控件; 2、需要重写事件onTouchEvent(); 3、需要给九个点设置序号和坐标,这里用Map类就行; 4、需要判断是否到滑到过九点之一,并存储滑到过的点的序号,而且需要一个方法可以返回它们,这里用List类就行;滑动解锁当前还是比较流行的,今天写了个简单的滑动解锁九宫格的例程,分享出来让初学者看看。我的是这样的: Demo首先,自定义一个

2015-10-14 19:50:00 2713 2

原创 Android自定义ViewGroup之子控件的自动换行和添加删除

概述:常用的布局类型并不能满足所有需求,这时就会用到ViewGroup。ViewGroup作为一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为用于告诉容器的),我们的宽度(layout_width)、高度(layout_height)、对齐方式(layout_gravity)等;当然还有margin等;于是乎,ViewGroup需要做的事情是:

2015-10-13 11:31:43 4150 4

原创 Android自定义view之绘制实用型的柱形图和折线图

概述:前几天突然需要做两种图表——柱形图、折线图,于是第一反应是先看看网上有没有现成的,结果有是有,但都不是我想要的,而且大多数不是用纯android代码完成,HTML5似乎完成这类工作要容易得多,但是我本人并不会HTML5,只能黯然神伤,掩面流泪,最终只能自己敲代码了。**知识点:**android自定义view、图形图像、Fragment、MVC模式。Demo界面是模仿红圈营销搭建的折线图:

2015-10-10 08:57:19 4053 10

原创 Android之手势的识别与处理(双击onDoubleTap、滑动onFling、拖动onScroll)

概述:一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触摸的轨迹去判断是什么手势)。 Android sdk给我们提供了GestureDetect...

2015-09-24 19:59:18 18805 3

原创 Android的事件传递(仿下拉刷新)

概述:Android事件构成: 在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。所有这些都构成了Android中的事件响应。总的来说,所有的事件都由如下三个部分作为基础:按下(ACTION_DOWN)移动(ACTION_MOVE)抬起(ACTION_UP)跟touch事件相关的3个方法:public boolean dispa

2015-09-24 19:24:23 2146 1

原创 Android自定义SurfaceView与传感器的并用(实现自绘的指北针)

概述:SurfaceView是Android中极为重要的绘图容器,SurfaceView的图像绘制是放在主线程之外的另一个线程中完成的。除了绘图,SurfaceView还能播放视频。实现方法:实现Android的自定义SurfaceView,需要新建一个继承于SurfaceView的类,并且重写至少一种构造器,在构造器中,需要同过getHolder()方法得到一个SurfaceViewHolder类

2015-09-21 22:37:03 2745

原创 Android动画绘制者Animator与LayoutAnimator

概述:与Android的Animation控件相比,Animator与LayoutAnimator处理后的控件完成动画效果后不会回复原状。Animator只使用与View对象,和Animation类似,Animator也能通过xml定义,需要用objectAnimator来定义各种动画效果。 LayoutView常用于给控件的添加删除增加一些特殊效果,如淡入淡出等。DemoAnimatorAnim

2015-09-20 20:33:13 1897

原创 Android动画控件之Animation

概述:android的动画效果包括:移动,渐变透明度,旋转,缩放。 实现动画的方式有两种:在java代码中动态实现,在xml中静态实现。demo动态实现: /* 动画的透明度渐变 */ AlphaAnimation alphaAnimation = new AlphaAnimation(1f,0);//透明度从1到0 alp...

2015-09-20 20:06:03 1479

原创 Android自定义ViewGroup

概述:ViewGroup作为一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为用于告诉容器的),我们的宽度(layout_width)、高度(layout_height)、对齐方式(layout_gravity)等;当然还有margin等;于是乎,ViewGroup需要做的事情是:给childView计算出建议的宽和高和测量模式 ;决定child

2015-09-20 19:30:57 798

原创 Android自定义View之图形图像(模仿360的刷新球自定义一个SeekBar)

概述:360安全卫士的那个刷新球(姑且叫它刷新球,因为真的不知道叫什么好,不是dota里的刷新球!!),里面像住了水一样,生动可爱,看似简单,写起来不太简单,本例程只是实现了它的部分功能而已,说实话,跟360的刷新球比起来差距还是很大,我这个长得有点挫。 本历程需要用到的知识包括:android的自定义View,自定义canvas、path、Bitmap、Handler先结果演示: ...

2015-09-18 21:43:36 1920

原创 Android图形图像之自定义控件属性(demo:刮刮乐与打码以及图片的缓存)

概述:此部分内容涉及到android的自定义View、自定义属性和Android图形图像处理的综合应用:Bitmap、Path、Matrix、Canvas。 图片打码以及如何缓存打码后的图片都是日常极有可能用到的,而刮图也并不是用不到。 下面的demo写的是一个的刮刮乐例程,里面涉及到如何自定义控件属性,以及如何存储处理后的图片,注释很详细,看注释即可。 结果演示: 文件保存后的结果: D

2015-09-18 21:15:37 2217 2

原创 Android自定义View之用观察者模式写自定义监听事件以及常用竖直型字母索引栏的写法

概述:目前,竖直索引栏还是很流行的,微信、美团、手机通讯录等各种常用软件都要用到它。Demo写一个自定义View,利用观察者模式,自定义其中的点击事件。public class MySlider extends View { private int width; private int height; private float x; private float y;

2015-09-17 21:10:27 1972

原创 Android图形图像之以Bitmap作为Canvas画布的材料

概述当以Bitmap作为画布材料时,可以绘制出以下各种图案:demo/** * 图形图像处理:在Bitmap上绘画 */public class MyBitMapViewSec extends View { private int width; private int height; private Paint mPaintCircle; private Paint

2015-09-17 20:31:48 3681

原创 Android自定义View之图形图像Bitmap

概述:BitMap代表一张位图,扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。。 在android系统当中,bitmap是图像处理最重要的类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放、对称等操作,并可以指定格式保存图像文件。Bitmap的各种操作:demo首先,

2015-09-17 20:14:32 3269

原创 Android自定义View之图形图像工具类Path的特殊用法

概述:没什么好说的。Demo新建一个自定义Viewpublic class MyPathView extends View { private int width; private int height; private Paint mPaint; private Path mPath; private Paint mPaintPoint; priva

2015-09-17 19:53:11 2187

原创 Android自定义View之三种流行进度条的写法

概述:利用自定义View的onDraw()方法,可以绘制很多种图形,进度框只是其中之一。Demo这是一个模拟下载的demo。自中央逐渐充满型圆形进度框demo1public class FirstProgressView extends View{ private int width; private int height; private int progress; p

2015-09-16 21:05:42 2330

原创 Android之自定义View以及画一个时钟

概述:当Android自带的View满足不了开发者时,自定义View就发挥了很好的作用。 建立一个自定义View,需要继承于View类,并且实现其中的至少一个构造函数和两个方法:onMeasure()和onDraw(); onMeasure()用于设置自定义View的尺寸,onDraw()用于绘制View中的内容。在onDraw()方法中,需要调用画笔绘制图形或文本,绘制的模板时Canvas对象

2015-09-16 20:42:37 3303

原创 Android多媒体之调用摄像头和从本地相册中选择图片

概述:这个例程的实现的功能是:拍照,自动压缩图片,以及从本地相册选择图片。 需要加载权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>demo:public class MainActivity extends Activity implements View.

2015-09-16 20:17:47 2489 1

原创 Android的视频播放之VideoView与SurfaceView

VideoView概述:这个类其实也是继承了SurfaceView 类,集成度高,开发难度小,只是灵活性差。通过VideoView播放视频的步骤:1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件2、调用VideoView的如下两个方法来加载指定的视频setVidePath(String path):加载path文件代表的视频setVideoURI(Uri ur

2015-09-15 20:00:23 6266

原创 Android常用控件之SoundPool

概述播放一般较大内存的音乐,可以用MediaPlayer,但实际中,那些小型的音频或(如:提示音)或者对响应速度要求较高的音频就不适合用MediaPlayer,MediaPlayer的响应需要一定时间,而且需要添加线程。SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。但是这里如果音效文件过大没有载入完成,我们调用play方法时可能产生严重的后果,这里Android SDK

2015-09-15 19:21:51 1309

原创 Android多媒体之音频、视频录制MediaRecorder

概述:MediaRecorder的状态图: Initial:初始状态,当使用new()方法创建一个MediaRecorder对象或者调用了reset()方法时,该MediaRecorder对象处于Initial状态。在设定视频源或者音频源之后将转换为Initialized状态。另外,在除Released状态外的其它状态通过调用reset()方法都可以使MediaRecorder进入该状态。In

2015-09-15 15:08:12 1529

原创 Android之实用库xUtils四大模块以及用ViewInject代替findViewById()

概述:DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键,保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体,支持延时加载; 支持链式

2015-09-14 20:07:47 4252 1

原创 Android之网络通信Volley框架用法

概述:Volley提供的功能简单的讲,提供了如下主要的功能:1、封装了的异步的RESTful 请求API;2、一个优雅和稳健的请求队列;3、一个可扩展的架构,它使开发人员能够实现自定义的请求和响应处理机制;4、能够使用外部HTTP Client库;5、缓存策略;6、自定义的网络图像加载视图(NetworkImageView,ImageLoader等);Volley也有两种加载方式DoGet和DoPo

2015-09-14 19:53:23 1122

原创 Android之单线程下载与多线程下载

概述:单线程下载很简单,就是开启一个线程去下载资源再进行本地保存;多线程下载是通过RandomAccessFile(随机文件读写操作类)来设置每个线程读取文件的起始点位置,起始点之间的长度即为该线程需要下载的文件大小下载开始位置:线程id*每条线程下载的数据长度 = ?下载结束位置:(线程id+1)*每条线程下载的数据长度-1=? 这里用的是URLConnection单线程下载与多线程下载publ

2015-09-14 19:34:49 1645

原创 Android之WebView与URLConnection

demojava代码:public class MainActivity extends Activity implements View.OnClickListener { private TextView mTextViewDetail; private TextView mTextViewFalse; private ProgressBar mProgressBarWe

2015-09-14 19:05:29 1373

原创 Android之自制一个(以假乱真的)山寨的手机QQ

概述当前中国最主流的及时通讯工具之一腾讯QQ,经历过这么多年的更迭,其代码繁杂度可想而知,本人闲着没事,就仿造手机QQ的布局写了个山寨货,只是布局,并没有实现那些繁杂的功能,不然,我一个人也必然做不到演示结果: 代码如下:主活动: 主活动中用一个fragment的adapter加载三个fragment,这三个fragment分别显示演示结果中的三个页面。然后用一个ViewPager(v4包的)加

2015-09-10 20:09:29 4596 10

原创 Android之多媒体MediaPlayer(一个简单的音乐播放器)

音乐播放器MediaPlayer: 利用Environment.getExternalStorageDirectory()方法得到sdcard路径,然后用new File(得到的sdcard父路径,子路径)得到音乐存放路径。用File[]型的数组存放得到的所有音乐文件,接着就可以播放。 用MediaPlay需要在manifests中申请权限android.permission.R

2015-09-09 20:13:16 1758

原创 Android的进程Hnadler与AsyncTask

概述:不能在非UI线程中操完成UI线程中的操作; 服务必须在manifests中注册。代码进程完成一个倒计时public class TestThread extends Activity { private Button mTimeCountButton; private int count; private static final int TIME_DESC = 0x

2015-09-09 20:03:52 732

资源异步加载和缓存

异步加载全攻略,包括:thread加载、asyncTask加载、lruCache等

2015-12-29

volley封装

volley的全攻略,包括volley异步加载、imageLoader等

2015-12-29

C音乐播放器

自制的音乐播放器,具有音乐列表,播放模式选择,曲目选择和进度更改等功能。

2015-11-08

山寨版知乎日报

山寨版知乎日报,没有后台,没有数据,仅有UI

2015-11-08

基于android平台的山寨QQ

基于Android平台的山寨QQ源码,利用Fragment框架,仿造QQ的布局,并未实现那些强大的功能。

2015-09-16

android的drawable图片集

一些安卓开发中可以加载的图片,用于部分android控件,可作为图标或背景。

2015-08-26

空空如也

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

TA关注的人

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