美文网首页
属性动画设置轴点

属性动画设置轴点

作者: Drc15H | 来源:发表于2017-07-25 09:50 被阅读0次

Android中动画可分为三种:View动画、帧动画和属性动画,其中View动画和属性动画通过对场景里的对象不断做图像变换(平移、缩放、旋转、透明度)从而产生动画效果,而缩放和旋转动画中有轴点的概念。默认情况下轴点是View的中心点,如缩放动画在水平方向上进行缩放的话会导致View向左右两个方向同时进行缩放,旋转动画会绕中心点进行旋转。那么这两种动画如何设置其轴点呢?

对于View动画,其提供了相应的方法直接设置动画的轴点:

//缩放动画
ScaleAnimation scaleAnimation = new ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY);
ScaleAnimation scaleAnimation = ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue);
//旋转动画
RotateAnimation rotateAnimation = new RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY);
RotateAnimation rotateAnimation = new RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue);

pivotX、pivotY,pivotXValue、pivotYValue表示轴点的坐标,表示轴点的坐标,pivotXType、pivotYType分别表示动画在X轴和Y轴相对于物件位置类型,共有三种类型:Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT,默认值为Animation.ABSOLUTE。

对于属性动画,并没有直接提供设置轴点的动画,我们需要在执行某个View的属性动画前设置View的轴点。

View.setPivotX(float pivotX);
View.setPivotY(float pivotY);

其中pivotX和pivotY是相对于该View左上角的坐标值而非相对于整个屏幕左上角的坐标值。如若需要让View绕着底部的中点进行旋转,可设置轴点为:

View.setPivotX(View.getWidth() / 2);
View.setPivotY(View..getHeight());

这里需要注意的是,在onCreate、onStart、onResume中均无法正确得到某个View的宽/高信息,这是因为View的measure过程和Activity的生命周期方法不是同步执行的,因此无法保证Activity执行了onCreate、onStart、onResume时某个View已经测量完毕了,如果View还没有测量完毕,那么获得的宽/高就是0。

可以通过View.post(runnable)方法获取View的宽高,通过post可以将一个runnable投递到消息队列的尾部,然后等待Looper调用此runnable的时候,View也已经初始化好了:

view.post(new Runnable() {
            @Override
            public void run() {
                View.setPivotX(View.getWidth() / 2);
                View.setPivotY(View..getHeight());
            }
        });

这样就把View的轴点设置为了View底部的中点了,然后再执行相应的属性动画即可。

相关文章

  • 属性动画设置轴点

    Android中动画可分为三种:View动画、帧动画和属性动画,其中View动画和属性动画通过对场景里的对象不断做...

  • Chart框架的使用——折线图

    折线图view的初始化 折线图的相关设置 折线相关的属性 轴的属性-x轴 轴的属性-左边的轴 轴的属性-右边的轴 ...

  • 属性动画学习使用总结

    Android 属性动画总结 属性动画的优点 属性动画的使用步骤 实例化属性动画对象 设置属性动画的时长 启动属性...

  • css实现椭圆轨迹旋转

    X轴Y轴在一个矩形内移动 做斜线运动 设置动画延时 设置Y轴延时为动画时长的一半, 运动轨迹变成菱形 设置三次贝塞...

  • CSS3 - 动画

    设置动画 设置调用的动画 animationName:动画名称,由@keyframes属性定义。 设置动画的时间 ...

  • Echarts 采坑笔记

    标题颜色属性修改 背景颜色的设置 设置grid 绘图位置 修改x轴和y轴的颜色 x轴文字倾斜 设置legend 标...

  • HelloChart--BubbleChartView(气泡图)

    在XML中的定义: 控件实例化: chart属性设置: 设置节点、X、Y轴属性: 设置BubbleChartDat...

  • CAAnimation属性

    CAAnimation动画 keyPath 对应的属性CABasicAnimation动画根据XYZ旋转根据X轴旋...

  • Android属性动画

    1、属性动画介绍 属性动画在指定的时间长度内更改属性(对象中的字段)值。 要为某些内容设置动画,请指定要设置动画的...

  • # css3新属性 animation(动画) 、 多列布局co

    1、animation (动画) 属性 设置动画名称animation-name:change; 设置动画时间an...

网友评论

      本文标题:属性动画设置轴点

      本文链接:https://www.haomeiwen.com/subject/gscikxtx.html