自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dapangzao的专栏

不重复造轮子还是不会造轮子

  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 java 虚拟机垃圾回收

本文总结自《深入理解Java虚拟机》一书。主要是对java虚拟机GC哪些内存区域以及如何回收等内容作出整理。一、GC回收哪些区域前文Java虚拟机内存划分与各区域OOM中描述了Java虚拟机内存的划分,包括:与线程有关的程序计数器、虚拟机栈和方法栈,以及与线程无关的堆、方法区。其中,程序计数器、虚拟机栈以及方法栈生命周期与线程相关,线程结束时内存也跟着被回收。虚拟机栈中的栈帧随方法执行入栈出...

2019-01-03 20:57:20 435

原创 Java虚拟机内存划分与各区域OOM

本文总结自《深入理解Java虚拟机》一书。主要是对java虚拟机运行时各数据区域作用以及何时抛出何种异常等内容作出整理。一、运行时数据区想想还是先上一张表格,照着表描述思路更清晰:数据区线程私有作用异常程序计数器是记录当前线程执行到的字节码行号无任何异常虚拟机栈是存放栈帧(方法执行时的基础数据结构,存储局部变量表等信息)以及入栈出栈Stackover...

2018-11-16 10:54:39 413

原创 Java线程池ThreadPoolExecutor使用与源码解析

这里写自定义目录标题ThreadPoolExecutor新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表asdasd创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

2018-10-24 14:19:01 334

原创 快来封装RecyclerView通用适配器Adapter

做上一篇的RecyclerView实现侧滑删除的时候,还没考虑过封装RecyclerView.Adapter,因为google已经帮我们把ViewHolder给封装成了一种内部用的机制。

2018-07-09 10:46:03 600 1

原创 Android RecyclerView实现侧滑删除

距上次写博客有半年多了,回忆起来都觉得不可思议,中间也想憋俩大招,总是被耽误,这俩月忙完之后,终于空下来了,恰好新项目我和UI俩人商量一下,用MD来实现app。中间有个需求是RecyclerView中侧滑显示删除按钮,点击删除。于是就有了这篇博客。 欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Mark...

2018-06-01 15:01:35 50163 26

原创 Android 图片压缩

先吹会逼。这俩月一直在磨叽工作的事情,也没时间静下心来搞点事。从9月初到现在10月底,现在到新公司俩星期了。首先庆贺一下我终于来到魔都了,希望自己能迅速适应新的环境,还有就是技术水平更上一层楼。嗯,然后,没有然后了。概述最近,领导给我提了一个需求,就是我们现在的项目经常需要用到拍照上传的功能,差不多一天少说20多张吧,如果一张照片500k来算,一天10M,一个月也得300M,这还不算其

2017-10-19 18:01:46 334

原创 Android 性能优化

这两天准备换工作,看了一下招聘条件,很多任职要求里有这样的需求,即熟悉Android内存管理机制,以及相应的处理方法。因此在这里做出汇总,以做记录和参考。里面很多都是从书籍或者博客中以及Android文档中摘录过来的。一、内存管理机制很多人其实平时在项目中都有接触到内存管理的相关代码,但是并不了解这样做的目的是什么。Android内存管理,主要分为内存分配与内存回收。1. 内存分配

2017-09-08 17:53:02 380 1

原创 Android异步任务AsyncTask完全解析

一、概述AsyncTask,大家应该都用过,之所以说用过,因为现在第三方开源库有不少,异步任务框架(比如RxJava等)做的都很完善,也避免了AsyncTask的一些弊病。但是AsyncTask还是有很多使用者的。而在Android开发文档中也推荐使用它来完成异步任务。简单使用private class DownloadFilesTask extends AsyncTask<URL, Integer

2017-08-31 18:05:09 475

原创 Android波纹进度条 轻松地让它浪起来

