自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 仿微信、QQ聊天表情底部弹出

前段时间学习了View的滑动以及Scroller的使用,正好项目中有聊天的功能,就仿照QQ聊天实现了,俗话说:好记性不如乱笔头,今天我们就来实战下。实现效果No picture say a xx,先看下效果图吧! 效果实现结合效果图,我们仔细分析一下,其实实现起来没那么难,主要逻辑就是控制底部view的弹出与显示。 1.首先我们自定义一个ViewGroup,并测量所有子...

2018-09-12 19:05:45 1309

原创 Scroller滑动剖析

Scroller 官方介绍:Scroller里面封装了滚动操作,并通过收集数据产生滚动动画1.Scroller的使用mScroller = new Scroller(context);public void beginScroll(){ mScroller.startScroll(0,0,-200,0,3000); invalidate();}pub...

2018-09-04 13:54:52 371

原创 View滑动的三板斧

View的滑动 在android开发中,View的滑动效果基本上处处可见。所以如果我们想自定义一些炫目的动画效果,熟练掌握View的滑动方式必不可少。常见的View滑动方式1. 使用scrollTo、scrollBy首先我们要明白一点,scrollTo、scrollBy移动的是View的内容,如果是ViewGroup,移动的则是ViewGroup里面的子View,如果...

2018-09-03 17:07:05 168

原创 IntentService剖析

IntentService的由来众所周知service默认是运行在主线程中的,如果我们需要在service中进行耗时操作,往往我们的做法就是在service的onStart方法中开启一个子线程,然后将耗时操作放到子线程中,但是service一旦开启,除非我们调用stopService或者stopSelf,服务才会停止,如何实现在service中直接进行耗时操作?如何实现service的即用即停...

2018-07-24 17:40:07 174

原创 android消息机制重温

MessageQueue的工作原理MessageQueue就是所谓的消息队列,虽然称之为队列,但它实际上是通过一个单链表数据结构来维护消息列表列表,单链表在插入和删除上比较有优势,而MessageQueue主要包含两个操作:插入消息enqueueMessage()和读取消息next()下面我们来看下MessageQueue中的源码实现,首先是enqueueMessage()的源码: 1...

2018-07-23 21:08:35 134

原创 ThreadLocal详解

概念ThreadLocal是一个线程内部的数据存储类,通过它我们可以在指定的线程中存储数据,但是在数据存储以后,我们也只能在指定的线程中获取到存储的数据。应用场景:当某些数据需要以线程为作用域的时候并且不同线程具有不同的数据副本,就可以考虑使用ThreadLocal,比如对于Handler来说,它需要获取当前线程的Looper,但是Looper的作用域是就是线程并且不同的线程具有不同...

2018-07-19 18:53:39 842

原创 加密工具 conceal使用

android 加密工具 ConcealConceal的介绍Conceal提供了一系列的java api给android设备实现加解密操作,而其设计目的是为了更快和更高效的使用内存对硬盘上的大文件进行加密。至于这个加密速度有多快,贴张官方的比较图,大家自己体会体会。使用方法:在build.gradle中添加如下依赖 compile 'com.facebook.conceal:conceal:2.

2017-09-22 18:06:35 1733

原创 dagger2学习

最近在学习单元测试的过程中,学习一下使用dagger2来做依赖注入在介绍dagger2的使用前,先来介绍一下DL的几种方式。set方法将依赖作为参数将依赖作为构造方法的参数传(推荐使用这种方式)下面重点介绍dagger2的使用1.定义Module :Dependency生产工厂一个Module对应代码中的一个类,同时为了表示这是一个Module,而不是一个简单的类,需要添加dagger2里面

2017-09-20 17:53:34 420

原创 Android单元测试学习中遇到的问题

抽空学习了一下Android单元测试方面的知识,记录一下其中遇到的一些问题。1. FileNotFoundException: build\intermediates\bundles\debug\AndroidManifest.xml (系统找不到指定的路径。)Edit-configuration 设置android-junit 的working directory 设置为$MODULE_DIR$2

2017-09-20 17:30:02 277

空空如也

空空如也

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

TA关注的人

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