- 博客(60)
- 资源 (12)
- 收藏
- 关注
原创 UnSafe学习笔记
前言锁会导致线程上下文切换和重新调度开销volatile只能保证共享变量的可见性,不能解决读-改-写等的原子性问题CAS(Compare and Swap)是JDK提供的非阻塞原子性操作,通过硬件保证了比较-更新操作的原子性Synchronized又名监视器锁,释放该锁场景:正常退出同步代码块抛出异常后同步块内调用了该内置锁资源的wait方法时synchronized内存...
2019-12-23 22:22:17 164
原创 CopyOnWriteArrayList学习笔记
前言并发包中的并发List只有CopyOnWriteArrayList。CopyOnArrayList是一个线程安全的ArrayList,对其进行修改的操作都是在底层的一个复制的数组上进行的,也就是使用了写时复制策略。CopyOnWriteArrayList源码解析初始化public CopyOnWriteArrayList() { setArray(new Object[...
2019-12-19 08:00:16 470
原创 ListView源码分析
前言在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,几乎所有的app都应用了列表来展示数据,并且能加载大量数据而不发生OOM。作为开发者有责任和义务去研究这个神秘的控件,接下来本文将为你揭开ListView的神秘面纱开篇一问ListView我们也用了很久,本文将结合以下问题进行深入: ListView为什么加载上百上千条数据而不发生OO...
2018-09-06 14:03:58 681
原创 属性动画源码分析
前言Android动画分为帧动画、View动画、属性动画,其实帧动画也是View动画的一种,只不过它和平移、旋转等常见的View动画表现形式上不同。View动画是一种渐进式动画,而帧动画则是通过顺序播放一系列图像从而产生动画效果,然而图片过大就会发生OOM,所以尽量不要使用帧动画。本文主要讲解View动画使用、ObjectAnimator源码来进行讲解。View动画View动画有四...
2018-08-27 18:47:31 339
原创 Android UI的绘制流程
前言 对于Android开发者来说,要学好自定义View就需要了解绘制流程,包含measure、layout、draw,Android的View绘制是一个自上而下的过程,本文便通过对UI的绘制流程研究来增强自身能力提高,内容不好不要见怪。Part 1、初步了解Activity UI的形成过程首先我们在Activity里面写上setContentView一运行就显示了视
2017-04-28 07:09:01 755
原创 Path&PathMeasure完全解析
前言 Path扮演着路径的角色,在绘制View起着非常重要的位置,而PathMeasure是对Path进行测量,通过使用PathMeasure可以更加方便的使用Path工具。网上都好多关于这方面的文章,在这里只是做个笔录,不好不要见怪。嘿嘿Part 1、谈谈Path的使用
2017-04-16 16:27:53 4475
原创 Canvas实现炫酷动画SearchView
前言 在Android官方对Canvas描述是:Canvas类容纳所有和Draw(绘制)相关的方法。为了去Draw,你需要具备四个要素,1是Bitmap用来承载像素信息、2是Canvas用来管理Draw相关方法、3是绘制基元(例如,Rect,Path,text,Bitmap)、4是一个画笔(用来描述图像的颜色和风格)本文之前有关于Paint的文章绘图不可或缺的画笔Paint
2017-04-08 01:57:56 1329
原创 Canvas实现Reveal揭露特效
前言在Android官方对Canvas描述是:Canvas类容纳所有和Draw(绘制)相关的方法。为了去Draw,你需要具备四个要素,1是Bitmap用来承载像素信息、2是Canvas用来管理Draw相关方法、3是绘制基元(例如,Rect,Path,text,Bitmap)、4是一个画笔(用来描述图像的颜色和风格)本文之前有关于Paint的文章绘图不可或缺的画笔Paint-使用篇
2017-04-02 09:28:37 792
原创 一步两步带你实现Android沉浸式设计
前言沉浸式不知道有了两种叫法,一种是沉浸式模式,一种是沉浸式状态栏,Google从Android4.4开始,给我们开发者提供了一套透明的系统UI样式给状态栏和导航栏,这样完美的玩法简直和IOS系统媲美了。Part 1、沉浸式模式public void toggle(View view) { int options = getWindow().ge
2017-03-24 21:58:39 812
原创 自定义View框架完全解析
前言在Android中有很多的控件来供大家使用,但是和强大的IOS相比,Android所提供的控件平淡了许多,由于Android的开源可以让每个开发者都能创建自己的视图控件来满足自己的需求,正因为这样就出现各种各样的自定义控件,久而久之就形成了自定义视图框架。这里介绍两种方法1、给每一个需要配置自定义属性的子控件外面包裹一层自定义容器2、自定义LayoutInflater将xml布
2017-03-18 11:36:08 2101
原创 矢量图形SVG&高级动画
前言SVG,全名Scalable Vector Graphics可伸缩矢量图形,这种图像格式在前端已经是非常广泛了矢量图像SVG是W3C退出的一种开放标准的文本格式的矢量图形描述语言,他也是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML来描述而为图形的语言,所以它可以直接打开xml文件来修改和编辑位图图像位图图像的存储单位是图像上每一点的像素值,因而文件会比较
2017-02-28 10:13:50 4689
原创 绘图不可或缺的画笔Paint-滤镜篇
前言 在Android中需要通过graphics类来显示2D图形,在Graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用的类。Paint在自定义控件用的极其多,通过使用Paint可以根据你的想法画出各种各样的图案。滤镜效果对图像进行一定的过滤加工处理。使用Paint设置滤镜效果。1.Alpha滤镜处理Ma
2017-02-22 17:28:08 1253
原创 绘图不可或缺的画笔Paint-渲染篇
前言 在Android中需要通过graphics类来显示2D图形,在Graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用的类。Paint在自定义控件用的极其多,通过使用Paint可以根据你的想法画出各种各样的图案。渲染Shader: BimapShader位图的图像渲染器 LinearGradie
2017-02-21 18:19:29 856
原创 绘图不可或缺的画笔Paint-使用篇
前言在Android中需要通过graphics类来显示2D图形,在Graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用的类。Paint在自定义控件用的极其多,通过使用Paint可以根据你的想法画出各种各样的图案。Paint 1、Paint设置属性1、重置PaintsetReset()
2017-02-21 16:26:27 1224
原创 Android仿平行空间炫酷欢迎界面实现
前言 平行空间的欢迎界面实现是比较复杂的,整个布局是ViewPager,手机中的画面是由HorizontalScrollView,然后在滑动的时候对背景实现颜色的渐变。效果~ 1、布局使用RelativeLayout+ViewPager2、背景的动画 1> 开始进入或者翻页之后执行一个平移动画View.setTranslationX()
2017-02-15 17:49:34 5043
原创 属性动画(PropertyAnimation)好玩的粘性控件
前言从补间动画、帧动画到属性动画,动画效果越来越丰富、越来越完善。补间动画(Tween Animation)a、渐变动画支持的类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、透明度(Alpha)b、只是显示位置的变动,View的实际位置并没有改变,当View移动之后但点击事件只有在原处才能进行响应c、组合使用非常的复杂帧动画(Frame Anim
2017-02-15 09:05:24 757
原创 CoordinatorLayout自定义Behavior&源码分析
前言 Behavior是Android新出的Design库里新增的布局概念。Behavior只有是CoordinatorLayout的直接子View才有意义。可以为任何View添加一个Behavior。Behavior是一系列回调。让你有机会以非侵入的为View添加动态的依赖布局,和处理父布局(CoordinatorLayout)滑动手势的机会。Part 1、某个View
2017-02-14 13:52:01 698
原创 CoordinatorLayout&AppBarLayout&CollapsingToolbarLayout组合
前言 CoordinatorLayout是Material Design的重要组件,协调其它组件实现联动,在实际使用过程中CoordinatorLayout通过协调调度子布局的形式实现触摸动画效果;AppBarLayout继承LinearLayout,布局为垂直方法,所以你可以将其当做LinearLayout使用;CollapsingToolbarLayout的作用是提供了一个可以
2017-02-11 09:36:58 872 1
原创 CoordinatorLayout_Behavior控制Toolbar&Fab的显示和隐藏
前言 Behavior是Android新出的Design库里新增的布局概念。Behavior只有是CoordinatorLayout的直接子View才有意义。可以为任何View添加一个Behavior。Behavior是一系列回调。让你有机会以非侵入的为View添加动态的依赖布局,和处理父布局(CoordinatorLayout)滑动手势的机会。效果~
2017-02-10 14:30:24 3184
原创 浮动操作按钮FloatingActionButton&源码设计
前言作为Material Design成员之一,旨在在手机、平板电脑、台式机和其它的平台提供一致、更广泛的外观和感觉。它有自身独特的动态效果,比如变形、弹出、位移等等,代表着当前页面上用户的特定操作。FloatingActionButton在用户界面起着不可替代的作用,看到这里是不是有一种跃跃欲试的感觉。效果~Part 1、FloatingActionButton常规应用配
2017-02-10 08:51:16 2012
原创 卡片式控件CardView&源码分析
前言 CardView作为卡片控件是在Android5.0系统引入的,继承于FragmentLayout布局在里面添加圆角阴影的效果,Google在5.0中引入了MD设计Elevation和Z轴位移,目的就是突出不同元素之间的层次关系,在显示列表或者网格时候更加的炫酷,说到这里便有跃跃欲试的感觉,Let's go!效果~Part 1、CardView卡片的简单应用代
2017-02-01 10:22:18 3985 1
原创 轻量级控件SnackBar应用&源码分析
前言 SnackBar是Android Support Design Library库支持的一个控件,它在使用的时候经常和CoordinatorLayout一起使用,它是介于Toast和Dialog之间的产物,属于轻量级控件很方便的提供提示和动作反馈,有时候我们需要这样的控件,和Toast一样显示便可以消失,又想这个消息提示上进行用户的反馈。然而写Dialog只能通过点击去取消
2017-01-18 13:45:16 1304
原创 DrawerLayout&NavigationView标准式结合
前言Google最新推出规范式设计中的NavigationView和DrawerLayout结合实现侧滑菜单效果,NavigationView是android-support-design包下的一个控件,NavigationView是为规范侧滑菜单样式而生,侧滑作为常见的导航交互控件,最开始在没有android官方控件的时候,很多时候都是使用开源的SlidingMenu,现在使用DrawerL
2017-01-18 09:22:52 473
原创 艺术控件RecyclerView的交互动画&bug解决
前言 RecyclerView是Google在support-v7里面添加的控件,是5.0 Material Design模式下的一员,在众多的App中使用非常频繁,之前是ListView现在是RecyclerView,想比之下RecyclerView更加的灵活,高内聚低耦合,将ListView功能进行了拆分,各个类各司其职构成了现在的RecyclerView。现在我们来玩一下R
2017-01-16 11:17:52 1861 1
原创 艺术控件RecyclerView的分隔线&bug解决
前言 RecyclerView是Google在support-v7里面添加的控件,是5.0 Material Design模式下的一员,在众多的App中使用非常频繁,之前是ListView现在是RecyclerView,想比之下RecyclerView更加的灵活,高内聚低耦合,将ListView功能进行了拆分,各个类各司其职构成了现在的RecyclerView。效果~
2017-01-15 09:58:54 4358 1
原创 刷新控件SwipeRefreshLayout&bug解决
前言: 下拉刷新在众多的App中可谓是屡见不鲜,在Version19.1之后Google将SwipeRefreshLayout添加到了support-v4包里面,SwipeRefreshLayout是Google提供的刷新控件,它放在了v4包中只允许一个直接子类,操作上比较简单但也不免有一些坑,如SwipeRefreshLayout+ViewPager滑动冲突等等。Pa
2017-01-12 20:52:24 5674
原创 回首2016的坚持,迎接2017的美好
前言: “回首2016的坚持,迎接2017的美好”的由来:各位看客可能有在校的大学生、在职的工程师、找工作的寻觅者等等,对于2016我们或者浑噩度过或者潇洒度过也或者是苦逼的度过,但我们总会有一段时间一段路程去为了不为什么的坚持,那坚持或许为了爱情也或许为了事业,但都让你得到了好的或坏的结果,不管是好的还是坏的它永远印在我们心中那便是青春。对于要来临的新的一年,我们应该重新调整自己的
2016-12-19 14:56:11 2953 4
原创 RecycleView的多视图Epoxy库
前言:Epoxy是一个用于在RecyclerView中构建复杂屏幕的Android库。它抽象视图持有者,项目类型,项目ID,跨度计数等的样板文件,以便简化具有多种视图类型的屏幕。 此外,Epoxy还支持保存视图状态和项目更改的自动差异。github地址:https://github.com/airbnb/epoxyPart 1 添加依赖1、简单添加dependenc
2016-12-15 00:42:07 3761 3
原创 Android打造专属自定义SlidingMenu
/** 在众多的App中都用到了SlidingMenu,使用SlidingMenu不仅可以增加显示的内容,也让用户体验更多的舒适,当然现在github上有相应的SlidingMenu的库在其它的博客也有很多的关于SlidingMenu的介绍,也当然此文章也会有很多和别人重复,但是相信坚持总结、坚持学习,总有一天能写出不一样的文章,fighting!! */首先附上git
2016-12-08 01:42:06 1077
原创 源码分析Looper、Handler、Message之间的关系
/** Handler、Looper、Message三者之间的关系,无外乎就是开始Looper会开始无限的循环,目的是在消息队列中进行获取Message,有则取无在等;而Handler则是在发送Message和handlerMessage方面起作用,发送的Message则是发送到消息队列中,handlerMessage则是处理Looper发过来的消息*/
2016-11-21 01:46:03 602
原创 源码分析Android启动流程
/**Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序,android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层*/附上一图:当引导程序启动Linux内核后,会加载各种驱动和数据结构,当有了驱动以后
2016-11-19 23:39:26 723
原创 Androd7.0-新特性
##Android7.0多窗口Android N添加了同时显示多个应用窗口的支持,在手持设备上,两个应用可以在“分屏”模式中左右并排或上下并排显示。 在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。 本文将在多窗口配置应用、多窗口变更通知和查询、多窗口的拖放功能来讲述。在讲解多窗口的时候先附上在模拟器打开自由状态模式方便查看演示效果:
2016-08-26 13:53:19 7603 2
原创 Android特效-视差特效
附上一张效果图:实现步骤如下:1、首先整体使用ListView实现,顶部的图片为ListView的HeadView <ImageView android:id="@+id/img" android:layout_width="match_parent" android:layout_height="200dp"
2016-08-16 17:58:39 3562
原创 Android DataBinding完全解析
/** * 2015年的Google IO大会上,Android 团队发布了一个数据绑定框架(Data Binding Library),官方原生支持 MVVM 模型。 * 以后可以直接在 layout 布局 xml 文件中绑定数据了,无需再 findViewById然后手工设置数据了。其语法和使用方式和 JSP 中的 EL 表达式非常类似。 */配置:android
2016-08-11 16:51:29 9976 4
原创 Android3D画廊总结整理
/** * 在网上看到好多的3D画廊的效果,最常见就是Gallery,但是在API16的时候就已经废弃了,现在推荐使用ViewPager和HorizontalScrollView来实现这种效果,下面就在这里对其进行整理一下,代码更多的是借鉴了好多网上的,勿喷!!!! */Gallery实现效果:步骤: 1、为Gallery设置Adapter
2016-07-08 19:34:33 5187
原创 Android新特性-ToolBar小结
Toolbar创建: <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:backgr
2016-06-29 01:17:10 2164
原创 StrictMode总结
Android 2.3提供一个称为严苛模式(StrictMode)的调试特性,Google称该特性已经使数百个Android上的Google应用程序受益。首先先整体介绍:StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()//线程策略(ThreadPolicy) .det
2016-05-10 09:32:37 7064
原创 Android Studio问题汇总
/*随着android 5.0 的发布,android 开发已经进入了一个全新的时代,eclipse开发安卓已经有点不合时宜了,在github上80%的android项目都采用android studio开发,而且android studio的中文教程越来越多,还有什么理由不固守这eclipse 呢。*/1、AndroidStudio获取数字签名信息在Terminal里面输入"
2016-05-08 07:07:48 1779
原创 Android开发之小工具
/** * 得到屏幕的宽度 */ public void getScreenWidth(){ DisplayMetrics displayMetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics
2016-04-17 09:37:19 959
原创 快速完成代码插入神器Exynap
/** * Exynap是一个帮助你快速查找和完成代码插入的Android Studio插件。你只需输入一个命令按回车就能调出一段代码,而这个命令也不需要你去记,只需输入大致意思就可以了,Exynap提供了上千种智能代码解决方案。 */安装步骤:1、保证你的AndroidStudio是在2.1.X或者更高的版本2、打开setting->Plugins3、点击Browse
2016-04-11 06:52:00 3300 3
Exynap代码插入神器
2016-11-06
Android数据绑定DataBinding总结
2016-10-02
无处不再的Service
2016-09-05
无处不在的Service
2016-09-05
关闭多个Activity
2016-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人