一、概述最近项目来个需求,波纹进度条。想起来之前看到的一些实现,也想了一下原理啥的,就自己写个吧。不过为了适配以后更多各种不规则的波纹进度条,因此需要能适配各种不同png图片的波纹进度条。1. 效果图no picture say a j8!2. 原理分析波纹进度条,不外乎一张背景bitmap,一张进度波纹bitmap。之后则不停的向一个方向循环移动波纹即可。如下图(...

2017-08-30 16:59:02 3201

原创 Android消息队列源码解析(Handler、Looper、Message、MessageQueue)

前言说到Android的消息队列,大家或多或少都能说个大概,原理啥的在网上一搜就是一大堆。记得之前刚毕业有次面试的时候被问到这个问题,当时我也只是从网上了解到原理,就按照记忆说了。后来面试官又补充问了一句,Handler有什么用,我说,可以在别的线程更新主线程UI。他问还有么,我一脸懵逼。好了,闲扯到此,本文带大家从源码角度看看Handler机制的实现与到底有什么用。一、Handler的简单使用直接

2017-08-28 17:48:33 457

原创 Android4.4(KITKAT API19)之后文件URI解析

前言这个月app改版,忙了大半个月。最近在想,之前写的博客有部分都是笔记,纯粹是为了记笔记。我想这样大家看起来有时甚至觉得云里雾里的。以后写博客,尽量就是按照为大家解决问题的方式来写,当然笔记肯定还是会有,但是会尽量解释清楚大概的用途,贴近实际的操作,能让大家从中有收获。一、从相册中选择照片这个需求,大家都不陌生,比如做个人中心时拍照或者从相册选择图片。代码也很简单:package com.exam

2017-08-25 16:10:57 853

原创 简单实现ButterKnife(编译时注解)

上一篇博文写了运行时实现ButterKnife:教你实现ButterKnife(运行时注解),这篇讲讲关于编译时注解实现ButterKnife,如果你还不了解在AndroidStudio实现编译时注解,请参考我另一篇博文:Android 编译时注解。一、概述运行时注解,实现原理很简单,就是通过java反射机制获取view的id,然后实例化后再注入即可。但是编译时注解,由于注解只保留到c

2017-07-27 17:11:06 1102 1

原创 简单实现ButterKnife(运行时注解)

现在ButterKnife最新版本其实是基于编译时注解实现的,很大原因是处于对java反射机制效率的诟病,这里我主要是想使用运行时注解来实现ButterKnife的功能。在后面还会有一篇关于ButterKnife(8.7.0)的最新版本编译时注解的实现方式。一、运行时注解java运行时注解是基于java的反射机制,就是在运行时,动态的获取类的方法、变量等信息以及进行相关操作的一种机制。但是这种机制效

2017-07-25 17:42:32 934

原创 Android 编译时注解

这两天浏览博客,看到关于ButterKnife的源码解析,提到了编译时注解这个技术点,貌似还没玩过,就跳着翻看了一下《Think in Java》的注解章节,作者是基于java5.0来进行注解相关的讲解,但在jdk1.8中已经将apt工具抛弃,且使用新的api,于是,就到网上搜寻一翻,经过两天的研究,终于把整个编译时注解开发流程摸清,在此做出记录。一、概述具体的注解相关概念就不赘述了。说

2017-07-20 16:47:22 735

原创 MPAndroidChart使用详解

本文讲述对MPAndroidChart的使用,大部分是从其文档中摘录过来的。版本3.0.2一、MPAndroidChart概述MPAndroidChart 是一款专门用于Android绘制图表的库,相当强大,当然也有IOS的版本。GitHub上地址:Git-MPAndroidChart 。 其特点如下:支持8中不同图表类型支持轴上的缩放可拖动、平移可定制轴可突出选中的值(瞄准点及弹出po

2017-07-11 13:45:57 35140 31

原创 自定义Tab + ViewPager控件

看了关于自定义控件的很多视频还有书籍等,也写了不少自定义控件。拿出来与大家共享一下。一、概述1.前言直奔主题吧,我们当同一个页面内容过多时,比如新闻类app,要分很多栏目,但是在同一个activity中显示,这时需要tab栏+ViewPager+Fragment来实现这样的效果。因此在此处来讲述一下这个tab栏的实现。这个很早以前做的,很多地方都忘了,也当时回顾一下吧。当时做的时候是参考的Hongy

2017-07-04 14:16:07 854

原创 软键盘输入最佳实践

这章记录下Android软键盘的使用1.指定输入的文本类型在EditText中指定android:inputType,比如指定为password,即为密码,会不可见明文。 看一下可以指定的输入类型: 常量(xml中使用) 代码中设置值 描述 date TYPE_CLASS_DATETIME | TYPE_DATETIME_VARIATION_DATE

2017-06-30 10:35:00 599

原创 Android-Universal-Image-Loader源码解析

Android-Universal-Image-Loader这个框架是我接触的第一个Android图片加载框架,用的比较多,因此选择这个作为第一篇源码解析的框架。一、基本用法1.在Application中进行init操作/** * 初始化Universal-Image-Loader */private void initImageLoader() { DisplayI

2017-06-23 16:14:00 590

原创 Android增量更新

一、增量更新1.概述增量更新,是指通过分析出新apk与旧apk之间的增量文件,然后提取老版的app安装文件,并与增量文件合成新的安装包,之后重新安装即可。增量更新可以让我们不必加载整个安装包,即可实现app的更新,节省了不少流量,提供更佳的用户体验。有些应用市场,就是通过此方式实现流量的节省。2.实现步骤1)利用新apk与旧apk生成增量文件;2)提取手机上的旧apk;

2017-06-21 08:48:26 328

原创 IntentService使用详解

一、IntentService1.概述部分新手会认为(我刚开始也是这么认为的),Service因为不用于与用户直接交互,所可以直接处理比较耗时的操作,比如网络连接等。其实不然,Service虽然不与用户交互,但是其仍是运行在主线程中,因此,Service如果操作时间过长,则会出现ANR。为了解决这个问题,Android官方给出了一个新的Service,用于处理长时间的后台任务,即Inten

2017-06-19 09:49:44 469

原创 管理系统UI(StatusBar、NavigationBar)

这章讲讲常用的系统UI管理,包括StatusBar,NavigationBar。一、概览在看到这块时,感觉很常用,就记下来了。主要就是系统操作栏的隐藏、显示等操作。做工精细的app会对这些有要求。相关名词:StatusBar,状态栏,即顶部的一小块显示网络,电量,应用通知图标等的区域。NavigationBar,导航栏,即底部的有返回,home等操作按钮的区域,有的没有。像华为

2017-05-27 17:03:11 727

原创 Android无缝设计

一、Android无缝设计尽管我们自己的应用可以独立的设计很好,但是还是要考虑到系统及其他应用对自己应用的干扰,比如,一些意外的dialog提示,数据丢失,线程死锁等等。常见的就是其他应用的一些后台进程会弹出一些奇怪的东西,会让你的应用突然失去焦点。当然我们自己的应用也要考虑这一点。通常情况下,我们设计应用时,应当采用Notification而不是直接弹出的形式来通知用户事件发生而不是打断

2017-05-25 09:58:08 311

原创 多屏幕最佳实践

一、概览Android支持不同屏幕尺寸和密度,系统会将界面调整为适合的屏幕尺寸,同时也可以针对特定的屏幕进行支持。但是为了有更好的用户体验,开发者应当针对不同尺寸和密度进行优化。1.相关概念屏幕尺寸:屏幕对角测量的实际物理尺寸。方便起见,Android将所有屏幕尺寸分为4种通用尺寸:小、正常、大和超大;屏幕密度:屏幕物理区域中的像素量,通常称为dpi(每英寸点数)。分为6种通用密度

2017-05-24 09:57:54 368

原创 WebView使用

一、WebView1.概述WebView是View的子类,用于在布局中部分展现网页。常用的地方,比如购物app,商品详情页面,就可以使用WebView。2.使用布局:<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" and

2017-05-22 13:51:57 420

原创 Android数据存储

本文主要讲述各种存储方式,基本都是常用的。在此进行记录。一、存储1.概述Android提供了多种方式来持久化数据,以及提供对数据的安全保护。主要包括:1)SharePreference:用于保存键值对;2)内部存储:在内部存储器中保存私有数据;3)外部存储:在共享外部存储中存储公共数据;4)SQLite数据库:在私有数据库中存储结构化数据;5)网络连接:在网络服务器

