自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (19)
  • 收藏
  • 关注

原创 Looger使用

Logger .init(YOUR_TAG) // default tag : PRETTYLOGGER or use just init() .setMethodCount(3) // default 2 .hideThreadInfo() // default it is shown .setLo

2017-03-29 17:26:01 1550

原创 加载控件基本用法

glide Glide.with(context) .load("xxxx.png").into(imageView);9、设置图片大小 .override(int w, int h); 指定加载bitmap的大小,比如原图是500 x 500,into(100, 100),加载出的bitmap就是100 x 100。10、加载完成动画 .animate(Anima

2017-03-29 17:06:31 495

转载 Android Realm数据库完美解析

[置顶] Android Realm数据库完美解析标签: android数据库2016-07-13 13:29 4476人阅读 评论(14)收藏举报本文章已收录于:分类: android(26) 作者同类文章X当我们的app有数据需要保存到本地缓存时,可以使用file,sharedp

2017-03-29 13:53:55 1210

原创 数据语句

-- 创建数据库create table *(id integer primary keyautoincrement,*text,*  real,*  integer) -- 基本查询select * from pet -- 列出指定的列select name, owner form pet -- 直接进行算术运算,对字段起别名select si

2017-03-28 18:42:52 261

转载 魅族手机app无法彻底卸载问题

使用Flyme系统的同学可能会遇到一个问题:卸载了某些软件(例如通过开发者模式调试安装的应用)后,实际这个应用还残留在系统,当你用低版本或者其他签名的apk覆盖安装的时候会提示“安装失败”,要求你卸载后重新安装。可是无论你从应用列表寻找还是清理垃圾,都根本找不到这个应用。闹鬼?这个bug一直伴随着flyme,可怜工程师们竟然一个都没发现。今天笔者教大家一招解决这个问题。不需要R

2017-03-28 11:34:19 5261

转载 Android三种常用动画分享

Android三种常用动画分享标签: Animation动画Property Animation2015-04-21 23:19 1241人阅读 评论(0)收藏举报本文章已收录于:分类: Android 应用(10) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转

2017-03-23 09:53:31 554

转载 Android开发笔记(序)写在前面的目录

[置顶] Android开发笔记(序)写在前面的目录标签: android开发笔记安卓java移动互联网2015-11-24 14:36 5548人阅读 评论(29)收藏举报本文章已收录于:分类: android开发(141) 作者同类文章X版权声明:本文为博主原创文章,未经博主

2017-03-22 18:39:34 723

转载 Android——Framework之Packamanager深析

Android——Framework之Packamanager深析标签: Android FrameworkPackagePackageManagerPackageManager浅析2014-09-09 17:39 1347人阅读 评论(10)收藏举报本文章已收录于:分类: Android Framework学习(2)

2017-03-22 17:03:28 352

转载 Android系统架构——揭开Android系统框架的面纱

Android系统架构——揭开Android系统框架的面纱标签: Android系统Android系统架构Android开发方向 Android学习系统 2014-09-03 15:01 1359人阅读 评论(2)收藏举报本文章已收录于:分类: Android学习(12) 作者同类文章X

2017-03-22 16:55:15 416

转载 收集安卓crash日志

android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地标签: androidandroid开发异常处理2015-05-09 16:58 18293人阅读 评论(11)收藏举报本文章已收录于:分类: Android进阶(21) 作者同类文章X应用发生crash之后

2017-03-22 13:42:02 329

转载 插件化开发-动态加载

插件化开发—动态加载技术加载已安装和未安装的apk标签: android插件动态加载dynamicloadapk2015-07-29 14:20 5121人阅读 评论(16)收藏举报本文章已收录于:分类: 插件化开发与项目架构(7) 作者同类文章X版权声明:本文为博主原创文章,未

2017-03-16 17:27:17 319

转载 插件化

PermalinkBranch: masterSwitch branches/tagsBranchesTagsmasterNothing to showNothing to showFind fileCopy path LearningNotes/Part1/

2017-03-16 16:36:40 368

转载 阿里test--view绘制,Activity启动,等深刻解答

[满满干货]android阿里面试题锦集 2017-03-15何时夕 APP架构师 APP架构师APP架构师 微信号 appjiagou 功能介绍 分享最有价值的APP技术干货文章,做一个有逼格的APP架构师,拒绝平庸,打造最有价值的APP社区! 前几天突然就经历了阿里android实习内推的电面,感觉有好多以前看过的东西都忘

2017-03-15 09:34:06 780

转载 TCP&UDP相关

TCP与UDP面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。面向字节流的话,虽然应用程序和TCP的交互

2017-03-14 16:41:37 573

转载 Android IPC - Binder 学习总结

最近想学些Android Framework中的东西,必经之路就是Binder。Binder并不是Android最早开始使用,它发源于Be和Palm之前的OpenBinder,由Dianne Hackborn领导开发。Hackborn目前在Google工作,他是这样描述binder的:In the Android platform, the binder is used for nearly

2017-03-13 15:26:35 258

转载 Android IPC - AIDL 学习总结

前面一篇文章对Binder的机制进行了总结,但作为一个应用层开发者,其实很少能使用到Binder相关的技术。实际上Android framework为我们封装了Binder,使我们只需要轻松编写Java代码就可以进程间通信了,这个神奇的封装就是AIDL。相信有不少开发者对这个名字都非常熟悉,但让他来讲一下AIDL具体机制和使用场景可能又说不清,那么我们今天就来聊一聊AIDL。Android

2017-03-13 15:23:05 244

转载 java gc分析 founder

想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC, GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。1. JVM内存回收机制1.1. 回收算法标记回收算法(Mark and Sweep

2017-03-13 09:23:52 340

转载 线程&线程池 简略

本文出自 “阿敏其人” 简书博客,转载或引用请注明出处。Android沿用了Java的线程模式,其中线程也分主线程和子线程。一、线程1、主线程和子线程一个程序的运行,就是一个进程的在执行,一个进程里面可以拥有很多个线程。主线程:也叫UI线程,用于运行四大组件和处理他们用户的交互。(主线程就是指进程所拥有的线程,在Java中默认一个进程只有一个线程,那么默认的线程就是

2017-03-09 10:23:33 235

转载 Java gc分析

转文: 一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能。本文将从GC的工作原理、GC的几个关键问题进行探讨,最后提出一些Java程序设计建议,如何从GC角度提高Java程序的性能。 一、GC的基本原理: GC是什么?

2017-03-09 09:36:38 253

转载 volley源码

本文为 Android 开源项目源码解析 中 Volley 部分项目地址:Volley,分析的版本:35ce778,Demo 地址:Volley Demo分析者:grumoon,校对者:huxian99、Trinea,校对状态:完成1. 功能介绍1.1. VolleyVolley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Goog

2017-03-08 18:00:39 194

转载 event源码简介

EventBus 源码解析  作者:Trinea本文为 Android 开源项目源码解析 中 EventBus 部分项目地址:EventBus,分析的版本:ccc2771,Demo 地址:EventBus Demo分析者:Trinea,校对者:扔物线,校对状态:完成1. 功能介绍1.1 EventBushttp://p.codekk.com/blogs/

2017-03-08 14:57:02 254

原创 启动相关

It’s right time to learn Android’s Framework !前言学习目标写作方式主要对象功能介绍主要流程介绍zygote是什么有什么作用SystemServer是什么有什么作用它与zygote的关系是什么ActivityManagerService是什么什么时候初始化的有什么作用Launcher是什

2017-03-07 17:49:11 280

转载 at之asynctask源码解答

在Android开发道路上,有一个类你是无论如何都无法绕过去的。那就是AsyncTask,因为使用的足够简单,在面试中多线程很频繁聊到这个。AsyncTask的使用起始很简单,在源码中类为抽象类 我们只需要复写doInBackground方法即可完成子线程的业务编写。我们从AsyncTask中的方法 onPreExecute()doInBackground() onPostExecute(

2017-03-02 11:05:28 251

转载 androidtest 31

转载地址尊重原作者:http://blog.csdn.NET/cym492224103/article/details/38417927最近才开的博客,希望大家多多关注,andorid开发也做了3年有余了,也面试很多加企业,借此机会分享一下,我们中遇到过的问题以及解决方案吧,希望能够对正在找工作的andoird程序员有一定的帮助。学完本人博客发表《ym--andorid从零开始教程》+面试

2017-03-01 14:52:52 1697

原创 android studio 下载的依赖库位置

2017-03-01 13:45:01 1890

反编译工具,使用连接文章

smali2java是一个将smali代码反编译成java代码的工具,是基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码。还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致。

2020-01-07

YZxing-master.zip

仿微信识别二维码扫描相册二维码,识别率高,界面可以调

2019-11-26

oauth 2 安卓使用

在安卓上使用 oauth 2.0 授权码模式和简化模式 ,欢迎使用

2018-02-27

as下新建分支

新建分支,拉取分支代码,doc文档,分支管理额文档,主要介绍android studio 使用git的方法,很简单,直接上图了

2017-09-11

无限滑动轮播图

无限滑动轮播

2017-06-13

androidstudio打包

androidstudio 打包配置sign截图

2017-05-22

shareproforoschina

同步代码到oschina马云

2017-05-12

viewpager无线轮播

无线轮播viewpager

2017-05-12

viewpager+fragment

viewpager和tab实现主页ui显示

2017-05-11

tab+fragment实现主页

使用tabhost和fragment实现主页显示界面

2017-05-11

recycleview封装

封装recycleview

2017-04-26

SwipeRefreshLayout+listview上拉加载

支持上拉加载,下拉刷新

2017-03-06

安卓框架封装

安卓开发框架 rxjava+retrofit

2017-02-23

安卓 permiss

动态申请权限

2017-02-22

百度定位周边位置

百度地图获取周边位置

2017-01-09

微信登录及lib库

微信登录实例代码及lib库

2017-01-04

pulltorefresh_library使用

一个用于下拉刷新的开源框架,使用这个框架之后可以非常简单的实现下拉刷新,里面集成多种控件的刷新功能

2016-12-10

org.apache.tools.zip解决解压乱码问题

package com.cliff.common; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; /** * * 类名: ZipUtil.java * 描述:压缩/解压缩zip包处理类 * 创建者:XXX * 创建日期:2015年5月7日 - 下午1:35:02 * 版本: V0.1 * 修改者: * 修改日期: */ public class ZipUtil { /** * * 功能描述:压缩文件 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:35:18 * 版本: V0.1 * 修改者: * 修改日期: * @param directory 指定压缩文件路径 压缩到同目录 * @throws IOException * void */ public static void zip(String directory) throws FileNotFoundException, IOException { zip("", null, directory); } /** * * 功能描述:压缩文件 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:36:03 * 版本: V0.1 * 修改者: * 修改日期: * @param zipFileName 压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名 * @param relativePath 相对路径,默认为空 * @param directory 文件或目录的绝对路径 * void */ public static void zip(String zipFileName, String relativePath, String directory) throws FileNotFoundException, IOException { String fileName = zipFileName; if (fileName == null || fileName.trim().equals("")) { File temp = new File(directory); if (temp.isDirectory()) { fileName = directory + ".zip"; } else { if (directory.indexOf(".") > 0) { fileName = directory.substring(0, directory.lastIndexOf("."))+ "zip"; } else { fileName = directory + ".zip"; } } } ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(fileName)); try { zip(zos, relativePath, directory); } catch (IOException ex) { throw ex; } finally { if (null != zos) { zos.close(); } } } /** * * 功能描述:压缩文件 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:37:55 * 版本: V0.1 * 修改者: * 修改日期: * @param zos 压缩输出流 * @param relativePath 相对路径 * @param absolutPath 文件或文件夹绝对路径 * @throws IOException * void */ private static void zip(ZipOutputStream zos, String relativePath, String absolutPath) throws IOException { File file = new File(absolutPath); if (file.isDirectory()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { File tempFile = files[i]; if (tempFile.isDirectory()) { String newRelativePath = relativePath + tempFile.getName() + File.separator; createZipNode(zos, newRelativePath); zip(zos, newRelativePath, tempFile.getPath()); } else { zipFile(zos, tempFile, relativePath); } } } else { zipFile(zos, file, relativePath); } } /** * * 功能描述:压缩文件 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:38:46 * 版本: V0.1 * 修改者: * 修改日期: * @param zos 压缩输出流 * @param file 文件对象 * @param relativePath 相对路径 * @throws IOException * void */ private static void zipFile(ZipOutputStream zos, File file, String relativePath) throws IOException { ZipEntry entry = new ZipEntry(relativePath + file.getName()); zos.putNextEntry(entry); InputStream is = null; try { is = new FileInputStream(file); int BUFFERSIZE = 2 <= 0) { zos.write(buffer, 0, length); } zos.flush(); zos.closeEntry(); } catch (IOException ex) { throw ex; } finally { if (null != is) { is.close(); } } } /** * * 功能描述:创建目录 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:39:12 * 版本: V0.1 * 修改者: * 修改日期: * @param zos zip输出流 * @param relativePath 相对路径 * @throws IOException * void */ private static void createZipNode(ZipOutputStream zos, String relativePath) throws IOException { ZipEntry zipEntry = new ZipEntry(relativePath); zos.putNextEntry(zipEntry); zos.closeEntry(); } /** * * 功能描述:解压缩文件 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:39:32 * 版本: V0.1 * 修改者: * 修改日期: * @param zipFilePath zip文件路径 * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * void */ public static void unzip(String zipFilePath, String targetPath) throws IOException { InputStream is = null; FileOutputStream fileOut = null; File file = null; ZipFile zipFile = null; try { zipFile = new ZipFile(zipFilePath,"GBK"); String directoryPath = ""; if (null == targetPath || "".equals(targetPath)) { directoryPath = zipFilePath.substring(0, zipFilePath.lastIndexOf(".")); } else { directoryPath = targetPath; } for(Enumeration entries = zipFile.getEntries(); entries.hasMoreElements();){ ZipEntry entry = (ZipEntry)entries.nextElement(); file = new File(directoryPath+"/"+entry.getName()); if(entry.isDirectory()){ file.mkdirs(); }else{ //如果指定文件的目录不存在,则创建之. File parent = file.getParentFile(); if(!parent.exists()){ parent.mkdirs(); } is = zipFile.getInputStream(entry); fileOut = new FileOutputStream(file); int readLen = 0; byte[] buffer = new byte[4096]; while ((readLen = is.read(buffer, 0, 4096)) >= 0) { fileOut.write(buffer, 0, readLen); } fileOut.close(); is.close(); } } zipFile.close(); } catch (IOException ex) { throw ex; } finally { if(null != zipFile){ zipFile = null; } if (null != is) { is.close(); } if (null != fileOut) { fileOut.close(); } } } /** * * 功能描述:生产文件 如果文件所在路径不存在则生成路径 * 创建者:XXX * 创建日期: 2015年5月7日 - 下午1:41:04 * 版本: V0.1 * 修改者: * 修改日期: * @param fileName 文件名 带路径 * @param isDirectory 是否为路径 * @return * File */ public static File buildFile(String fileName, boolean isDirectory) { File target = new File(fileName); if (isDirectory){ target.mkdirs(); } else { if (!target.getParentFile().exists()) { target.getParentFile().mkdirs(); target = new File(target.getAbsolutePath()); } } return target; } }

2015-12-02

阿里巴巴图片处理simpleimage-1.2.3.jar

阿里巴巴图片处理simpleimage-1.2.3.jar

2015-12-02

空空如也

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

TA关注的人

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