程序员人生 网站导航

Android Material Design-Defining Custom Animations(自定义动画)-(六)

栏目:互联网时间:2014-11-25 08:21:26

转载请注明出处:http://blog.csdn.net/bbld_/article/details/40633327

 

用户跟你的app进行交互时,material design中的动画给予用户动作的反馈和提供视觉的1致性(感受)。Material主题提供了1些默许的按钮和activity过渡的动画效果,而在Android 5.0(API级别21)或以上的系统版本中你可以自定义这些动画,还可以创建新的动画:

l  Touch feedback(触摸反馈)

l  Circular Reveal(循环显示)

l  Activity transitions(Activity过渡)

l  Curved motion(曲线运动)

l  View state changes(视图状态改变)

 

自定义触摸反馈

当用户与用户界面进行交互时,materialdesign中的触摸反馈在触摸点上提供了1种瞬时视觉确认。按钮的默许触摸反馈动画使用新的RippleDrawable类,它使用涟漪(波纹)效应在不同状态间转换。

在大多数情况下,你应当在你的布局XML文件中使用以下的方法去指定视图的背景:

l  ?android:attr/selectableItemBackground for a bounded ripple(有界的波纹)

l  ?android:attr/selectableItemBackgroundBorderless for a ripple that extends beyond the view(能越界的波纹)

注意:selectableItemBackgroundBorderless是API级别21上的新属性。

或,你可以定义1个RippleDrawable作为波纹元素的XML资源

你可以给RippleDrawable对象指定1种色彩。要更改默许的触摸反馈色彩,使用主题的android:colorControlHighlight属性。

更多的信息,请参阅RippleDrawable类的API文档说明。

 

使用揭露效果

当你显示或隐藏1组UI元素时,显示动画为用户提供视觉的连续性(感受)。ViewAnimationUtils.createCircularReveal() 方法使你可使用动画效果来显示或隐藏1个视图。

显示(揭露)之前看不见的视图:

// previously invisible view View myView = findViewById(R.id.my_view); // get the center for the clipping circle int cx = (myView.getLeft() + myView.getRight()) / 2; int cy = (myView.getTop() + myView.getBottom()) / 2; // get the final radius for the clipping circle int finalRadius = myView.getWidth(); // create and start the animator for this view // (the start radius is zero) Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius); anim.start();

隐藏1个可见的视图:

// previously visible view final View myView = findViewById(R.id.my_view); // get the center for the clipping circle int cx = (myView.getLeft() + myView.getRight()) / 2; int cy = (myView.getTop() + myView.getBottom()) / 2; // get the initial radius for the clipping circle int initialRadius = myView.getWidth(); // create the animation (the final radius is zero) Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0); // make the view invisible when the animation is done anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); myView.setVisibility(View.INVISIBLE); } }); // start the animation anim.start();

自定义Activity的过渡

在materialdesign的app中Activity的过渡中,手势产生的不同状态和常见的元素之间的转换(都)提供了视觉的连接。在activities之间,你可以为进入、退出、同享元素的过渡指定自定义动画。

l  1个进入的过渡(动画)决定activity中的所有的视图怎样进入屏幕。例如,在分解(explode)进入过渡(动画)中,所有视图从屏幕外进入并且1起飞向屏幕中心。

l  1个退出的过渡(动画)决定1个activity中的所有视图怎样退出屏幕。例如,在分解(explode)退出过渡(动画)中,所有视图总是从屏幕中间退出。

l  1个同享元素过渡(动画)决定两个activities之间的过渡,怎样同享(它们)的视图。例如,如果两个activities有相同的图象且是有不同的位置和大小,那末changeImageTransform(原文的单词,改变图象变换?)同享元素的过渡转换盒平滑的缩放图象。

        图1:同享元素的过渡。

 

Android 5.0(API级别21)支持这些进入和退出的过渡动画:

l  explode(分解)

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