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) {
// 动画每次重复时执行
}
});
相关推荐
一、SystemView概述 SystemView是由德国Rohde & Schwarz公司开发的一款软件,它提供了直观的图形化界面,能够实时显示和分析模拟或数字信号,支持多种通信标准,如QPSK(四相相移键控)等。通过SystemView,工程师...
### 总结 通过以上介绍可以看出,QlikView Server v11 的四个版本各有侧重,能够满足不同规模的企业对于数据管理和分析的需求。企业可以根据自身的业务规模、安全性要求以及预算等因素选择最合适的版本。此外,测试...
### 关于Table View的总结 #### 一、Table View简介 Table View是iOS应用中非常常见的一种用户界面组件,主要用于展示一系列数据项。它能够帮助开发者以列表的形式组织和显示数据,非常适合用来呈现如联系人列表、...
#### 一、概述 在企业级环境中,为了提高部署效率及减少人工干预,静默安装(Silent Installation)成为了一种常用的软件部署方式。对于VMware View Agent的静默安装,本文将详细介绍其安装过程、参数设置以及常见...
#### 一、概述 VMware View 是一款为企业级桌面虚拟化设计的产品,它能够帮助企业在数据中心集中管理和部署虚拟桌面,从而提高安全性、灵活性并降低维护成本。本文档详细记录了2012年进行的一次VMware View安装部署...
### QlikView 9.0 开发手册知识点总结 #### 一、引言 - **目标受众**:本手册主要面向QlikView的初学者,包括想要了解此商业智能(BI)工具的开发人员。 - **课程内容**:通过本手册的学习,读者将能够掌握QlikView...
#### 二、QlikView自动化接口概述 **2.1 QlikView自动化接口** QlikView自动化接口是一组允许开发者通过外部应用程序来控制QlikView的功能集合。这包括了文档加载、数据刷新、图表生成等操作。通过使用这些API,...
#### 一、概述 随着云计算技术的不断发展,桌面虚拟化成为企业IT管理中一个重要的组成部分。VMware View 4.5作为一款先进的虚拟桌面解决方案,提供了更为灵活和高效的方式来管理和交付桌面环境。本文将详细介绍如何...
#### 一、文档概述与目的 - **文档目的**:本文档旨在为ESSBASE BI项目的用户详细介绍如何使用Ad-Hoc报表展现工具SmartView,帮助用户掌握SmartView的基本操作流程以及高级功能。 #### 二、SmartView的安装与配置 -...
### SystemView概述 - **SystemView**: 是一种用于实时监控和分析嵌入式系统行为的工具。它可以帮助开发者理解系统的实时性能、调度行为以及资源使用情况。 ### 版本与兼容性 - **版本**: SystemView 4.0,这是一...
### QlikView 参考手册知识点总结 #### 第一部分:介绍 **1. 开始之前** - **约定:** - 本章节介绍了在阅读QlikView参考手册时需了解的一些基本约定,如术语的使用、操作步骤的描述格式等。 - **QlikTech支持...
### Qlikview中文参考手册知识点总结 #### 一、引言 - **手册基本信息:** 该手册为Qlikview的官方中文版参考手册,针对的是Microsoft Windows版本11.0,出版时间为2011年10月,由瑞典的QlikTech International AB...
#### 概述 在 VMware Horizon 6.0 的环境中,设置 SSL(Secure Sockets Layer)证书对于确保 View 服务器与客户端之间的通信安全至关重要。本文档提供了两种主要场景来帮助管理员理解如何为 View 服务器配置 SSL ...
通过上述知识点的总结,我们可以看出TradingView的ChartingLibrary不仅功能强大而且高度可定制。无论是对于想要快速集成金融图表的应用开发者,还是希望深入定制图表细节的专业人士来说,这份中文文档都是一份宝贵的...
总结,`View`是Android应用程序界面设计的核心,理解并熟练运用`View`类及其相关机制,对于开发出高效、用户体验良好的Android应用至关重要。开发者不仅要掌握`View`的基本用法,还要深入理解其背后的事件处理、布局...
#### 一、SystemView概述 - **定义与功能**:SystemView是一款专门用于信号级动态系统仿真的软件工具。它能够支持电路设计、通信系统仿真等多个层面的设计需求,从简单的数字信号处理、滤波器设计到复杂的通信系统...
一、View概述 View是Android UI系统的核心组件,它是所有可视化用户界面元素的基类。在Android中,所有的可视控件,如TextView、Button、ImageView等,都继承自View或其子类ViewGroup。ViewGroup可以看作是容器,...