自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 OkHttp流程之Dispatcher

OkHttp的基本流程android 开发大多用过Okhttp, 在使用过程中,大多也是同步异步两种方式。一般使用方式如下(基于3.14.2版本):public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");OkHttpClient client = new OkHttp...

2020-04-08 18:08:09 1142

原创 Android图片内存计算方法

Android图片内存计算方法前言我们在做项目的时候,内存是一个绕不过去的话题。有时候同样一个app在不同的手机上运行内存差距好大,其中一个原因就是同一张图片在不同的手机中占用内存是不一样的。如果app中本地图片较多的情况下。你将图片放到drawable目录中,然后再将其盖到mipmap-xxhdpi目录中,你惊奇的发现,内存差距比你想象的打。那么这个时候我们就会有疑问 疑问一张100...

2020-04-05 10:55:41 733

原创 自定义view(五) 属性动画的使用及自定义 ,仿直播中花束点赞效果

目录 属性动画与视图动画区别 实现过程 API简介 仿花束点赞效果 总结 属性动画与视图动画区别 1 视图动画只能是view使用,对view做出相应的变换,但是属性动画作用于Object,任何对象都可以。2 视图动画只是改变了视觉效果,但是并没有改变其物理属性,比如button坐标在(100,100,300,300),通过位移进行移动,但是他的可点击区域...

2018-11-17 23:41:23 375

原创 自定义view(四) 动画的使用及自定义 ,仿qq抖动

目录 简介 视图动画使用 qq抖动 总结 简介 在前面的文章中我们写了view中的图形的绘制以及水波纹的效果,从中我们可以看出做一些稍微复杂的效果都需要用到动画的功能,在android系统api1中提供了视图动画,在api11的时候提供了属性动画,接下来我们就开始讲讲基本的动画功能。 视图动画使用 通过官网我们可以看到视图动画,可以简单分为两类,补间动...

2018-11-15 11:33:18 270

原创 自定义view(三) 贝塞尔曲线 水波纹效果实现

目录 前言 api分析 水波纹效果 前言 在上面的博客中说了path的绘制,path绘制, 介绍了除了贝塞尔曲线的其他情况。 在这里单独介绍一下贝塞尔曲线。贝塞尔曲线是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝塞尔曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞...

2018-11-12 16:41:56 524

原创 自定义view(二) Path绘画详解 圆形进度条

   目录 简介 基础api 圆形进度条 总结 简介        view的绘制可以由无数个形状组成,在canvas基础图形绘制中,我们已经把api提供好的基本图形讲过了。Path之所以单独一章出来是因为path可以由我们自己定义形状。在绝大多数情况下,只靠上篇文章中讲的那些图形并不能实现设计师设计出来那些优美炫酷的效果。当然对于一个炫酷的效果,path...

2018-10-25 23:44:02 942

原创 自定义view (一) Android Canvas详解

目录坐标系以及view的位置信息API简介Canvas基本操作Canvas变化save和restore分层的概念layer总结 坐标系以及view的位置信息          自定义view在平时有很多应用,我们知道自定义view,其实就是通过Canvas进行绘制,但是在绘制之前,一些基本的知识要明确,安卓的坐标系和我们实际在数学中用的坐标系还有一些区别, 在...

2018-10-24 14:19:22 1029 1

原创 LinkedHashMap源码解析(二)