2017-05-19 16:00:28 368

原创 Android复制粘贴详解

一、复制与粘贴框架1.概览Android提供了一个基于剪切板的复制粘贴框架。支持字符串、复杂数据结构、文本与二进制数据流,以及应用assets的剪切。只有文本可直接存储到剪切板,其他存储为content provider。剪切板支持Text、URI、Intent三种形式的剪切对象。看到这三个,就大概知道了该怎么解析出需要的数据了。剪切板一次仅存储一个剪切对象,再存储另一个,之前的则会消失。

2017-05-19 10:46:26 23614

原创 FileProvider文件共享

本文是在查看Android文档关于拍照与文件共享知识,看到关于FileProvider相关内容后,尝试使用并遇到一些问题时决定做的笔记。一、FileProvider1.FileProvider的出现Android7.0之前,使用file://URI通常会给出该文件的全部访问权限,这是不安全的,应该只有应用自己才有权限。在7.0之后,为了更好的保护用户隐私,不再使用file://URI来

2017-05-18 11:46:35 4287

原创 Android 多媒体相关

本文是介绍关于Android多媒体的使用的文章,总结于官方文档。拍照会另外写一篇博客。一、MediaPlayerMediaPlayer是安卓multimedia framework提供的用于播放多媒体的类。可以用于播放音频,视频等多媒体文件。支持应用raw资源内的文件、本地文件系统中的文件以及网络上获取的数据流。下面讲讲使用。1.mediaplayerMediaPlayer类是me

