自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

转载 Android应用开发之所有动画使用详解

1 背景不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今天来一发Android应用的各种Animation大集合。英文厉害的请直接移步参考Android Developer。Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: View Animation: 视图动画在古老的Andr...

2018-08-10 14:42:14 173

转载 面向对象的5个基本设计原则

面向对象的5个基本设计原则:单一职责原则(Single-Resposibility Principle)    其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和...

2018-08-10 14:33:43 182

原创 KMP算法的next[]数组的求法和理解

KMP算法的关键是next数组的求法在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符,当然它描述的也是子串的对称程度,程度越高,值越大,当然之前可能出现再匹配的机会就更大。 用一个例子来解释,下面是一个子串的next数组的值,可以看到这个子串的对称程度很高,所以next值都比较大。...

2018-08-10 14:33:13 255

原创 对final数据类型的简单理解

对于一个变量来说,当它被定义为final类型的时候,表示这个变量是不可改变的,也就保证了只会对它赋值一次,试图改变final变量的值,编译时均会报错,因此,声明为final类型的数据类型通常被认为是不可变的数据类型。存在一种情况,“会使这种不可变数据类型被改变”。Java中新建一个类的对象通常是通过引用来实现的,这种引用会造成.“ 引用不变,但是引用所指向的值发生了改变”这种情况而编译时不会报...

2018-08-10 14:32:01 1300

原创 Gesture手势及手势库

一、Gesture基础:(一)、概念:        所谓手势,其实是指用户手指或者触摸笔在触摸屏上的连续触碰行为。比如在屏幕上从左至右划出一个动作,就是手势。再比如在屏幕上画一个圆圈也是手势。手势这种连续的触碰会形成某个方向上的移动趋势,也会形成一个不规则的几何图形。应用程序中的手势就是:多个持续的触摸事件在屏幕上形成特定的形状。        And

2017-12-04 17:22:51 1807 4

转载 android studio的sdk所有方法报错,全部红色警告

链接:http://blog.csdn.net/u010773839/article/details/53609473所有的方法都是红色警告,项目中每个文件打开都是这样子,可以编译。以前有遇到过这样的问题,当时只要Build ->Clean Project就解决了。今天试了这方法不行,然后网上说Tools ->Android ->Sync Project with Grad

2017-10-19 11:23:52 1367

原创 生产者消费者模型

