自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

noonehide的博客

一起来跟android开心的玩耍吧!

  • 博客(47)
  • 资源 (10)
  • 收藏
  • 关注

原创 imgs

vue-diff

2017-08-31 15:45:53 930

原创 前端跨域(CORS)解决方案

同源指的是:同协议,同域名,同端口一. 为什要设计同源策略? 浏览器出于安全方面的考虑,不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。二.我们怎么从其他网站获取数据? 1. 服务器处理: 流程: 1.浏览器发现这次请求不符合同源策略,就自动在头信息之中,添加一个Origin字段。GET /cors HTTP/1.1Origin

2017-06-16 17:15:42 2688

转载 Meta标签详解

标签提供关于HTML文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。它的必要属性有: content: 定义与http-equiv或name属性相关的元信息可选属性: http-equiv : content-type / expire / refresh / set-cookie 把conte

2017-06-16 16:00:24 340

原创 Android打包详解

第一步:打包资源文件,生成R.java文件。 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【工具】aapt工具 【输出】打包好

2017-06-16 15:35:51 331

原创 数据结构与算法简介

官方定义: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。数据结构中结构的概念: 数据结构中的结构,也就是我们研究的主体对象。数据结构中我们很少研究数据,因为数据在内存中的表现形式对于我们都是一样的,也就是二进制。传统上,我们把数据结构分为逻辑结构和物理结构。逻辑结构: 指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的

2017-03-28 11:28:24 268

原创 Activity启动流程

要熟悉Activity启动流程,得首先知道以下几个概念 1.ActivityManagerService(AMS):服务端对象,负责系统中所有Activity的生命周期。服务端这个概念不仅仅存在于web项目很中,在Android系统中,ams,pms,wms等系统服务属于公共服务,我们的App通过调用startActivity()并不能直接打开另外一个App,这个方法会通过一系列的调用,最后还是告

2017-03-28 10:54:58 212

原创 Android打包流程

第一步:打包资源文件,生成R.java文件。 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【工具】aapt工具 【输出】打包好

2017-03-24 13:46:39 248

原创 Android热修复实现原理以及方法

现在主要由两大方法 1.阿里AndFix,主要是采用Ndk实现对方法指针的替换 2.腾讯Tinker 现在主要说的是tinker的实现方法: 一. 首先介绍下两个概念: public class PathClassLoader extends BaseDexClassLoader { 用来加载已安装应用程序的dexpublic class DexClassLoader extends

2017-03-23 15:06:46 488

原创 Touch事件传递与滑动冲突解决方案

一.当一个触摸事件产生后,它的传递过程顺序如下:Activity -> Window -> DecorView,即事件总是先传递给Activity,Activity再传递给Window,最后Window再传递给顶层View DecorView;然后在不被拦截的情况下,触摸事件会被传递到触摸位置对应的最底层View。传递完成后就要处理触摸事件了,处理顺序是从最底层View向Activity进行的。跟T

2017-03-22 17:54:35 696

原创 Volley源码解析

volley,应该是Android开源框架中最简单的框架了,同时它也是最具有代表性的框架。如果你吃透了它,那么你看其他的开源框架也会容易很多。 先上图: 从上图中可以看出,Volley创建了RequestQueue,RequestQueue执行Cache和NetWork两个转发器, 最终执行ExecutorDelivery下面一步一步开始分析 1.Volley执行newRequestQu

2017-03-21 17:46:49 221

原创 app启动时间优化

app启动时间龟速,主要就是因为在Application的onCreate里面或者启动页的onCreate里面干了很多耗时的操作,比如各种第三方框架的初始化等等。首先我们可以用TraceView来对方法对执行时间进行检测: 1.通过DDMS打开TraceView 2.使用代码// 在自己想要开始调试的地方startDebug.startMethodTracing("GithubApp");

2017-03-21 17:08:50 242

原创 RxJava-操作符

操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件。 RxJava提供了很多很有用的操作符。 我们的观察者的作用是响应,那么数据的变换就要靠操作符来对观察者的Observable对象进行修改来实现了一.Map 特性: 1.它不必返回Observable对象返回的类型,你可以使用ma

2017-03-21 16:15:01 225

原创 RxJava入门篇

RxJava,它是一个响应式编程框架:意味着可以在编程语言中很方便地表达静态或动态的数据流。 基本概念: Observable:发射源,英文释义“可观察的”,在观察者模式中称为“被观察者”或“可观察对象”;Observer:接收源,英文释义“观察者”,没错!就是观察者模式中的“观察者”,可接收Observable、Subject发射的数据;Subject:Subject是一个比较特殊的对象,既可

2017-03-21 16:02:32 215

原创 性能检测使用工具

Android的性能优化的工具,androidStudio自带了三种 1)Memory Monitor获得内存的动态视图,发现大内存对象分配的场景,确定卡顿问题是否因为执行了GC操作 从下图可以清楚的看到突然增加的内存分配,以及内存抖动 2)Heap Viewer显示堆内存中存储了什么,发现内存泄漏 启动方式: 按上图的标记顺序按下,我们就能看到内存的具体数据,右边面板中数值会在每

