自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

遗忘的星星

码农进阶之路

  • 博客(22)
  • 收藏
  • 关注

原创 LayoutInflater源码分析与常见问题解疑

本篇文章主要分析LayoutInflater的inflate方法,并解决inflate方法使用不当造成的问题。LayoutInflater实际开发中使用较多,动态添加布局、列表适配器设置布局等场景大多数情况都需要LayoutInflater的参与。LayoutInflaterV是View由XML转化为Class过程中必不可少的,我们常用的 setContentView内部也调用了Layou...

2019-02-21 19:45:20 679

原创 Android动画详解(下)

本篇文章主要介绍属性动画,需要了解补间动画和帧动画相关知识的,建议阅读Android动画详解(上)。属性动画非常强大,运用也非常灵活,为了便于理解,本文首先从类的角度介绍了属性动画的继承关系,然后针对一些重点类介绍了其内的主要方法,最后通过demo的方式对属性的动画的常见用法进行了演示。类继承关系属性动画存放在android.animation包下,主要的类继承关系如下:主要方法Anim...

2019-01-30 18:58:39 1680

原创 Android动画详解(上)

说起动画大家想必都比较熟悉,因为开发中要经常面对各种各样的动画效果。如果遇到一个比较“挑剔”的设计师,在自定义控件和动画方面没有两把像样的刷子估计就要受尽折磨了。自定义控件除了一些View相关知识比较重要外,动画也占相当重要的部分。Android自发布到现在经历了多次重大版本迭代,UI效果已经变的相当强大,当年从诺基亚N73过渡到Android手机,感觉换了一片天地,其强大的功能和酷炫的界面令人折...

2019-01-30 16:36:58 1011

原创 闲聊自定义控件之View滑动

Android的滚动(滑动)有很多种实现方式,如动态改变布局参数,属性动画,Scroller等。这些方式大多是通过View的坐标改变来实现的。布局参数相关实现方式这一部分主要包括layout()方法以及设置LayoutParams两种方式。layout()方法实际就是直接控制View坐标的四个点来实现的,上一篇文章(闲聊自定义控件之滑动冲突)中就是使用的这种方式。具体如下:case Mot...

2018-12-14 20:18:27 1055

原创 事件分发实战——滑动冲突

滑动冲突非常的常见,可能刚开始接触的时候确实有点让人摸不着头脑,但分析总结之后就会发现还是有一定的规律可循。滑动冲突解决的关键点在于对事件分发机制的理解,对于事件的分发机制,上一篇文章(闲聊自定义控件之事件分发)已经对其进行了介绍,如果对该知识点缺乏了解的话建议先读一下上篇文章。滑动冲突的分类滑动冲突一般分为两类,内外部滑动方向一致、内外部滑动方向不一致。至于由它们嵌套或者平行组合...

2018-08-03 17:55:52 1403

原创 闲聊自定义控件之事件分发

Android的事件分发机制相较前面的知识点有点复杂,之所以有这种感觉是因为这部分的源码阅读需要一定的耐心,要属于剔除“非核心”代码的影响。特别是在高版本的API中,为了更好的体验,增加了大量代码,但这些代码对整个事件的流向是没有影响的。另外,事件分发机制在View和ViewGroup中有不同的表现,父布局和子View之间有一定的关联性,这种关联性根据方法返回值不同又多种多样。这些都对事件分发机制...

2018-07-27 10:24:32 1380

原创 View绘制实战——热门标签

上一篇文章已经对View绘制的流程进行了讲解,并用其解决了ListView的嵌套问题。今天我们再次通过热门标签这种常用的自定义控件来演示View绘制的综合运用。本篇文章讲了热门标签这一简单自定控件的三种实现。其中,前两种基于onMeasure、onLayout方法,最后一种基于LinearLayout布局。这样做的目的是在加强对View绘制理解的同时,注意实现过程的多样性,增强对知识的灵活...

