`

view概述总结

阅读更多

drawable

view(textview,imageview ...)

viewgroup(relative layout,linearLayout ...)

-----------------------------------------------------------------

分层模式

canvas分层

view叠加(事件传递机制)

view的事件传递机制

是通过dispatchTouchEvent进行事件分发的,(一次触摸的完整行为包括(down move up))

1.父容器的dispatchTouchEvent会调用onInterceptTouchEvent询问要不要拦截

如果拦截就会调用自己的onTouchEvent,事件就不再向下分发。(并且后续的事件(move up等)直接到此view也不再分发)

不拦截

 

2.就调用子view的dispatchTouchEvent重复上过程。

 

3.直到叶子节点,叶子节点的dispatchTouchEvent执行叶子节点的onTouchEvent

onTouchEvent如果返回true,dispatchTouchEvent也返回true。事件被消费,事件不再传递。

onTouchEvent如果返回false,dispatchTouchEvent也返回false。

 

4.父view调其他有关子view的dispatchTouchEvent,如果都返回false,执行父的onTouchEvent。

 

注:叶子节点onTouchEvent的down事件返回了false后续事件都不会再来(父一般都不会拦截down,因为拦截后move,up都不会到子)

 

滑动冲突问题其实就是子的view消费了事件导致父view得不到此事件,

解决方法就是根据需要决定父view要不要拦截此事件。

http://www.cnblogs.com/linjzong/p/4191891.html

----------------------------------------------------------------

刷新动力

定时器

延时

滑动

 

帧动画

属性动画

view动画

---------------------------------------------------------------------------------------------------------------

动画类型

Android 中的动画有帧动画,view动画,属性动画(3.0后的)

帧动画

AnimationDrawable - <animation-list>(它是一种drawable,对应xml只能放在drawable文件夹下,其他两种是放在anim中的)

view动画

AlphaAnimation - <alpha/>(透明度动画)

RotateAnimation - <rotate/>(旋转动画有轴心)

ScaleAnimation - <scale/>(缩放动画有轴心)

TranslateAnimation - <translate/>(移动动画)

AnimatorSet - <set> (view动画合集,几种动画同时播放,或顺序播放)

属性动画

ObjectAnimator - <objectAnimator> 

ValueAnimator - <animator>   

-------------------------------------------------------------------

1.AnimationDrawable 逐帧动画(是一种drawable,是一张一张图片的顺序展示,缺点是一般占内存比较大)

Java代码  

// xml中定义帧动画及引用  

// 它是一种drawable所以只能放到drawable文件夹下不能放到anim下  

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"  

    android:oneshot="true">  

    <item  

        android:drawable="@mipmap/ic_launcher"  

        android:duration="200" />  

    <item  

        android:drawable="@mipmap/ic_launcher"  

        android:duration="200" />  

    <item  

        android:drawable="@mipmap/ic_launcher"  

        android:duration="200" />  

</animation-list>  

  

//animation-list属性:  

//visible:drawable的初始可见性,默认为false。  

//oneshot:是否只播放一次且停在最后一帧上。  

//variablePadding:是否随着其状态的改变而改变。默认是false  

  

//animation-list中的item属性:  

//drawable: 当前帧引用的drawable资源  

//duration: 当前帧显示的时间(毫秒为单位)  

  

//在代码中引用生成AnimationDrawable   

AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.animation_drawable);  

  

//--------------------------------------------  

//代码中定义帧动画:  

animationDrawable = new AnimationDrawable();   

animationDrawable.addFrame(drawable1, 100);   

animationDrawable.addFrame(drawable2, 100);  

animationDrawable.addFrame(drawable3, 100);  

  

//--------------------------------------------  

//帧动画使用:  

imageView.setBackgroundResource(animationDrawable);  

animationDrawable.start();   

 

2.属性动画

 

Java代码  

//属性动画3.0以后才有  

//ValueAnimator值动画执行器(是值的一系类变化,这些值付给对象属性形成了动画)  

  

//1.定义  

ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);  

//2.设置执行时间  

valueAnimator.setDuration(1000);  

  

//3.设置插值器  

valueAnimator.setInterpolator(new LinearInterpolator());  

  

//4.设置估值器  

valueAnimator.setEvaluator(new TypeEvaluator<MyClass>() {  

    @Override  

    public MyClass evaluate(float fraction, MyClass startValue, MyClass endValue) {  

        return null;  

    }  

});  

  

//5.设置值变化的监听  

valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {  

    @Override  

    public void onAnimationUpdate(ValueAnimator animation) {  

        MyClass myClass = (MyClass) animation.getAnimatedValue();  

    }  

});  

  

//6.开始动画  

valueAnimator.start();  

  

//设置执行者监听  

valueAnimator.addListener(new Animator.AnimatorListener() {  

    @Override  

    public void onAnimationStart(Animator animation) {  

          

    }  

  

    @Override  

    public void onAnimationEnd(Animator animation) {  

  

    }  

  

    @Override  

    public void onAnimationCancel(Animator animation) {  

  

    }  

  

    @Override  

    public void onAnimationRepeat(Animator animation) {  

  

    }  

});  

  

//ObjectAnimator(继承了ValueAnimator)对象动画执行器(直接对属性做改变)。view要变化的属性必须有set,get方法。  

ObjectAnimator.ofFloat(view, "rotationX", 0.0F, 360.0F).setDuration(500).start(); 

 

3.view动画

Java代码  

//xml定义viewd动画及引用(此种动画xml是放到anim文件夹下的)  

  

//view动画的共有属性:  

//duration:属性为动画持续时间  

//startOffset:延时多长时间开始执行  

//fillAfter:动画结束后是否停留在最后一帧。  

repeatCount="-1":重复次数

repeatMode :动画重播的模式,即从头到尾,从头到尾,还是从头到尾,在从尾到头

//interpolator:属性为动画插入器  

 //accelerate_interpolator              加速-动画插入器  

 //decelerate_interpolator              减速- 动画插入器  

 //accelerate_decelerate_interpolator   加速-减速 动画插入器  

 //例如android:interpolator="@android:anim/accelerate_decelerate_interpolator"  

//注:坐标或宽高的取值,可以是绝对值或者的自己宽或高的比例值(一下无特殊说明取值都可以是这两种形式用的坐标系原点都在自己的view的左上角)  

  

  

//alpha 透明度动画---------------  

<alpha xmlns:android="http://schemas.android.com/apk/res/android"  

    android:fromAlpha="0"  

    android:toAlpha="1" />  

  

//fromAlpha:属性为动画起始时透明度(取值为0f-1f)  

//toAlpha:属性为动画结束时透明度  

  

  

//rotate 旋转动画效果-------------  

<rotate xmlns:android="http://schemas.android.com/apk/res/android"  

    android:pivotX="50%"  

    android:pivotY="50%"  

    android:fromDegrees="0"  

    android:toDegrees="180" />  

  

//pivotX:旋转轴心x轴坐标  

//pivotY:旋转轴心y轴坐标  

//fromDegrees:动画开始时的角度(顺时针为正值,逆时针为负值。取值可以大于360,水平状态为0度,)    

//toDegrees:动画结束时的角度  

  

  

//scale 尺寸伸缩动画效果-------------  

<scale xmlns:android="http://schemas.android.com/apk/res/android"  

    android:pivotX="50%"  

    android:pivotY="50%"  

    android:fromXScale="0%"  

    android:toXScale="100%"  

    android:fromYScale="100%"  

    android:toYScale="100%"/>  

      

//pivotX:旋转轴心x轴坐标  

//pivotY:旋转轴心y轴坐标  

//fromXScale:动画开始时的宽度  

//toXScale:动画结束时的宽度  

//fromYScale:动画开始时的高度  

//toYScale:动画结束时的高度  

  

   

//translate 位置转移动画效果-------------  

<translate xmlns:android="http://schemas.android.com/apk/res/android"  

    android:fromXDelta="0"  

    android:toXDelta="100"  

    android:fromYDelta="0"  

    android:toYDelta="100" />  

//fromXDelta:动画开始view左上角的x坐标  

//toXDelta:动画结束时view左上角的x坐标  

//fromYDelta动画开始时view左上角的y坐标  

//toYDelta:动画结束时view左上角的y坐标     

  

//view动画合集-------------  

<set xmlns:android="http://schemas.android.com/apk/res/android"  

    android:shareInterpolator="true">  

    <alpha />  

    <rotate />  

    <scale />  

    <translate />  

    <set>  

        ...  

    </set>  

</set>  

  

//shareInterpolator:集合中的动画是否共享插值器。如果合集中子项也有插值器,子项的起作用。  

//xml中定义的view动画合集只能一起播放,顺序播放可以在代码中定义。  

  

//在代码中引用生成动画  

Animation myAnimation = AnimationUtils.loadAnimation(this,R.anim.my_action);  

  

//--------------------------------------------  

//代码中定义view动画:  

//alpha 透明度动画  

AlphaAnimation alphaAnimation=new AlphaAnimation(0.1f, 1.0f);  

  

//rotate 旋转动画效果  

public RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue,int pivotYType, float pivotYValue)   

//pivotYType,pivotYValue:可以取值为Animation.ABSOLUTE(绝对)、Animation.RELATIVE_TO_SELF(相对自身)、Animation.RELATIVE_TO_PARENT(相对父)  

  

//scale 尺寸伸缩动画效果  

public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)  

  

//translate 位置转移动画效果  

public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,int fromYType, float fromYValue, int toYType, float toYValue)  

  

//AnimationSet view动画集合  

//同时播放  

AnimationSet set=new AnimationSet(true);   

set.addAnimation(alphaAnimation);   

set.addAnimation(rotateAnimation);   

set.addAnimation(scaleAnimation);   

set.addAnimation(translateAnimation);   

set.addAnimation(aSet);   

  

//顺序播放  

AnimatorSet set = new AnimatorSet();  

set.play(anim1).before(anim2);  

set.play(anim2).with(anim3);  

set.play(anim2).with(anim4)  

set.play(anim5).after(amin2);  

//--------------------------------------------  

//view动画使用:  

view.startAnimation(animation);  

  

//动画可以设置监听  

animation.setAnimationListener(new Animation.AnimationListener() {  

     @Override  

     public void onAnimationStart(Animation animation) {  

         // 动画开始时执行  

     }  

  

     @Override  

     public void onAnimationEnd(Animation animation) {  

         // 动画结束时执行  

     }  

  

     @Override  

     public void onAnimationRepeat(Animation animation) {  

         // 动画每次重复时执行  

     }  

});     

 

分享到:
评论

相关推荐

    微信小程序 UI与容器组件总结

    总结与概述  2.容器组件  2.1 组件容器(view)  2.2 可滚动视图容器(scroll-view)  2.3 滑块视图容器(swiper) 1.总结与概述 1.1 UI组件总结图  1.2 概述  小程序的UI组件也就是定义用户界面的一系列标签...

    《深入理解Android》卷Ⅰ

    8.6.2 ViewRoot的你问我答 8.6.3 LayerBuffer分析 8.7 本章小结 第9章 深入理解Vold和Rild 9.1 概述 9.2 Vold的原理与机制分析 9.2.1 Netlink和Uevent介绍 9.2.2 初识Vold 9.2.3 NetlinkManager模块分析 9.2.4 ...

    android群雄传

    第1章 Android体系与系统架构 1 1.1 Google生态系统 2 1.2 Android系统架构 2 1.2.1 Linux 3 1.2.2 Dalvik与ART 3 1.2.3 Framework 3 1.2.4 Standard libraries 4 ...13.3 实战经验总结 342

    Visual C++ 数据库系统开发完全手册.part2

    5.1 Document与View概述 5.2 Document与View之间的相互作用 5.2.1 CView类的GetDocument()成员函数 5.2.2 CDocument类的UpdateAllViews()成员函数 5.2.3 CView类的OnUpdate()成员函数 5.3 菜单设计 5.3.1 建立菜单...

    Visual C++ 数据库系统开发完全手册.part1

    5.1 Document与View概述 5.2 Document与View之间的相互作用 5.2.1 CView类的GetDocument()成员函数 5.2.2 CDocument类的UpdateAllViews()成员函数 5.2.3 CView类的OnUpdate()成员函数 5.3 菜单设计 5.3.1 建立菜单...

    EF增删改查

    EF增删改查Dome方便学习快速开发期待已久的EF终于来了。... View中需要显示的数据和Models中实体模型不一定能对应上, 因此需要专门给View使用的自定义数据模型,我们称之为ViewModel , 放在ViewModels文件夹里面。

    蓝色渐变扁平化年终工作总结PPT模板

    一、年度工作概述 GENERAL VIEW 二、工作完成情况 WORK COMPLETED 三、项目成果展示 PROJECT RESULTS 四、新年工作计划 PROJECT RESULTS ... 关键词:蓝色扁平化年终工作总结PPT模板,渐变风商务演示PPT模板免费下载...

    android onTouchEvent处理机制总结(必看)

    这次我自己总结下关于触摸事件的一些知识点。一来可以让自己对触摸事件印象更加深刻,也给以后的项目做一个参考。最难理解的其实是onTouchEvent方法。 一、 概述 1.只有view,ViewGroup,Activity 具有事件分发和...

    深入理解Android卷1全

    8.6.2 ViewRoot的你问我答 / 384 8.6.3 LayerBuffer分析 / 385 8.7 本章小结 / 394 第9章 深入理解Vold和Rild / 395 9.1 概述 / 396 9.2 Vold的原理与机制分析 / 396 9.2.1 Netlink和Uevent介绍 / 397 9.2.2 初识...

    Android动画探索之属性动画

    这篇文章来总结下属性动画,通过下面几点来了解下属性动画的内容: 属性动画概述 属性动画工作原理 ValueAnimator ObjectAnimator ValueAnimator和ObjectAnimator区别 插值器 估值期 插值器和估值期的区别 一.概述 1...

    Vue底层实现原理总结

    最近在研究 剖析Vue原理&实现双向绑定MVVM 这篇文章,一边学习一边总结一下自己的思考。 Vue是一个典型的MVVM框架,模型(Model)只是普通的JavaScript对象,修改它则视图(View)会自动更新。这种设计让状态管理变...

    J2ee 博客系统 毕业设计 课程设计

    1 概述 8 1.1 项目背景 8 1.2 系统说明 8 1.3 产品应遵循标准或规范 8 1.4 设计原则 8 1.5 专业术语与缩写解释(如表1) 9 2 运行架构 10 2.1 基本设计理念 10 2.2 总体结构图设计 10 2.3 运行环境设计 11 3 网络平台 ...

    Asp.net物资流通管理系统源码

    7.1.1 MICROSOFT.NET技术及其应用概述 21 7.1.2 MICROSOFT.NET平台的构成 21 7.1.3 C#语言简介 22 7.2 数据库的连接与关闭连接 22 7.2.1 数据库连接与关闭连接的重要性 22 7.2.2 该系统中数据库的连接与关闭 22 7.3 ...

    ASP.NET Night Words

    9.3 asp.net验证控件概述 148 9.4 requiredfieldvalidator控件 149 9.5 comparevalidator控件 151 9.6 rangevalidator控件 155 9.7 正则表达式 157 9.8 regularexpressionvalidator控件 159 9.9 ...

    基于学生快速选课管理系统的毕业设计实现.zip

    ## 系统概述 学生快速选课管理系统是一款基于Web的应用程序,它允许学生快速选择他们想要的课程,并允许管理员查看和管理选课数据。该系统可供学生在任何时间和地点使用,并提供简单易用的用户界面。 ## 功能特点 ...

    c#物资流通管理系统源码

    7.1.1 MICROSOFT.NET技术及其应用概述 21 7.1.2 MICROSOFT.NET平台的构成 21 7.1.3 C#语言简介 22 7.2 数据库的连接与关闭连接 22 7.2.1 数据库连接与关闭连接的重要性 22 7.2.2 该系统中数据库的连接与关闭 22...

    Ext Js权威指南(.zip.001

    9.6.2 视图的运行流程:ext.view.abstractview与ext.view.view / 466 9.6.3 选择模型的工作流程 / 475 9.6.4 选择模型的配置项、属性、方法和事件 / 480 9.6.5 视图的配置项、属性、方法和事件 / 482 9.6.6 ...

Global site tag (gtag.js) - Google Analytics