美文网首页
对WindowManager中的View设置动画

对WindowManager中的View设置动画

作者: HunterGao35 | 来源:发表于2017-11-07 16:10 被阅读0次

1.直接对View设置传统动画

传统动画包括帧动画和补间动画。帧动画主要是一帧一帧的播放。可以在xml中使用<animation-list>标签设置,也可以在代码中使用AnimationDrawable设置;补间动画主要包括alpha, translate, scale, rotate。

ScaleAnimation animation = new ScaleAnimation(0.0f, 1f, 0.0f, 1f, Animation.ABSOLUTE, 100, Animation.ABSOLUTE, 100);
animation.setDuration(100);
view.setAnimation(animation);
animation.start();
mWindowManager.addView(defaultSplashLayout, lp);

进行这样的设置,view的动画无法生效。原因是动画执行的条件是不能直接添加到最顶层的Window,而是需要一个容器。
如果添加一个容器,则只能对容器内的view进行动画设置,还是无法对容器进行动画设置。

2.对WindowManager.LayoutParams的windowAnimations设置动画

 WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
 lp.type = WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL;
 lp.flags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
 lp.format = PixelFormat.RGB_888;
 lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
 lp.windowAnimations = R.style.default_style;
<style name="default_style">
        <item name="@android:windowEnterAnimation">@anim/window_enter</item>
        <item name="@android:windowExitAnimation">@anim/window_exit</item>
</style>

这样设置以后,这个view都会执行动画,但是动画都是写死在xml文件中的,无法进行动态设置

3.对View设置属性动画

属性动画对最顶层的view是可以执行的。

view.setPivotX(100);
view.setPivotY(100);
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
valueAnimator.setDuration(200).start();
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
       @Override
       public void onAnimationUpdate(ValueAnimator animation) {
              Float value = (Float) animation.getAnimatedValue();
              view.setScaleX(value);
              view.setScaleY(value);
       }
});
mWindowManager.addView(defaultSplashLayout, lp)

至此,就可以对WindowManager的View设置任意的动画了

相关文章

  • 对WindowManager中的View设置动画

    1.直接对View设置传统动画 传统动画包括帧动画和补间动画。帧动画主要是一帧一帧的播放。可以在xml中使用 标签...

  • Android中的动画详解

    Android中动画分为:View动画、帧动画(也属于View动画)、属性动画。View动画是对View做图形变换...

  • View、布局动画

    View动画问题 View动画之后,设置View.setVisibility(View.GONE)无效。解决方法:...

  • Android中动画的种类和实现

    Android 中的动画有三种类型:View Animation(补间动画):只能设置给View,可以进行位置,大...

  • 绕球心旋转View

    setInAnimation:设置View进入屏幕时的动画。setOutAnimation:设置View退出屏幕时...

  • Android开发之View动画

    Android动画主要分为3种 View动画 帧动画 属性动画 何为View动画? View动画主要是对View对...

  • view 的visible gone动画

    1、 4.0后使用 2、 xml 父布局 3、 4.1后子view的动画 4、 给view设置动画 动画结...

  • Android 窗口机制

    本文章主要是分析android中View,Window,WindowManager,WindowManagerSe...

  • 视图(view)相关

    动画种类 通过view.animate设置图层视图位置(默认动画) 通过view.animate({anchor,...

  • 属性动画设置轴点

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

网友评论

      本文标题:对WindowManager中的View设置动画

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