交互之“Animation”
来源:互联网 发布:jdk 8u131 linux x64 编辑:程序博客网 时间:2024/06/01 23:15
又一个对时间的映射
(如作用于UI时:大小:宽高;形态:(on)Draw();)
属性动画:(反射)getPropertyInitialValue,setProperty //‘估值器’
ValueAnimator(时刻捕捉器).ofObject(估值器:值变方式).setDuration().start() // (Interpolator(插值器,控制值变速率:属性动画(Animator.setInterpolator())默认InterpolatorAccelerateDecelerateInterpolator).getInterpolation(float input:[0,1])){return fraction;//值变进度} ---> (估值器类型:Object)TypeEvaluator.evaluate(float fraction,估值器 startValue,估值器 endValue)//值域
ValueAnimator.getAnimatedFraction()/ (Object:估值器类型)getAnimatedValue()
ValueAnimator.addListener(AnimatorListener{start; cancel; repeat; end; }) //低频捕捉
ValueAnimator.addUpdateListener()//高频 (s)=插值器(值变进度)的变化频率: 变化域内有效元素个数(变化次数/帧数)/duration=平均变化频率(线性插值器)
如V里@Override protected void onDraw(Canvas canvas) {
if (currentPoint == null) {
currentPoint = new Point(RADIUS, RADIUS);
float x = currentPoint.getX();
float y = currentPoint.getY();
canvas.drawCircle(x, y, RADIUS, mPaint);
startAnimation();
} else {
drawCircle(canvas);
}
}
void drawCircle(Canvas canvas) {
float x = currentPoint.getX();
float y = currentPoint.getY();
canvas.drawCircle(x, y, RADIUS, mPaint);
}
void startAnimation(){
ValueAnimator anim = ValueAnimator.ofObject(new TypeEvaluator(){
@Override public Object evaluate(float fraction, Object startValue, Object endValue) {
Point startPoint = (Point) startValue;
Point endPoint = (Point) endValue;
float x = startPoint.getX() + fraction * (endPoint.getX() - startPoint.getX());
float y = startPoint.getY() + fraction * (endPoint.getY() - startPoint.getY());
Point point = new Point(x, y);
return point;
} } , new Point(getWidth() / 2, RADIUS), new Point(getWidth() / 2, getHeight() - RADIUS));
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
currentPoint = (Point) animation.getAnimatedValue();
invalidate();
}
});
anim.setInterpolator(new BounceInterpolator());//AccelerateInterpolator(2f),
anim.setDuration(3000);
anim.start();}
AnimatorSet().(play before with after )
ViewPropertyAnimator: V.animate().alpha(0f)...;//V专用
Tween动画:作用于内容(eg. Drawable):矩阵变换 (Alpha)Animation(initialize(); applyTransformation(float interpolatedTime, Trasformation t(){t.getMatrix();Camera....}; ).setAnimationListener(start;repeat; end;)//低频 V.clearAnimation()
LayoutAnimation to VP: 依次作用于其子V。delay,order
A.overridePendingTransition();//在start或finish后
FragmentTransaction.setCustomAnimations();
自定义ViewPager页面切换动画setPageTransformer(boolean, PageTransformer)
android:animateLayoutChanges="true",LinearLayout中添加View的动画,支持通过setLayoutTransition()自定义
AnimationDrawable.start;
硬件加速
- 交互之“Animation”
- Animation之View Animation
- Animation之Property Animation
- Animation之View Animation
- Android Animation之frame animation
- Android animation学习笔记之propery animation
- Animation---详解Android动画之Frame Animation
- Animation---详解Android动画之Tween Animation
- Android Animation学习之 Animation概述
- (手册)Animation 之 使用Animation View
- android View Animation之Tween animation
- QML之Animation
- Android之Animation
- Android学习之Animation
- android之Animation Interpolator
- Android之Animation
- Android之Animation
- Android学习之Animation
- 'HashMap'
- Android中的5种布局的分析
- Windows命令大全
- 使用rosmake编译ROS功能包时出错:“IOError: [Errno 13] Permission denied: '/home/xxx/.ros/rosdep/sources.cache/”
- 正则表达式匹配某一字符串的所在行
- 交互之“Animation”
- ’HTTP(S)‘
- Java面向对象的三大特性
- 2.3.2 集线器
- Unreal 对比 Unity
- Application——数据传递
- 类、对象和面向对象
- sklearn GridSearchCV简介
- memcached简介及安装