2017-05-11 17:03:08 380

原创 Canvas与Drawable绘制图形

一、图形展示Android中提供两种方式来绘制图形到view上。1.将Drawable(包括图片、动画等)绘制到view对象如图片,图形,动画等,适用于一些实现简单且不需要动态改变的图形,比如动画,shape等。Drawable是可绘制图形的抽象。其可以定义各种可绘制图形,包括ShapeDrawable、BitmapDrawable等等。当然也可以自定义一些drawable对象。

2017-04-18 15:01:59 10544

原创 View动画、Drawable动画

一、View动画View动画即补间动画。补间动画通过起始和终止的位置等属性计算动画。补间动画可以对View对象的内容进行简单的转换,如位置,大小,旋转,透明度。如果View有背景也会随之变化。可以使用XML或代码中定义View动画。推荐用XML,比硬编码方式更具可读性以及可重用行。View动画可以指定动画方式,开始时间,持续时间,顺序还是同步的。XML文件放在res/anim中

2017-04-18 11:47:15 271

原创 Android动画之属性动画

一、属性动画属性动画是Android提供的一个强大的框架,可以用于任何随时间而变化的对象,不论是否是View。包含以下特征:持续时间(Duration):可以用于指定动画持续时间,默认300ms;时间插值:用于指定当前已用时间,属性值的计算方式;重复计数和行为:指定动画完成时是否要重复以及要重复的次数,还可以指定是否反向执行动画;动画集合:可以组合一组动画,并指定其同时播放

2017-04-17 11:34:28 377

原创 Android通知(Notification)使用详解

一、通知(Notification)通知是可以在应用常规UI外部向用户显示的消息。通常使用NotificationCompat.Builder对象构建UI信息和操作,调用NotificationCompat.Builder.build()返回具体的Notification对象,最后通过调用NotificationManager.notify()将Notification对象传递给系统。N

2017-04-11 11:38:28 2845

原创 Android对话框使用详解

一、dialog对话框是提示用户做出决定或输入额外信息的小窗口。Dialog类是对话框的基类,但应避免直接实例化Dialog,而应选择以下三种:AlertDialog:可显示标题、最多三个按钮、可选则列表项或自定义布局;(直接在此使用Edittext可能无法输入文本,需要自定义实现Dialog)DatePickerDialog:选择日期的预定义UI;TimePickerDi

