
Android自定义控件
文章平均质量分 92
优雅的心情
这个作者很懒,什么都没留下…
展开
-
View的事件体系
1:view有以下四个方法: view.getLeft() 得到的是当前view离父容器左边的距离 view.getRight() 得到的是当前view离父容器右边的距离 view.getTop() 得到的是当前view离父容器顶部的距离 view.getBottom 得到的是当前view离父容器底部的距离由以上四个参数可以计算出vie原创 2015-12-27 13:20:54 · 402 阅读 · 0 评论 -
实现滑动的7种方式详解
在Android开发中,滑动对一个app来说,是非常重要的,流畅的滑动操作,能够给用户带来用好的体验,那么本次就来讲讲android中实现滑动有哪些方式。其实滑动一个View,本质上是移动一个View,改变其当前所属的位置,要实现View的滑动,就必须监听用户触摸的事件,且获取事件传入的坐标值,从而动画的改变位置而实现滑动。android坐标系首先要知道android的坐标系与我们转载 2017-04-05 23:26:15 · 2847 阅读 · 0 评论 -
ScaleGestureDetector之手势缩放
概述 根据接收的MotionEvent, 侦测由多个触点(多点触控)引发的变形手势。callback方法 ScaleGestureDetector.OnScaleGestureListener 会在特定手势事件发生时通知用户。该类仅能和Touch事件引发的MotionEvent配合使用。使用该类需要 为你的View创建ScaleGestureDetector 实例 确保在on转载 2017-04-07 23:42:33 · 797 阅读 · 0 评论 -
关于滑动冲突的解决方案
滑动冲突分类滑动冲突,总的来说就是两类。同方向滑动冲突比如ScrollView嵌套ListView,或者是ScrollView嵌套自己不同方向滑动冲突比如ScrollView嵌套ViewPager,或者是ViewPager嵌套ScrollView,这种情况其实很典型。现在大部分应用最外层都是ViewPager+Fragment 的底部切换(比如微信)结构转载 2017-04-10 17:21:05 · 505 阅读 · 0 评论 -
用户手势检测-GestureDetector使用详解
一、概述当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用转载 2017-04-08 00:07:27 · 250 阅读 · 0 评论 -
android触摸事件分发机制
一、 Android分发机制概述:Android如此受欢迎,就在于其优秀的交互性,这其中,Android优秀的事件分发机制功不可没。那么,作为一个优秀的程序员,要想做一个具有良好交互性的应用,必须透彻理解Android的事件分发机制。要想充分理解android的分发机制,需要先对以下几个知识点有所了解:① View和ViewGroup什么?② 事件③ Vi原创 2015-11-18 12:52:29 · 557 阅读 · 0 评论 -
用户手势检测-GestureDetector使用详解
一、概述当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用转载 2017-04-05 22:34:04 · 249 阅读 · 0 评论 -
Adapter数据变化改变现有View的实现
首先说说Adapter具体的类的继承关系,如下图 Adapte为接口它的实现类的对象作为AdapterView和View的桥梁,Adapter是装载了View(比如ListView和girdView要显示的数据)。相关View要显示的数据完全与View解耦。View要显示的数据从Adapter里面获取并展现出来;Adapter负责把真实的数据是配成一个个View(每转载 2016-05-31 17:16:06 · 1533 阅读 · 1 评论 -
Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/9153761记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考 Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 。转载 2016-09-25 10:04:36 · 379 阅读 · 0 评论 -
Android中的NestedScrollingParent和NestedScrollingChild分析
在分析SwipeRefreshLayout源码的时候发现该类实现了NestedScrollingParent和NestedScrollingChild两个接口,甚是好奇,于是结合了网上的资料,然后根据我个人的理解写下本章. 这个两个接口是为了更好解决事件冲突的. 在这里 nested scrolling 就翻译为嵌套滚动吧. 但是这和以前用过的dispatchTouchEvent,on转载 2017-04-12 16:22:40 · 623 阅读 · 0 评论 -
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/9097463其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分发的知识。也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListVie转载 2016-09-25 11:11:41 · 284 阅读 · 0 评论 -
Android Scroller完全解析,关于Scroller你所需知道的一切
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/48719871 Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的场景并不多,但是很多大家所熟知的控件在内部都是使用Scroller来实现的,如ViewPager、ListView等。而如果能够把Scroller的用法熟转载 2017-04-06 15:58:14 · 323 阅读 · 0 评论 -
Android NestedScrolling机制完全解析 带你玩转嵌套滑动
一、概述Android在support.v4包中为大家提供了两个非常神奇的类:NestedScrollingParentNestedScrollingChild如果你从未听说过这两个类,没关系,听我慢慢介绍,你就明白这两个类可以用来干嘛了。相信大家都见识过或者使用过CoordinatorLayout,通过这个类可以非常便利的帮助我们完成一些炫丽的效果,例如下面这样的:转载 2017-04-11 23:41:55 · 335 阅读 · 0 评论 -
Android自定义控件:动画类(十二)----layoutAnimation与gridLayoutAnimation
前几篇给大家讲述了如何针对某一个控件应用动画,这篇将给大家讲解如何给容器中的控件应用统一动画。即在容器中控件出现时,不必为每个控件添加进入动画,可以在容器中为其添加统一的进入和退出动画。 从上面的示例动画也可以看出,listview中的数据在进入时就加入了统一动画,下面我们就来看看这些是怎么来实现的吧。 这篇我们将讲述有关普通viewGroup添加进入统一动画的LayoutAnima转载 2016-09-06 10:46:13 · 653 阅读 · 0 评论 -
自定义的scrollview嵌套listview时重写onMeasure的原因
在项目开发中,可能经常遇到嵌套ListView、ScrollView的问题,百度一搜,都是现成的代码,而且都是一样的,就是重写onMeasure方法,但是为什么要那么写,估计就没多少人知道了,这里进行深入的剖析一下下,重点看onMeasure方法,代码如下:/** * Created by hailonghan on 15/5/28. */public class ExpandListV原创 2016-06-25 22:51:09 · 2821 阅读 · 1 评论 -
为什么要使用onMeasure
一、自定义view逻辑1、测量--onMesure():决定View的大小2、布局--onLayout():决定View在ViewGroup中的位置3、绘制--onDraw():如何绘制这个View第3步的onDraw系统已经封装的很好了,基本不用我们操心。现在讲讲第1步二、测量(Measure())逻辑决定View大小需要两个值:宽详细测量值(widt转载 2015-09-25 13:57:27 · 695 阅读 · 0 评论 -
自定义控件--实现步骤
前言: 在android开发中我们常常会用到自定义控件,可是为什么要自定义呢?自定义控件又该怎么实现呢?下面我们来了解下自定义控件的常用知识。1:为什么要自定义控件 用到自定义控件的几种情况如下: 1> 通常一个APP有自己的显示风格,为了统一这个显示风格,我们需要自己实现一套特定的显示 2> 处理特有的用户交互 3> 优化我们的原创 2017-03-27 15:58:38 · 515 阅读 · 0 评论 -
关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
onMeasure()→onSizeChanged()→onLayout()→onMeasure()→onLayout()→onDraw()原创 2016-10-20 14:55:56 · 1348 阅读 · 0 评论 -
为自己的自定义View添加额外属性
1、添加自定义View的属性文件 在res/values中新建attrs.xml文件(文件名可另取,不过推荐用attrs.xml,可以将自定义属性都放入其中),内容为xml version="1.0" encoding="utf-8"?>resources>declare-styleable name="myViewDefinedAttr"> attr name=原创 2016-09-21 15:17:41 · 521 阅读 · 0 评论 -
Android自定义控件:动画类---插值器Interpolator
一、概述Interpolator属性是Animation类的一个XML属性,所以alpha、scale、rotate、translate、set都会继承得到这个属性。Interpolator被译为插值器,其实我不大能从字面上理解为什么会这样译,其实他是一个指定动画如何变化的东东,跟PS里的动作有点类似:随便拿来一张图片,应用一个动作,图片就会指定变化。Interpolator的转载 2016-07-12 11:18:29 · 603 阅读 · 0 评论 -
Android自定义控件:动画类---逐帧动画AnimationDrawable
1:概述 Android动画包括View Animation(视图动画)和Property Animator(属性动画),而View Animation包括Tween Animation(补间动画)和Frame Animation(逐帧动画);补间动画主Animation(ScaleAnimation、 AlphaAnimation、RotateAnimation、T原创 2016-07-14 14:08:36 · 3511 阅读 · 0 评论 -
Android自定义控件:绘图基础Canvas、Paint类
概述: Android的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)类,这里的Canvas类就是一个“依附”于指定View的画布;有画布,相对也有一个画笔Paint,这个类用于绘制图形一、Paint与Canvas所以,凡有跟要要画的东西的设置相关的,比如大小,粗细,画笔颜色,透明度,字体的样式等等,都是在Paint里设置;同样,凡是要画出成转载 2016-07-08 16:33:55 · 1749 阅读 · 0 评论 -
Android自定义控件:动画类(4)-----自定义补间动画
1:概述 补间动画(Tween Animation)的基类为Animation,Android为该抽象类提供了AlphaAnimation、RotateAnimation、转载 2016-07-21 17:34:11 · 395 阅读 · 1 评论 -
Android自定义控件:动画类(五)----属性动画ValueAnimator基本使用
一、概述long long ago,我写过几篇有关Animation的文章,讲解了传统的alpha、scale、translate、rotate的用法及代码生成方法。其实这三篇文章讲的所有动画效果叫做Tween Animation(补间动画) 在Android动画中,总共有两种类型的动画View Animation(视图动画)和Property Animator(属性动画);其转载 2016-08-30 10:30:08 · 680 阅读 · 0 评论 -
Android自定义控件:动画类(六)----ValueAnimator高级进阶(一)
上一篇给大家介绍了ValueAnimator的大部分函数的用法,不过还都是些简单的用法,这篇我们带大家来看看有关加速器、animator和keyFrame的知识。一、插值器插值器,也叫加速器;有关插值器的知识,我在《Animation动画详解(二)——Interpolator插值器》中专门讲过,大家可以先看看这篇文章中各个加速器的效果。这里再讲一下什么是插值器。我们知道,我们通转载 2016-08-31 11:47:39 · 756 阅读 · 0 评论 -
Android自定义控件:动画类(七)----属性动画ValueAnimator高级进阶(二)
通过上两篇的讲解,我们对ValueAnimator的动画的整个过程应该都已经有较深入的理解,不过还有两个概念我们还没有讲解关键帧和ofObject(),关键帧的部分涉及问题比较多,我们将其放在系列的末尾再讲,这篇着重讲一下ofObject函数的使用一、ofObject()概述前面我们讲了ofInt()和ofFloat()来定义动画,但ofInt()只能传入Integer类型的值,而转载 2016-08-31 17:28:47 · 467 阅读 · 0 评论 -
Android自定义控件:动画类(八)----ObjectAnimator基本使用
一、概述1、引入上几篇给大家讲了ValueAnimator,但ValueAnimator有个缺点,就是只能对数值对动画计算。我们要想对哪个控件操作,需要监听动画过程,在监听中对控件操作。这样使用起来相比补间动画而言就相对比较麻烦。 为了能让动画直接与对应控件相关联,以使我们从监听动画过程中解放出来,谷歌的开发人员在ValueAnimator的基础上,又派生了一个类ObjectAni转载 2016-08-31 17:48:49 · 689 阅读 · 0 评论 -
Android自定义控件:动画类(九)----PropertyValuesHolder与Keyframe
相关文章:《Android自定义控件三部曲文章索引》:http://blog.youkuaiyun.com/harvic880925/article/details/50995268前几篇给大家讲了ValueAnimator、ObjectAnimator的知识,讲解了它们ofInt(),ofFloat(),ofObject()函数的用法。细心的同学可能会注意到,ValueAnimator、Object转载 2016-09-02 17:23:37 · 14414 阅读 · 1 评论 -
Android自定义控件:动画类(十)----AnimatorSet联合动画的代码实现
上几篇给大家分别讲了ValueAnimator和ObjectAnimator,相比而言ObjectAnimator更为方便而且由于set函数是在控件类内部实现,所以封装性更好。而且在现实使用中一般而言都是使用ObjectAnimator的机率比较大。 但ValueAnimator和ObjectAnimator都只能单单实现一个动画,那如果我们想要使用一个组合动画,比如边放大,边移动,边改变al转载 2016-09-02 17:38:56 · 1150 阅读 · 0 评论 -
Android自定义控件:动画类(十一)----联合动画的XML实现与使用示例
上篇给大家讲了有关AnimatorSet的代码实现方法,这篇我们就分别来看看如何利用xml来实现ValueAnimator、ObjectAnimator和AnimatorSet; 在文章最后,将利用AnimatorSet来实现一个路径动画,效果图如下: (这里实现的是一个动画菜单,在点击菜单按钮时,弹出各个菜单)一、联合动画的XML实现在xml中对应animator总转载 2016-09-05 16:39:20 · 1707 阅读 · 0 评论 -
Android自定义控件:动画类(十三)----animateLayoutChanges与LayoutTransition
前篇给大家讲了LayoutAnimation的知识,LayoutAnimation虽能实现ViewGroup的进入动画,但只能在创建时有效。在创建后,再往里添加控件就不会再有动画。在API 11后,又添加了两个能实现在创建后添加控件仍能应用动画的方法,分别是android:animateLayoutChanges属性和LayoutTransition类。这篇文章就来简单说一下他们的用法。由于他们的转载 2016-09-06 14:36:13 · 2023 阅读 · 0 评论 -
自定义View常用的获取宽高信息
自定义View的时候经常少不了获取View的宽高信息,当然不一定是自定义View的时候才会需要获取宽高信息,其他情况下我们也会有这样的需求,获取方式和获取的时机也十分讲究.下面分别从这几个api讲起:1.构造方法2.onFinishInflate3.onSizeChanged4.onMeasure5.onWindowFocusChanged6.onL转载 2016-09-19 11:02:30 · 2150 阅读 · 0 评论 -
Android自定义控件:动画类(十四)----实现ListView Item进入动画
前面两篇我们讲解了使用layoutAnimation和LayoutTransition实现ViewGroup中Item加载动画的方法,但他们都各自存在问题:layoutAnimation虽然是API 1中就已经引入,但只能在动画初次创建时才能使用指定动画。控件创建以后,再往ViewGroup里加Item就不会再有动画。这显然是不合适的!LayoutTransition能够实现无论何时往Vi转载 2016-09-06 15:45:01 · 1077 阅读 · 0 评论 -
Android自定义控件:绘图(二)------路径及文字
《Android自定义控件三部曲文章索引》: http://blog.youkuaiyun.com/harvic880925/article/details/50995268一、创建路径canvas中绘制路径利用:void drawPath (Path path, Paint paint)1、直线路径void moveTo (float x1, float y1):转载 2016-09-06 16:07:14 · 414 阅读 · 0 评论 -
自定义View经常重写的方法
当开发者打算自己派生UI组件时,可以通过继承View基类来创建一个子类,然后重写View类的一个或多个方法,通常被用户重写的方法如下:>> onFinishInflate(): 这是一个回调方法,当应用从XML布局文件加载该组件并利用它来构建界面之后,该方法将会被回 调。>> onMeasure(int,int):调用该方法原创 2016-09-22 18:51:16 · 1187 阅读 · 0 评论 -
Android自定义控件:动画类----alpha、scale、translate、rotate、set的xml属性及用法
一、概述Android的animation由四种类型组成:C、scale、translate、rotate,对应android官方文档地址:《Animation Resources》动画在XML配置文件中alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果原创 2016-07-11 17:09:21 · 3351 阅读 · 0 评论