一、介绍:(一)、概念:        如果要实现以下操作流程,使用Java代码来实现: 多个蛋糕师生产蛋糕,多个消费者购买蛋糕;  蛋糕的最大库存为5个;  早生产的蛋糕先被销售,最后被生产的蛋糕要最后被售出         如果要实现这个过程,一定要借助Java线程的并发协作来做。其实这在Java中叫做生产者消费者模型(确切说应该是“生产者-消费者-仓储”模

2016-07-19 17:45:36 401

原创 二维码

1.学习内容:   a.今天讲一下目前移动领域很常用的技术——二维码;现在大街小巷、各大网站都有二维码的踪迹,不管是IOS、Android、WP都有相关支持的软件。    b.在Android平台上主流还是用zxing库,ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,可以实现使用手机的内置的摄像头完成条形码的扫描及解码。    c.因此这里

2016-07-19 17:43:36 463 1

转载 八大排序算法

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。        当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,

2016-07-19 17:38:43 528

原创 px,dp,dip,sp的区别

1.px (像素):屏幕上的点 ,与密度相关。密度大了,单位面积上的px会比较多。2.dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持WVGA、HVGA和QVGA 推荐使用这个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。如果用px的话,320px占满HVGA的宽度,到WVGA上就只能占一半不到的屏幕了。3.sp

2016-07-15 17:43:51 389

原创 surfaceview

SurfaceView控件: * 1.主要用来显示图像数据,直接能从硬件接口里面获取数据: 视屏播放,拍照,二维码扫描或者游戏背景。。。 * 2.该控件具有双缓冲机制,实现效率高 * 3.能够在子线程中修改UI * 4.SurfaceView控件的绘制内容,是靠内部类SurfaceHolder来进行绘制的  使用步骤: * 1.继承surfaceview控件,同时去实现

2016-07-15 17:32:35 794

原创 极光推送的使用步骤

使用可以分一下七个步骤:1.把架包拷过来到libs里面(add)2.在main下面建一个jniLibs(名字不可以错),粘贴几个项目过来,原来在eclipse的libs里面的3.把ExampleApplication粘贴过来,去清单文件注册(!!!!!!!最容易错的是包名和注册的包名不一样)4.粘贴权限5.粘贴核心功能从到6.把Strings里面jpush_st

2016-07-15 17:28:29 3323 1

原创 Volley使用

Volley使用:Volley是Android平台上的网络通信库,能使网络通信更快、更简单、更健壮Volley使用了典型的模板回调机制实现Get,Post请求,上传json字符串,Volley的图片下载 RequestQueue :管理全局请求的单例,最好全局只有一个 StringRequest :文本的请求,下载字符串的时候需要创建的对象 Response.Lisente

2016-07-15 17:23:45 2683 1

原创 百度地图

一、基本概念:(一)、百度地图:百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据, 构建功能丰富、交互性强的地图类应用程序。百度地图Android SDK提供的所有服务是免费的,接口使用无次数限

2016-07-15 15:57:29 509

原创 Service二——跨进程访问AIDL

一、AIDL:(一)、概念:1、相关知识:在Android中, 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢? 显然, Java中是不支持跨进程内存共享的。因此要传递对象, 需要把对象解析成操作系统能够理解的数据格式, 以达到跨界对象访问的目的。这就是远程程序调用(Remote Procedure Call , RPC)。在JavaEE中,

2016-07-15 15:50:05 391

原创 Service一

一、Service:(一)、Service 简介:1、何谓“Service”?“Service” 意思即“服务”的意思, 像 Windows 上面的服务一样,服务是在后台上运行,承担着静悄悄的不为人所注意的工作。Service运行在后台,它是不可见的、无界面的程序。Service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity,这个

2016-07-15 15:48:49 1948

原创 Notification及BroadcastReceiver

一、Notification:(一)、简介:        显示在手机状态栏的通知。Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。        Android3.0增加了Notification.Builder类,该类可以轻松地创建Notification对象。Not

2016-07-15 15:46:42 2777

原创 样式主题与自定义View

样式和主题资源都是用于对Android应用进行美化的。一、样式:(一)、介绍:1、概念:Android中的样式和CSS样式作用相似,都是用于为界面元素定义显示风格,它是包含一个或者多个view控件属性的集合。如:需要定义字体的颜色和大小。2、作用:将一些常用的属性组合成样式,便于重复使用,减少给View控件指定类似属性的重复工作。Android Style类似网页设计中

2016-07-15 15:45:04 867

原创 Handler、Looper消息传递机制

一、Handler消息传递机制初步认识:(一)、引入:        子线程没有办法对UI界面上的内容进行操作,如果操作,将抛出异常:CalledFromWrongThreadException为了实现子线程中操作UI界面,Android中引入了Handler消息传递机制,目的是打破对主线程的依赖性。        什么是Handler?        

2016-07-15 15:43:00 1661 1

原创 SQLiteDatabase

一、SQLite:(一)、简介:        除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据。 在Android平台上,集成了一个嵌入式关系型数据库——SQLite。         SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)等五种数据类型; 虽

2016-07-15 15:40:46 7874

原创 WebView

一、、WebView:(一)、介绍:        Android提供了一个内置浏览器,该浏览器可以查看网站,查看邮件,播放视频。要使用该内置浏览器,要通过WebView组件实现。webView组件式专门用来浏览网页的。类结构:java.lang.Object   ↳ android.view.View     ↳ android

2016-07-15 15:38:59 3303

原创 动画背景图自动播放的实现

Android动画背景图自动播放的实现我们在开发android应用的时候,经常会遇到类似从网络加载大图,在加载的过程中,在图片要显示的ImageView位置,先显示一个转圈的loading动画图,给用户的体验会更好一些,要实现这个动画图很简单,使用在/res/anim中定义xml的方式,通常使用…. 来实现。 例如:<animation-list xmlns:android="h

2016-07-15 15:35:54 773

原创 项目上线流程(二)

混淆代码,第三方加密,分渠道打包,渠道统计,上传需要投放的市场,自动更新    代码混淆        在build.gradle里面配置代码            参考图1                需要混淆配置的文件            参考图2                在build.gradle里面进行配置        studio混淆需要配置的文件

2016-05-16 20:19:40 1628

原创 项目上线(一,加密)

1.什么是加密2.为什么要用加密3.主流到加密 单向加密,双向加密    单项加密主要用于校验 只能加密,不能解密,比如MD5,SHA1    双向加密:对称加密 非对称加密    对称加密:加密单密钥和解密单密钥是一样的    非对称的:分为加密密钥和解密密钥  ,一般是公钥  私钥        如果是公钥加的密,必须用对应私钥解密        如果是私钥加的

2016-05-16 20:18:25 350

转载 Android 支付宝API使用流程(一)

转载网址:http://ju.outofmemory.cn/entry/138098一、准备工作〉1、下载开发包https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4#ps-tabinfo-hash压缩包下的“支付宝钱包支付接口开发包”中即有Andoid使用支付宝的JAR

2016-05-16 20:14:32 843

转载 ShareSDK集成第三方登录和分享的步骤