2017-04-11 10:34:05 766

原创 Android资源使用详解

一、资源访问Android编译时,aapt工具将生成R类,res/目录中所有资源id都在该类中,并且每个资源类型都有相应的R子类。资源id由两部分组成,资源类型,如string,drawable等,以及资源名称,一般是文件扩展名,如果是简单值就是android:name的属性名称。访问资源有两种方式:代码中,用R.资源类型.资源名。如,R.string.hello;XML中,用于R

2017-04-01 14:14:17 383

原创 Android资源分组及匹配详解

资源:代码中使用到的文件,静态文本。包括位图,布局文件,字符串,动画等等。开发中,应当外部化资源,如图像和字符串,有利于维护资源。同时必要时也可以为不同设备提供支持。一、资源分组1.默认资源:MyProject/ src/ MyActivity.java res/ drawable/ graph

2017-04-01 09:32:14 1946

原创 Android进程和线程

一、进程和线程当某应用组件启动且该应用没有运行其他任何组件时,Android系统会使用单个执行线程为应用启动新的Linux进程。默认情况下,同一应用内的所有组件运行在相同的进程和线程中,即主线程。但是可以指定应用中的组件在单独的进程运行,并为任何进程创建额外线程。二、进程四大组件均可以通过android:process属性,指定其运行的进程。还可以使一些组件共享进程。此外,使不同应用的

2017-03-30 15:43:10 317

原创 AIDL详解

一、ADIL介绍AIDL(Android 接口定义语言)。可以定义客户端与服务使用IPC进行交互通信时都认可的编程接口。Android中无法访问另一个进中的内存。尽管如此,远程需要将其对象分解为操作系统能够识别的原语,并将对象编组成跨越边界的对象。编写执行这一编组操作的代码是繁琐的,因此Android会使用AIDL来处理。注意:只有允许不同应用的客户端用IPC方式访问服务,且要在服务中处理

2017-03-28 10:42:28 1233

原创 绑定Service专题

一、绑定服务绑定服务时客户端-服务器接口中的服务器。绑定服务可让组件绑定到服务、发送请求、接受响应,甚至执行进程间通信(IPC)。绑定服务只在为其他应用组件服务时处于活动状态,不会一直在后台运行。绑定服务仍是Service类的实现,可让其他应用绑定,通过实现onBind()回调方法,返回IBinder对象作为客户端与服务进行交互的接口。客户端通过bindService()绑定到服务。调

2017-03-24 16:56:37 361 1

原创 Service详解

一、Serviceservice是一个可以在后台长时间运行操作而不提供用户界面的应用组件。形式:启动:当组件通过startService()启动服务,即处于启动状态。启动之后,服务可以在后台一直运行,即使启动服务的组件已被销毁也不受影响。一般服务通常只执行单一操作,而且不会讲结果返回给调用方。启动服务要实现onStartCommand()回调。绑定:当组件通过bindService

2017-03-24 13:51:53 505

原创 ContentProvider使用详解

一、ContentProviderContentProvider:内容提供程序,提供安全的数据访问机制,支持跨进程通信(IPC),主要用于像别的应用提供数据。通过Context中ContentResolver对象作为客户端来与contentprovider进行通讯,一般就是对其数据的CRUD操作。Android本身提供了音频、视频、图像和个人联系信息的contentprovider。con

2017-03-23 16:39:39 1571

自定义tab栏控件,可与ViewPager联动

自定义tab栏控件,可与ViewPager联动

2017-07-04

android增量更新native方法c实现

android增量更新native方法c实现部分,参考我的博客里关于增量更新的介绍

2017-06-21

windows下bsdiff与bspatch

windows下可以直接执行的bsdiff与bspatch工具

2017-06-21

Android波纹进度条

一个自定义波纹进度条,有默认的圆形边框,蓝色波纹进度。也可以高度定制,甚至是图片不规则背景皆可以

2017-03-31

空空如也

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

TA关注的人

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