自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android仿支付宝手势密码三

Android仿支付宝手势密码一Android仿支付宝手势密码二前面两篇文章介绍了手势密码的下半部分,本文主要介绍手势密码的上面小view部分和应用一 上面小view其实明白了前面两篇文章,对手势密码的上半部分就很简单了。思路和前面的手势密码一样,这里不同的就是不画连接线和错误状态,并且没有手指移动。监听手势绘制完成后,直接绘制实心圆。这里代码就不仔细讲解了。public class GesturePwdSmallView extends View { private Context mC

2021-03-23 12:19:32 211 1

原创 Android仿支付宝手势密码二

接上篇,本文实现随着手势的滑动,添加密码的行为。xml资源和完整代码在文末尾。一 实现效果和分析1.进入后随着手势的绘制完成 空心变为实心2.绘制各个圆心的连接线3.第二次绘制和第一次绘制做比较,如果绘制错误显示错误的圆二 实现手势绘制完成空心变实心思路:记录9个圆的位置,在手指滑动过程中,判断经过哪个圆并将其加入到经过的圆点集合当中。然后在for循环绘制9个圆过程中判断是绘制空心圆还是实心圆每个圆心对应的位置如下,该位置就是以后保存的手势密码,比如0...

2021-03-23 11:42:08 255 1

原创 Android仿支付宝手势密码一

本文通过仿支付宝手势密码,进一步熟悉自定义view。效果:分析:我们将该效果分为两部分,文字上面的view为一部分,下面的手势为一部分。可以看到上面的view随着下面绘制完成,就开始绘制。首先分析下面部分。步骤:1.绘制9个空心圆2.随着手势的滑动绘制实心圆3.绘制手势滑动的线可以看到进入以后首先显示的是9个空心的圆圈,那么本文先实现绘制9个空心圆一 整体代码和效果(后面有优化部分)public class GesturePwdView extends View { priv

2021-03-22 17:36:36 291 1

原创 View的绘制基础

前面Android自定义View之ViewGroup描述了自定义ViewGroup以及View的onMeasure,onLayout,draw过程。对于draw是如何去绘制View的,我们怎么能够自己绘制出一些UI效果,这需要对api有一定熟悉程度才能达到。这里推荐启舰关于自定义控件的系列文章Android自定义控件三部曲文章索引本文参考其文章并做一些简单的归纳总结。一 简单的一个自定义ViewPaint笔:大小,粗细,画笔颜色,透明度,字体的样式等等Canvas纸-画布:圆形,矩形,文字等相

2021-01-25 17:28:39 143

原创 关于Android滑动scroll,弹性滑动以及VelocityTracker

一 VelocityTracker速度追踪,手指在滑动中的速度,包括水平和竖直方向。计算公式: 速度 =(终点位置-起点位置)/ 时间段使用:VelocityTracker velocityTracker= VelocityTracker.obtain() ;velocityTracker.addMovement(event);velocityTracker.computeCurrentVelocity(1000);int xVelocity = (int) velocity

2021-01-25 14:16:13 414

原创 Android自定义View之ViewGroup

Android自定义View基础及绘制流程Android自定义View工作原理关于measure、layout、draw详解前面两篇文章介绍了android关于View的绘制流程和原理,下面根据这些原理进入到一些简单的自定义View当中,帮助大家更容易理解掌握自定义View通过前面的介绍我们一般知道自定义ViewGroup一般重写onMeausre和onLayout两个方法。这里回忆一下为何重写这两个方法?当measure事件和layout事件传递到我们布局的ViewGroup时,会调用onMeas

2021-01-19 15:58:34 403 1

原创 Android自定义View工作原理关于measure、layout、draw详解

自定义View基础及工作原理一我们知道了View怎么从系统一步步调用到ViewGroup的measureChildWithMargins方法,在该方法当中调用了子View的measure方法,继续分析View的measure过程。一 measrue过程1.1View的measure过程View的measure的方法调用流程图:我们看看onMeasure源码很简单根据传入宽高规格计算测量尺寸:class:Viewprotected void onMeasure(int widthMeasure

2021-01-15 15:42:20 510

原创 Android自定义View基础及绘制流程

大家知道自定义view在日常开发和面试中出现频率很高。那么什么是自定义View,为何需要自定义View,怎么来实现呢?自定义View系列文章将从源码角度解析其原理,并列举实际使用。什么是自定义View?一般我们都会说有两种自定义View方式,一种半自动(通过xml方式),一种重写onMeasure,onLayout,onDraw三个方法。那么为何要重写这个三个方法,这三个方法里面都做了些什么?对于一个给定的UI我们应该怎么去实现?。本文是自定义View的基础...

2021-01-14 10:01:26 746

原创 Android滑动冲突解决方案内外部拦截法及原理

本文接上篇Android滑动冲突一内部拦截外部拦截简介一 ViewPager嵌套ListView的滑动冲突,内部拦截法为何ViewPager的onInterceptTouchEvent要做判断而不是直接返回true?我们重温下Android事件分发二之ViewGroup如何处理事件中ViewGroup事件分发方法的源码。注意这个ViewGroup对应到我们例子的ViewPagerclass:ViewGroup: @Override public boolean dispa.

2021-01-11 14:40:18 4410 2

原创 Android事件分发流程源码解析二及总结

Android事件分发一之事件传递Android事件分发二之ViewGroup如何处理事件Android事件分发三之View通过前面几篇文章详细介绍了事件分发的整个过程,源码细节比较多,确实比较难理解或记忆。通过此篇文章对整个事件分发过程进行总结,加深我们的理解和记忆。事件分发的三个重要方法,由ViewGroup调用dispatchTouchEvent方法分发事件给View,在View中调用dispatchTouchEvent分发事件方法让onTouchEvent事件来消费。其中onIntercep

2021-01-08 17:05:15 284

原创 Android事件分发流程源码解析一

一 点击事件(Touch事件)当用户触摸屏幕时,将产生点击事件(Touch事件),事件相关细节(触摸位置时间等)被封装为MotionEvent对象MotionEvent事件类型:ACTION_DOWN:初次接触到屏幕时触发ACTION_MOVE:在屏幕上滑动时触发(多次)ACTION_UP:手指离开屏幕时触发ACTION_CANCEL:事件被上层拦截时触发(何时拦截后面做说明)用户接触屏幕到抬起二 事件传递系统如何分发用户的touch事件?流程图通过源码分析传递流程,首

2021-01-06 21:58:19 454

原创 compileSdkVersion、targetSdkVersion以及minSdkVersion三者关系

minSdkVersion: app运行要求的手机最低安卓版本。比如安卓手机版本是19(安卓4.4),minSdkVersion是21(安卓5.0)。那么编译出来的apk将无法安装到该手机上compileSdkVersion :参与编译的sdk版本。比如想要使用安卓10的5g,需要将compileSdkVersion改为>=29(安卓10),否则无法在代码当中找到相关apitargetSdkVersion:目标版本,兼容旧版本的api。虽然由compileSdkVersion编译通过了,但是最终运

2021-01-04 15:10:14 2333 4

原创 关于gradle的implementation、api和compileOnly三种依赖方式

implementation: 参与编译和打包,依赖的包不对其它工程开放api : 参与编译和打包,依赖的包对其它工程开放compileOnly: 参与编译但不参与打包,依赖的包对其它工程不开放。如果整个工程紧使用comileOnly方式依赖某个包,在使用时编译不报错,但运行的时候会找不到该类。如果有其它moudle使用了implementation或者api 方式依赖,那么运行时就不会报错,最终依赖的是其它module所导入的包一 场景主工程app依赖于moduleB,moduleB依赖于Gso.

2020-12-31 17:17:19 10213

原创 gradle版本和插件以及buildToolsVersion之间的对应关系

Gradle Plugin Version: Gradle 插件版本Gradle Version: Gradle发行版本Android SDK Build Tools Version:Android SDK 构建工具版本一 概念1.GradleGradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置位置:项目主目录 gradle 文件夹->w.

2020-12-24 15:02:07 9075 6

原创 andriod Cause: unable to find valid certification path to requested target解决

问题描述:原来一直可以正常运行的项目,突然在bulid的时候Cause: unable to find valid certification path to requested target网上找了很多资料,基本都是说缺少认证证书。解决方式大致是两种一种是设置andriodstudio可信任证书,一种是通过浏览器获取该网址的认证证书。第一种试了没起作用,(难道是产生的原因不一样?)。第二种实...

2019-12-26 15:59:42 379 1

转载 解决eclipse更新SDK慢的问题

转载:http://www.cnblogs.com/andy65007/p/3900212.html1、打开android sdk manager2、打开tool->options 加上如图所示设置  并勾选Force。。。。3 重启eclipse

2016-06-29 09:42:52 938

空空如也

空空如也

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

TA关注的人

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