Android 移动跟渐变动画代码实现(AnimationUtils)
来源:互联网 发布:vb中picturebox画粗线 编辑:程序博客网 时间:2024/05/17 03:28
Android动画实现的有两个方式:
1、在代码中通过实例化Animation
使用:view.startAnimation(Animation animation)
2、通过在res——>anim 添加xml文件
使用:view.setAnimation(AnimationUtils.loadAnimation(Context context,int id));
上面使用到了startAnimation跟setAnimation
区别:startAnimation来启动动画,setAnimation启动动画是需要条件的(具体可以查网)
这里想跟大家介绍的是第一种。
不过不是否认第二种,只是觉得第二种的话要新建很多xml文件,比较麻烦。
一、这里提供一个工具类:AnimationUtils 支持移动跟渐变动画效果,缩放跟旋转动画暂时还没写,后续有需要会更新上来
/** * @author SoBan * @create 2017/2/6 10:02. * 调用方式: view.startAnimation(AnimationUtils.method(...)); */ public class AnimationUtils { /** * 渐变的一种效果 * * @param fromAlpha * @param toAlpha */ public static Animation setAlphaAnimation(float fromAlpha, float toAlpha) { Animation alphaAnimation = new AlphaAnimation(fromAlpha, toAlpha); alphaAnimation.setDuration(500); return alphaAnimation; } /** * 定义从屏幕顶部进入的动画效果 * * @param context */ public static Animation inFromTopAnimation(Context context) { Animation inFromTop = new TranslateAnimation(0.0f, 0.0f, -DensityUtils.getScreenHeight(context), 0.0f); inFromTop.setFillAfter(true); inFromTop.setDuration(500); inFromTop.setRepeatMode(Animation.ZORDER_BOTTOM); return inFromTop; } /** * 定义从屏幕顶部退出的动画效果 * * @param context */ public static Animation outToTopAnimation(Context context) { Animation outToTop = new TranslateAnimation(0.0f, 0.0f, 0.0f, -DensityUtils.getScreenHeight(context)); outToTop.setFillAfter(true); outToTop.setDuration(500); outToTop.setRepeatMode(Animation.ZORDER_BOTTOM); return outToTop; } /** * 定义从屏幕底部进入的动画效果 * * @param context */ public static Animation inFromBottomAnimation(Context context) { Animation inFromBottom = new TranslateAnimation(0.0f, 0.0f, DensityUtils.getScreenHeight(context), 0.0f); inFromBottom.setFillAfter(true); inFromBottom.setDuration(500); inFromBottom.setRepeatMode(Animation.ZORDER_TOP); return inFromBottom; } /** * 定义从屏幕底部退出的动画效果 * * @param context */ public static Animation outToBottomAnimation(Context context) { Animation outToBottom = new TranslateAnimation(0.0f, 0.0f, 0.0f, DensityUtils.getScreenHeight(context)); outToBottom.setFillAfter(true); outToBottom.setDuration(500); outToBottom.setRepeatMode(Animation.ZORDER_NORMAL); return outToBottom; } /** * 定义从左侧进入的动画效果 */ public static Animation inFromLeftAnimation() { Animation inFromLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); inFromLeft.setDuration(500); inFromLeft.setInterpolator(new AccelerateInterpolator()); return inFromLeft; } /** * 定义从左侧退出的动画效果 */ public static Animation outToLeftAnimation() { Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); outtoLeft.setDuration(500); outtoLeft.setInterpolator(new AccelerateInterpolator()); return outtoLeft; } /** * 定义从右侧进入的动画效果 */ public static Animation inFromRightAnimation() { Animation inFromRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); inFromRight.setDuration(500); inFromRight.setInterpolator(new AccelerateInterpolator()); return inFromRight; } /** * 定义从右侧退出时的动画效果 */ public static Animation outToRightAnimation() { Animation outtoRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); outtoRight.setDuration(500); outtoRight.setInterpolator(new AccelerateInterpolator()); return outtoRight; }}二、获取屏幕宽高 DensityUtils
public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获取屏幕宽度 * * @param context * @return */ public static int getScreenWidth(Context context) { return context.getResources().getDisplayMetrics().widthPixels; } /** * 获取屏幕高度 * * @param context * @return */ public static int getScreenHeight(Context context) { return context.getResources().getDisplayMetrics().heightPixels; }}
0 0
- Android 移动跟渐变动画代码实现(AnimationUtils)
- 【Android】Android动画入门Animation 、AnimationUtils
- 【Android】Android动画入门Animation 、AnimationUtils
- 【Android】Android动画入门Animation 、AnimationUtils
- android代码实现渐变
- Android中补间动画1----Animation的基本使用代码实现(平移,缩放,渐变,旋转)
- android动画,透明度渐变,图片移动
- Android-实现背景渐变动画
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)代码中的实现
- 使用AnimationUtils载入动画
- android开发游记:通过xml配置快速实现点击热点效果和渐变动画(不用java代码)
- android实现alpha渐变动画效果
- android渐变动画的两种实现
- Android实现View隐藏显示渐变动画
- Android之XML方式实现渐变动画
- Android 自定义TextView实现文字渐变动画
- Android 自定义TextView实现文字渐变动画
- Android实现简单移动动画
- 广度优先搜索
- spring 过滤器的访问顺序
- Android 接入高德地图
- vmware虚拟机上两台虚拟机可以上网,有一台虚拟机突然不能上网
- JAVA中的小数
- Android 移动跟渐变动画代码实现(AnimationUtils)
- linux上启动关闭resin
- java的自定义注解
- 集成学习概述(二)随机子空间 Random subspace method and stacking
- 【51 Nod 1326】遥远的旅途
- SAP创建生产订单时要求输入销售订单
- Leetcode日记(2)
- JAVA中Lambda表达式初谈
- MySQL数据导入动态SQL和PROCEDURE 结合