2017-03-20 17:28:54 356

原创 Service进程防杀

Serviceservice:是一个后台服务,专门用来处理常驻后台的工作的组件。即时通讯:service来做常驻后台的心跳传输。 1.良民:核心服务尽可能地轻!!! 很多人喜欢把所有的后台操作都集中在一个service里面。 为核心服务专门做一个进程,跟其他的所有后台操作隔离。 树大招风,核心服务千万要轻。一、优先级进程的重要性优先级:(越往后的就越容易被系统杀死) 1.前台进程;Fore

2017-03-20 16:40:30 334

原创 Handler机制详解

先上一张图 Handler里面主要的几个元素:Message,MessageQueue,Looper一. Handler的构造方法,会首先得到当前线程中保存的Looper实例,进而与Looper实例中的MessageQueue想关联。 Handler的sendMessage方法,会给msg的target赋值为handler自身,然后加入MessageQueue中。二. Looper主要是prep

2017-03-20 16:38:37 383

原创 解决Fragment嵌套问题

在使用add加载Fragment,并且使用show,hide来控制Fragment,如果没有相关恢复处理,在页面被强杀重启后,就会导致这多个Fragment都是show的形态显示,即多个布局叠加在Activity上 原理: app进入后台、屏幕旋转前、跳转下一个Activity,内存不足被强杀,app崩溃等时候,fragment走了onSaveInstance方法,它保存了`final class

2017-03-20 15:49:35 1262

原创 activity和fragment生命周期

Activity生命周期: onCreate– onReStart(退回该activity的时候使用)–>onStart–>onResume–>onPause–>onStop–>onDestroy1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖其上或被锁

2017-03-20 15:25:11 773

原创 Activity启动模式

1.standard:默认的启动模式,在这个模式下默认创建新的实例 2.singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。3.singleInstance:只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Act

2017-03-20 15:11:05 177

原创 如何高效的加载大图,避免oom

1.设置inJustDecodeBounds 属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap但是可以获取宽高2.通过设置insampleSize,可以设置缩小的倍数mImageView.setImageBitmap( decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 10

2017-03-20 15:07:55 386

原创 Service与IntentService

Service:服务,四大组件之一,重要性不言而喻。 一:它有两种注册方法: 1.通过startServcie开启服务,并不与Service进行绑定2.通过bindService绑定服务,如果服务没有开启,则自动开启。bindService可以使activity与Service进行通信,通信的方法是在activity里创建一个ServiceConnection,里面获得Binder对象

2017-03-20 14:45:19 169

原创 如何使用外部的数据库文件

把数据库放在res/raw,assets目录下,    先把数据库复制到/data/data/包名/databases/,然后通过db.openOrCreateDatabase(db文件)打开数据库

2017-03-20 14:24:10 382

原创 Android布局优化

1.使用viewStub,节省资源消耗2.使用include,可以避免重复的创建布局文件3.使用merge,可以使布局文件在被include的时候少一层嵌套

2017-03-20 14:21:44 183

原创 Android属性动画实战(一)

属性动画,就是通过改变对象的属性产生动画 先看看效果 对象的属性有以下几种:1. Duration动画的持续时间,默认300ms。2. Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的 了,定义动画的变化率。3. Repeat count

2016-04-13 16:40:17 661

原创 Android屏幕适配

一).首先了解下基础知识: 1,屏幕的尺寸(英寸),5英寸,就是指屏幕对角线的长度为5英寸,1英寸约等于2.56厘米 2,屏幕的分辨率:(PX) 就是像素点数,1px = 1像素点 3, 屏幕的像素密度(dpi):就是每英寸的像素点数 他与尺寸和分辨率有关他们三者的关系如下:比如:一个手机的分辨率为 1280*720 它的尺寸为5英寸

2016-04-11 18:28:14 548

原创 Android Studio 中常用的插件

Android 方便大家开发的几个常用插件

2016-04-01 16:12:43 800

原创 Android 常见内存泄漏的解决方案

在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。内存泄漏有什么影响呢?它是造成应用程序OOM的主要原因之一。由于Android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系统分配的内存限额

2016-04-01 14:36:41 652 1

原创 Android5.X (六) : RecycleView

RecycleView:它是谷歌替代ListView的控件,它拥有ListView的item的回收复用功能,但是RecycleView可以把ViewHolder的实现封装起来,我们只要实现自己的ViewHolder就可以了。 跟RecycleView息息相关的几个类有: ViewHodler:需要继承RecyleView的ViewHolder Adapter:适配器:需要继承RecycleVi

2016-01-21 15:56:42 826

原创 线程管理(二)创建线程池管理线程

为什么要用线程池管理线程?那是因为不停的创建线程是非常耗费资源的的一种方法,所以就需要对它进行管理public class ThreadManager { private ThreadManager() { } private static ThreadManager instance = new ThreadManager(); private static final

2016-01-13 16:18:00 293

原创 线程管理(一)AsyncTask与Thread的差别

AsycTask,做Android的应该都是熟悉的不能再熟悉了,当我们在进行耗时操作的时候,就可以使用这个了 但是有的人就在想,Thread不是也可以开一个子线程进行耗时操作吗?那这两个有什么样的区别呢? 那么一起来看下AsycTask源码啦public abstract class AsyncTask<Params, Progress, Result> { private stati

2016-01-13 15:14:20 1452

原创 设计模式-观察者设计模式

观察者模式,是一个比较有用的一个设计模式:通俗的讲就是一个被观察者,多个观察者,被观察者发生了变化,会通知观察者,观察者做出各自的事情。 举个例子: 司马光砸缸的典故我想大家都知道。一个小朋友(被观察者)从水缸的外面掉进了水里,于是开始呼救(发出通知),司马光等(观察者)听到这个呼救的时候就做出各种救命的措施()我们可以看下android自带的源代码:package java.util;publi

2016-01-12 18:10:12 276

原创 数据持久化方案(四)文件保存

文件保存,也算是比较常见的,也比较方便的保存方式。 在Android中,我们可以通过文件保存json数据来实现本地缓存public class FileUtil { public static final String CACHE = "cache"; public static final String ICON = "icon"; public static final

2016-01-12 16:45:22 404

原创 数据持久化方案(三)ContentProvider

数据库在Android当中是私有的,不能将数据库设为WORLD_READABLE,每个数据库都只能创建它的包访问。这意味着只有创建这个数据库的应用程序才可访问它。也就是说不能跨越进程和包的边界,直接访问别的应用程序的数据库。那么如何在应用程序间交换数据呢? 如果需要在进程间传递数据,可以使用ContentProvider来实现。大部分使用ContentProvider操作的数据都来自于数据库,但是

2016-01-11 17:13:03 304

原创 数据持久化方案(二)SharedPerference

在此提供下OrmLite官网的demo地址,有兴趣的同学可以去下载: http://blog.csdn.net/oo8_8oo/article/details/7302156SharedPerference这个东西很是好用,可以用来记录各种状态,以方便在其他的地方进行调用。SharedPreferences sharedPreferences = context.getSharedPreferen

2016-01-11 14:37:53 343

原创 OrmLite的快速使用方案

首先分享给大家一个可以查看sqllite数据库的工具:sqliteexpert,很好很强大的。大家可以下载免费版本的。地址:http://www.sqliteexpert.com/download.html1.Android Studio用户自己在gradle添加以下配置dependencies { compile 'com.j256.ormlite:ormlite-core:4.48'

2016-01-06 15:21:13 1891

原创 Anroid 数据持久化方案

Android有几种数据的保存方案,让我们可以尽量的减少对网络的消耗,优化用户体验。让我来给大家介绍一下吧:1.数据库:Android的数据库使用的是SQLlite,这是一个轻量级关系型数据库。大家既可以继承SqliteOpenHelper来进行数据库的管理,也可以使用第三方框架。我接下来会介绍第三方框架OrmLite的使用2.SharedPreference:轻量级存储:主要用来

2016-01-04 12:02:56 358

原创 自定义控件(六)- 百分比圆形

在自定义控件(2)里面我们做了一个百变的圆形,那我们就以那个为基础,在外边在加一层能根据百分比进行滚动的圆。 1。要在现有的圆外面添加一层滚动的圆弧,那首先我们先给他设置一个方法,让我们知道应该滚动多少 //设置目标的百分比 public void setTargetPercent(int percent) { this.mTargetPercent = percen

2016-01-04 11:16:07 400

原创 自定义控件(五)-自定义Title

虽然说google自己有actionbar,还有toolbar。但是绝大部分的时候我们还是需要自定义统一样式的TitleBar。那么让我们一起来探索怎么定义一个万能的TitleBar吧!(1)我们先把TitleBar 分为三个部分,左边,中间,右边(右边也许有2个按钮)。 并且右边和左边有可能是字,也有可能是图片(2)那么我们就可以定义一下几个属性 1. 是否需要显示左边

2015-12-31 15:13:07 300

原创 自定义控件(四)-下拉刷新与上拉加载

上一节,其实有个坑~不知道大家有木有发现哈,没有好好理解的童鞋可能没有发现。那就是BannerAdapter中的getCount方法,我返回的是100,但是明显100是不可以滴。到100之后,他就不能再进行轮播了!所以需要把100 改成Integer.MAX_VALUE; 接下来就是另一个常用控件:PullToRefreshListView。这玩意虽然用起来挺简单,但是里面涉及的内容还是挺多的。例

2015-12-29 18:10:41 379

原创 自定义控件(三)

有的童鞋可能看了前两节之后,觉得本博客逼格不够高,说的太简单了。那我们就来点干货吧!那么来点经常用到的复合控件:图片轮播~图片轮播,大部分的App里面有这个功能,主要用来播放广告等~那我们来简单的分析一下思路:怎么写这玩意?1.首先他是一个能不断循环,并能通过手指,左右切换!那我们就想到了ViewPager2.下面会有几个白色小点,跟随图片的切换,也不停的切换那我们就可以弄一个

2015-12-28 16:40:39 606

观察者模式最佳实践

观察者模式最佳实践,最实用的栗子,大家快来吃吧

2016-01-13

ContentProvider的快速上手策略

ContentProvider的快速上手策略,让你能快速的上手ContentProvider

2016-01-12

数据库OrmLite

让大家能够快速的使用ormlite,里面有个generalDao类,还有个UserDao类。可以进行增删改查等操作

2016-01-06

自定义-百分比圆形

百分比圆形。支持各种自定义的百分比圆形!

2016-01-04

自定义控件-TitleBar

自定义控件-TitleBar 2015年的最后半天!

2015-12-31

自定义控件-pulltorefresh

pulltorefresh.简单到谁都能看懂!还支持各种模式!

2015-12-30

自定义控件-图片轮播

自定义控件-图片轮播,大家快来下载吧.

2015-12-29

自定义圆形-自定义属性的运用

自定义圆,通过这个,可以让大家更熟悉自定义属性的运用.

2015-12-28

自定义温度计

自定义温度计.初学者学习必备.

2015-12-28

activity跳转动画

activity跳转动画,各位请下载吧

2015-12-25

空空如也

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

TA关注的人

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