2018-07-18 17:07:57 1307

原创 闲聊自定义控件之View绘制

了解View的绘制对自定义控件的开发有着重要的意义,上一篇已经对activity加载UI的流程进行了讲解,从中可以看出DecorView是我们的最外层View,是一个FrameLayout的子类,View的绘制也是从DecorView开始的。 DecorView调用performTraversals()方法开始View的绘制,这个方法内容比较多,比较核心的是调用如下方法: - perfor...

2018-07-13 16:35:22 1121

原创 Activity加载UI流程

activity加载UI直观的起始位置是activity的setContentView方法,进入该方法看到实现如下:public void setContentView(int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActionBar(); }...

2018-07-12 15:37:22 1971

原创 All flavors must now belong to a named flavor dimension

这个问题刚使用androidstudio的时候就遇到了,当时因为没法科学上网就没有查其根本原因。瞅了几篇博客,增加了flavorDimensions “versionCode”这句话就解决了,但总觉得思路不是特别清晰。今天又有人问到这个问题,刚好有神灯指路,觉得仔细研究一番!完整错误提示:All flavors must now belong to a named flavor dim...

2018-07-06 18:08:45 4280 2

原创 Canvas综合实战——沙漏

Canvas其实在前面的几篇博客中都有过使用,但这些使用一般集中在绘制和画布变化方面,画布的快照和裁剪应用很少。下面通过一个沙漏实例演示下这两部分的使用 效果图: 说是沙漏确实有点勉强.没有美工支持,只好从老项目里扒出来两张不同颜色填充的颜色来应付。重在实现过程,希望有强迫症的同学能够理解一下哈。主要实现过程分为两部分 1. 自定义一个Drawable,实现两张图片的拼接。 2. ...

2018-06-27 16:06:48 2228 1

原创 闲聊自定义控件之基础——Canvas

前面介绍过了有关绘制的基础知识,包括Color、坐标、Path、Paint等,今天主要梳理下Canvas的相关知识点。Canvas一般称为画布,但其实它只是一套画图的API,使用这些API可以对内存进行操作,进而画出想要的图形。打开android.graphics包下的Canvas类,可以看到其内部提供的方法还是比较多的,为了便于理解,对方法进行分类总结。绘制操作绘制的主要方法如下...

2018-06-27 14:55:20 1478

原创 Paint实战——圆角图片

圆角图形在android的开发中非常常见,也有多种实现方式,今天主要演示两种使用paint相关的API来完成图形圆角裁剪的过程。主要用的知识点为BitmapShader和Xfermode,这两个类前面已经有所介绍(闲聊自定义控件之基础——Paint),大家可以对照理解一下。之所以使用这两种方式,一方面是为了补足上一篇讲述paint的博客中缺乏对高级应用的实战,另一方面也是非常重要的一方面是因为这两...

2018-06-15 14:35:14 2834

原创 闲聊自定义控件之基础——Paint

下图是paint中所有有关set的方法,基本涵盖了paint的所有用法。本篇文章介绍的内容基本上就是图片里的方法,为了便于介绍对这些方法进行了简单的分类整理。基础应用图形绘制相关 mPaint.reset();//重置 mPaint.setColor(Color.RED);//设置画笔颜色 mPaint.setAlpha(255...

2018-06-13 16:21:15 1448

原创 Path 综合实战——滑雪

Path是自定义控件中非常重要的一部分,上一篇闲聊自定义控件之基础——Path中介绍了Path相关的基础知识,今天通过一个滑雪的demo,演示下Path相关API的使用。该demo用到的Path的知识点主要有贝塞尔曲线、Path逻辑运算、PathMeasure等,这些都是常用的,而且比较重要的知识点。 闲话少说,先看效果图: 1.首先是初始化的操作private void in...

2018-05-23 20:24:56 1649 2

原创 闲聊自定义控件之基础——Path