转自:http://my.oschina.net/u/1024921/blog/170588之前用过这个几次了,而每次都没有记录一下具体的步骤,这次就写一下吧1、去ShareSDK下载官方的SDK2、现在他们的服务特别人性化,解压SDK之后会发现有一个"双击此批处理文件可以生成一个快速集成ShareSDK的目录.bat"这样一个文件,打开之后按照提示输入你的应用包名,他就会

2016-05-16 20:02:29 653

原创 静态代理模式

代理模式一般涉及到的角色有  -抽象角色:声明真实对象和代理对象的共同接口  -代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能替代真实对象相同的接口以便在任何时刻都能替代真实对象。同时,代理对象可以再执行真实对象操作时,附加其他的操作,相当于对象真实对象进行封装  -真实角色:代理角色代表的真实对

2016-02-24 23:09:12 319

原创 建造者模式

class Demo{public void onClick(View v) {AlertDialog.Builder builder = new AlertDialog.Builder(this);//this是Activity的对象// 设置对话框的相关信息builder.setTitle("提示")//用建造者模式实现"链式书写".setIcon(R.drawable.ic_launcher

2016-02-24 23:07:03 288

转载 匿名内部类精讲

匿名内部类适合创建那种只需要一次使用的类,例如命令模式时所需要的Command对象。匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。    定义匿名内部类的格式如下:[java] view plain copynew 父类构造器(参数列表)|实现接口()  {   //匿名内

2016-02-13 23:20:45 229

转载 Android_Studio快捷键和使用技巧

Alt+回车 导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C  最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动

2016-02-04 22:53:32 312

转载 Eclipse快捷键大全

Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+En

2016-02-04 22:51:26 225

原创 装饰者模式

装饰者模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。具体实现通过一下几步:1、私有的父类对象2、构造方法对父类对象进行初始化3、重写要装饰的方法并且父类对象调用建一个父类:package com.demo1;public class Man { //相亲 public void xq() { System.out.prin

2016-02-04 19:13:37 307

原创 六种值得学习的android开发框架

1、volley  (1)  JSON,图像等的异步下载; (2)  网络请求的排序(scheduling) (3)  网络请求的优先级处理 (4)  缓存 (5)  多级别取消请求 (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)2、android-async-http   (1) 在匿名回调中处理请求结果 (

2016-02-03 23:19:11 967

原创 单例设计模式

//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if

2016-02-03 23:13:50 309

原创 构造哈夫曼树的算法

①、编写哈夫曼树中每个节点结构;②、构造哈夫曼树的算法;③、编写一个存放每个节点哈夫曼编码的类型;④、编写哈夫曼树求对应的哈夫曼编码的算法;⑤、编写主函数。代码如下:#include#include#include#include//①:typedef struct{ char data; float weight; int parent; int

2016-02-02 18:43:44 2211 1

原创 编写创建二叉树的算法

①、编写创建二叉树的算法;②、编写查找节点的算法;③、编写找孩子节点的算法;④、编写求二叉树高度的算法;⑤、编写输出二叉树的算法;⑥、编写先序遍历递归算法;⑦、编写主函数。代码如下:#include#include#include#include#define MaxSize 50//①:void CreateBTNode(BTNode * &b,cha

2016-02-02 18:40:41 1719

原创 二叉树的链式存储结构

基本步骤:①、二叉树的链式存储结构;②、编写创建二叉树、输出二叉树的算法;③、编写后序遍历递归算法;④、编写中序遍历递归算法;⑤、编写先序遍历递归算法;⑥、编写先序遍历非递归算法;⑦、编写中序遍历非递归算法;⑧、编写后序遍历非递归算法;⑨、编写主函数。代码如下:#include#include#include#include#define M

2016-02-02 18:38:18 836

原创 HashMap和HashTable的区别

一,HashMap是非线程安全,HashTabale是线程安全;二,HashMap的键和值都允许有null值存在,而HashTable不行三,因为线程的安全问题,HashMap效率比HashTable的要高。

2016-02-02 18:30:39 323

原创 增强For循环

普通For循环:int [] a ={1,2,3,4,5};for(int i=0;i<a.length;i++){System.out.println(a[i]);}增强型For循环: for(int element : a){System.out.println(element);}两者效果是一样的,但是增强型For循环更简洁.如下有一个简单的例

2016-02-02 18:19:44 344

原创 递归删除目录下所有文件

删除目录下所有文件,这个只能用递归方法进行。递归,只有遇到出口才会停止递归,出口逻辑一定要找对。 目录下可能有文件或文件夹,文件夹下面还有文件或文件夹,所以使用递归进行便利进行删除。代码如下:import java.util.*;import java.io.File;public class DeleteAll{ public static void main(S

2016-02-02 18:12:04 362

空空如也

空空如也

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

TA关注的人

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