前言        前文中已经解析了LinkedHashMap的插入操作,LinkedHashMap源码解析一,接下来我们接着看它剩余的操作。 取数据操作        首先我们看linkedHashMap的get的2个方法 public V get(Object key) { Node<K,V> e; //第一步是直接使用Has...

2018-10-14 10:54:34 530

原创 LinkedHashMap源码解析(一)

目录简单概念源码 简单概念        上面一篇博客分析了Lrucache的实现原理,我们知道他是通过自己实现同步,然后利用LinkedHashMap来实现的Lru功能。这篇文章就分析一下LinkedHashMap,首先说说它的一些基本的概念(基于jdk1.8)。        1 首先它是一个关联数组,哈希表。他不是线程安全的,key和value可以为空,这也是与hash...

2018-10-13 16:57:14 2339

原创 Lrucache 源码解析

LRU原理使用方法源码分析总结  LRU原理         LRU全称为Least Recently Used,即最近最少使用,是一种缓存置换算法。大家都知道在各个图片加载的第三方框架中都有他的身影。在各个加载工具流行之前,这个算法还是比较常用的。当然现在不用我们手写了。每个框架都封装的很好。我们前面分析glide的框架,他的缓存机制也是由lru缓存和软引用组成的。在这...

2018-10-10 23:44:07 333

原创 java中int与byte相互转换

基础内容简介      在做转换之前先要明确几个简单的概念。首先本文是以java为语言,以int为例子。 long数据类型在原理上是一致的。     1  int 在java中是32位, byte是8位。     2  原码,反码,补码简介         原码:就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值。         反码:在原码的基础上,...

2018-09-21 13:44:31 109569 9

原创 Android 全局异常处理

简介         app崩溃,这个是大家都会遇到的问题,如果是我们自测,这个easy,我们很容易根据日志找到原因。但是有的时候并不会那么理想。 比如本人要和一个国内电视机厂商合作,因为应用都是内置到系统,并且一个人负责几个app。因为不在同一个城市,每次整机升级的时候都很痛苦。因为对方的测试也的确要测试很多东西。他们基本没时间帮你抓日志。直接把系统日志抛出来,基本都是那种20m以上的日...

2018-09-18 15:48:33 1359

原创 android 跑马灯效果

     在项目中经常遇到跑马灯的效果需求,这是一个很简单的效果了。 并且安卓本身的api就是支持的。不多说了。直接上代码: <com.project.practice.MarqueeTextView android:layout_width="wrap_content" android:layout_height="wrap_content" ...

2018-09-05 22:45:16 2426

原创 Glide 4.7.1 使用详解(一)

目录前言Glide特点Glide导入 使用方法通过RequestOption设置属性 加载图片的回调函数过度选项变换自定义GlideModule加载gif总结 前言        图片加载框架目前用的比较多的是picasso和glide, 其中谷歌官方也比较推荐glide, 在前文中已经分析了picasso的原理,在这里我们就开始分析一下pic...

2018-09-05 11:03:56 9753 1

原创 picasso使用详解与原理(二)

目录​​​​​​​​​​​​​​​​​​​​​前言流程简介源码分析 前言       上一篇博客picasso使用详解(一)详细介绍了picasso的各种使用方法与他的一些特性,这次从源码的角度详细讲解他的流程和原理。它的整体流程可以分为2个部分,一个是设置加载条件,确定需要展示的图片的各种属性,第二是加载然后对图片进行实际的处理,然后显示到目标对象上。 流程简介 ...

2018-08-31 11:31:00 781

原创 picasso使用方法与原理分析(一)

前言        安卓开源的图片加载框架有很多。最初的imageloader(目前已经不再维护),目前的picasso, glide。picasso和glide在加载展示图片这个模块其实相似度蛮高,谷歌也在很多项目中使用了glide。但这并不是说glide就在任何项目都是最适合的,我们必须在理解每个框架的原理的基础上选择适合我们的框架。接下来的几篇文章会通过分析picasso与glide...

2018-08-24 15:33:07 4903

原创 android studio 快捷键

目录前言ctrl+c 复制ctrl+v 粘贴ctrl+x 剪切ctrl+y 删除一行ctrl+d 集合了复制粘贴的功能,自动复制选中行。shift+ctrl+向上箭头, 向上移动某一行shift+ctrl+向下箭头, 向下移动某一行ctrl + / , 表示以 //注释选中行,只是注释某一行shift+ctrl+/ , 表示以/**/注释选中的代码,可以是多...

2018-08-21 22:22:09 251

原创 Android dex分包方法简介

目录 什么是dex为什么用到分包 mutidex使用方法 什么是dex         Dex就是Dalvik VM executes的全称,可以认为是安卓虚拟机的可执行程序。 为什么用到分包          大致可以分为2个原因。        1 dex中包含的方法囊括了所有依赖的jar包和源码中的方法。在稍微大一些的项目中,这个方法数目是很可观的。而...

2018-08-16 12:36:04 1047

原创 webview添加header,cookie 和性能优化

目录webview优缺点       webview添加headerwebview添加cookieWebView的启动优化webview的缓存,节省内存减少流量参考文档: webview优缺点                app中使用h5可以使内容更新更加灵活。周期更短。并且代码量也少,是apk的体积变小。但是同时也存在性能的问题。打开白屏还有加载慢更加耗流量的...

2018-08-14 12:22:39 9291

原创 android widget 开发

   因为项目中需要用到widget,所以在这里大致记录一下widget的使用流程。因为没有深入的研究,所以仅仅是做一个大概的解析,因为需求简单,这里就不介绍RemoteViewService和RemoteViewFactory了,如果需要的不要浪费时间看下去,抱歉各位。widget也叫小部件,是一个微型视图,其实在手机launcher中的表就是个widget。在开始流程之前需要明白两个概念:...

2018-08-10 17:36:24 4369

原创 EventBus 3.0 使用详解源码分析(三)

目录前言Post流程总结 前言             前面的文章已经写完了注册流程,现在开始写post流程,如果没有看过的读者,可以通过eventbus注册流程传送。 Post流程            首先EventBus#getDefault()获取实例,而在这里还有一个初始化的方法,通过EventBusBuilder来实现初始化: public Eve...

2018-08-09 09:35:50 224

原创 EventBus 3.0使用详解源码分析(二)

前言        EventBus可以看成主要由两个部分组成,观察者和信息发布者。大致的流程是,android组件通过register方法注册成观察者,并通过注解@SubScribe注明处理消息的函数,eventbus会把所有的观察者和观察者中处理消息的函数保存在map中,当发布消息的时候,会根据发布消息的对象类型来检索哪些对象和方法需要处理此类信息,然后通过反射Method的invok...

2018-08-07 16:53:27 143

原创 EventBus 3.0使用详解源码分析(一)

目录  Eventbus前言 EventBus简介 EventBus使用  Eventbus前言         在项目开发中,总会遇到组件和组件之间,组件和线程、service之间进行通信,比如activity和多个fragment通信。android 原生也提供了一下方法,我们经常用的,有广播,handler,写回调方法以及intent。这些都可以解决通信需求,但是这...

2018-08-07 10:23:11 229

原创 android studio运行java程序

   在写程序的时候总会遇到测试一个小的功能或者算法,这个时候如果每次都通过运行android程序来测试就太浪费时间了。studio也可以直接运行java程序。下面就直接贴步骤: 1 在已经建立的项目中添加新的module,然后选择JavaLibrary 2 填写新的module的信息,然后会生成对应的module和类,这个时候会有新的build.gradle生成 ...

2018-07-30 17:25:02 4280 1

原创 使用android studio遇到的一些问题

目录目录升级到studio3.1.2之后无法编译jar包在build文件注明仓库来源依然无法编译某些glide等github开源项目implementation api compile的区别项目不停的indexing的解决方法         解决gradle.api.internal.tasks.compile.CompilationFailedException: Co...

2018-07-30 10:54:36 414

原创 安卓图片轮播

android实现图片的自动轮播和点击跳转效果

2016-08-12 22:00:45 568

原创 android 多个view自动换行

重绘groupview来实现多个textview或button的自动换行

2016-08-11 11:41:46 4654 2

原创 Android Activity Lanchemode

Android管理activity应用栈的模式,当

2014-06-29 14:40:05 573

原创 Android 常见错误总结

java.lang.ClassCastException: android.app.Application  这个错误一般源于工程中有继承

2014-05-07 10:56:22 435

原创 Android 音乐播放命令转化成midi命令

在Android中mediaPlayer也可以播放midi文件。可是有的时候我们需要自己控制midi文件的播放方式。   例如在播放钢琴曲谱时可以将每个note的播放命令写成midi命令,然后通过android自带的库文件libsonivox.so渲染midi命令可以使android绕过mediaplayer直接渲染播放。   利用midi播放方式就必须知道midi文件的一些简单命令。

2013-12-05 14:26:43 4442

原创 Android 多线程通信Handler

在Android中应用到多线程通信,尤其是新的线程去更新主线程的UI,因为新线程无法直接更新widget, 所以在Android多应用handler处理多线程的通信。 Handler主要有两个作用,一是安排小时或者Runnable在某个主线程中某个地方执行,二是安排一个任务去别的线程工作。    提到handler肯定会涉及到Looper, Looper的作用就是替对应的Handler管

2013-11-19 16:09:38 900

原创 Android GridView 与 Base Adapter

视图组件也有运行时创建和在xml定义这两种途径, 在android常用的视图中有一个比较重要的类,AdapterView适配器视图。适配器视图就是用适配器将视图和该视图所依赖的数据链接起来。以一个简单的GridView来解释一下。在这里自己定义继承自BaseView的ImageGridAdapter.  首先在xml文档中定义GridView. <GridView xmlns:

2013-07-02 16:33:58 1125

原创 Android Testcase

Android提供了一系列强大的测试工具,它针对Android 的开发环境,对JUnit进行了扩展,虽然仍然可以用JUnit对Android程序就行测试,但Android改进之后的测试方法可以对程序进行更全面更细致的测试。    Android的测试核心是一个instrumentation框架,这是一个完整的测试结构,在这里只是简单的介绍一下它的使用方法。Android程序代码可以简单的分为两

2013-06-18 16:52:57 794

原创 Dom4j 解析xml文件

xml文档在越来越多的得到应用,解析xml的工具也很多,android也有自带的工具。dom4j也是一种解析工具,它可以对xml进行读写,感觉它更加的简单易使用。在这里简单介绍一下。在dom4j.org (点击)到官网下载。解压后有一个dom4j-xx.jar这个就是我们需要的包。如果打不开官网可以在这里下载http://dom4j.sourceforge.net/Attr

2013-06-06 11:53:24 736

原创 MusicXML 属性解析 一

Musicxml 是一个开放的基于XML 的音乐符号文件格式,由Reccordare 公司开发。他被设计用来做为乐谱信息的交换格式,特别是在不同的乐谱显示软件的之间进行交换。MusicXML 将整体乐曲元素和属性信息表示为一份XML 文档,他克服了另外两种格式----NIFF 格式(基于图片)和SMDL 格式(过于庞大)的兼容性差,结构复杂等许多缺点,目前他已经被很多应用软件的支持。目前很

2013-06-03 00:01:52 4095

原创 ubuntu 创建桌面快捷方式

在ubuntu中一些自己安装的程序没有创建快捷方式,每次都通过绝对路径执行比较复杂,可以通过自己创建快捷方式在桌面上,这样方便了每次的启动。我是给chrome创建的快捷方式,在这里和大家分享一下。   首先将下面的代码复制到一个文件中,文件名的格式为:xxxx.desktop . xxxx为你随意取的名字,以简单易懂为原则。一般就是程序的名字。   [Desktop Entry]Cat

2013-05-24 10:02:58 1039

原创 window linux 双系统直接删除linux修复

用win7和fedora双系统如果直接将fedora所在的分区格式化,由于grub写好的mbr不能找到相应的配置文件。所以不能启动win7.    这时需要修复mbr,具体办法如下:插入win7系统安装盘,设置为光驱引导 选择完语言选项后,进入下一步,选择左下角的【系统修复】而不是继续安装。自动搜索完已经安装的系统后,进入下一步。 这里不要点windows自动修复,

2013-05-21 17:55:44 1054 1

原创 Android 实时获取麦克风录音的音量大小

前几天做一个关于录音并获取音量大小的模块,今天写一个demo和大家分享。如果有各位有更好的方法可以留言提醒我,谢谢。    首先录音功能很容易实现,通过audiorecord或者mediarecorder都可以实现,如果要获取录音音量的大小,用audiorecord更加方便。实现录音功能可以大致分为几个步骤。一 初始化录音设备audiorecord。 二 ,开启一个线程实现录音功能。 三 获取

2013-05-21 14:54:02 13300 18

原创 C++ 代码的存储

一般情况由C++编译的程序所占用的内从分为以下几个方面:         1   栈(stack)程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。   2 堆(heap)在内从中开辟另一片空间,由程序员自己分配,比如(new/delete),如果程序员自己在程序结束时不释放开辟的空间, 操作系统也会释放此空间, 但是

2013-05-10 11:25:28 1068

原创 Activity 生命周期

Activity 继承 android.content.context, 它是单独的与用户交互的界面。所以对于Activity 的生命周期应该有所了解。这样才能更加准确的把握程序中的各个控件之间的关系。今天要写一个关于录音器的小程序, 对于它周期的七个函数有些应用,所以记录一下。       这张googleAPI 上的原图大家都看过,结合这个说一下。   onCreate

2013-05-08 17:13:53 601

图片轮播案例

android图片的轮播,支持手势和自动轮播功能。

2016-08-12

多个view自动换行

多个view的自动换行

2016-08-11

空空如也

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

TA关注的人

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