Path在自定义控件里的使用频率也相当的高,使用Path不仅能绘制矩形、圆形等常规图形,还能绘制比较复杂的组合路径。基本方法点的相关操作moveTo:移动到哪一点lineTo:连接到哪一点rMoveTo:移动到哪一点(参考点为当前点)rlineTo:连接到哪一点(参考点为当前点)setLastPoint:设置终点位置close:连接开始的点和末尾的点,使路径闭合...

2018-05-14 15:15:49 1661

原创 闲聊自定义控件之基础——坐标

坐标是自定义控件的基础,例如在处理事件点击、滚动、动画等很多情况时都需要坐标的相关知识。Android坐标与数学中的相差不大,主要使用两种方式进行描述:绝对坐标和相对坐标。Android的坐标系是以屏幕的左上角为原点,向下为X的正方向,向右为Y 的正方向(如下图所示)。相当于数学坐标系,以屏幕左上角为原点,顺时针旋转90度。Android坐标系使用相对坐标的情况较多,绝对坐标较少,且相...

2018-05-04 17:59:37 1574

原创 闲聊自定义控件之基础——Color

提到Color大家都很熟悉,不就是ARGB嘛。其实,除了这些基本的东西之外,有些知识点还是需要稍微注意一下的。下面带大家一起复习下与Color相关的知识。ARGB分别是透明度(alpha)、红(red)、绿(green)、蓝(blue)。在ARGB_8888模式下它们的取值范围是0-255,也就是ox00到oxff,因此每一个颜色通道占8位即1个字节,也就是说一个像素点需要4个字节来表示。...

2018-04-28 18:16:23 1564

原创 闲聊自定义控件之单元拆分

自定义控件的单元拆分是一种在实现流程维度上的拆分,跟技术的复杂与否没有关系。这种拆分可以将实现流程复杂的控件,拆解成多个单元,分单元实现最后粘合,使流程和逻辑更加清晰。复杂自定义控件往往拆解成几个部分,每一部分可以是View,也可以是动画或者逻辑处理过程等。如果拆解后的部分还很复杂,可以继续拆解,拆解的粒度需要自己根据实际需要去判断。如果拆解后的单元过于复杂,那么实现起来的复杂度也会比较高...

2018-04-26 17:20:25 1409

原创 闲聊自定义控件之分类

自定义控件基本上是每个Android开发人员绕不过的坎,很大一部分开发人员对其并没有清楚的认识,所以一遇到自定义控件就有点手足无措,说不上“谈虎色变”吧,至少会少些许底气。闲来无事,咱们聊一下Android自定义控件那些事。要想写自定义控件,首先必须对其有个清楚的认识,并非所有的自定义控件都跟想象中的那样难。自定义控件可以根据其功能、样式、特效的复杂程度和相关性在实现过程这个维度可以将其拆...

2018-04-26 17:14:41 1627

原创 在AndroidStudio中加载GItHub中的项目

之前,一直有人问怎样在AS中直接check GitHub中的代码,刚好这次家里的电脑重新部署开发环境,就截几张图记录一下,以备后面再有人问 我的AS版本是3.0的,不同的版本应该都差不多第一步,VCS->Checkout from Version Control->GitHub如果你机子上没有装Git的话就会弹出个对话框,如下: 这就需要我们安装下Git,鉴于有...

2018-04-20 18:38:16 1585

原创 仿链家splash

因为最近购房使用链家APP较多,无意中发现链家的splash挺不错,刚好这几天赋闲在家(公司出游,自己要办贷款手续没法去),就模仿着写了一下,分享给大家:因为色值、图形、素材以及动画效果等并没有刻意的去模仿,外加鄙人艺术细胞不足,所以最终效果有点差强人意。虽然有点丑,但基本的效果都有,不影响我们探讨其实现过程:一、动画过程整体分析仔细观察这个页面,发现整个过程包含三个部分,...

2018-04-20 17:46:18 2412 2

空空如也

空空如也

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

TA关注的人

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