自定义动画渲染器 Interceptor

android 有 系统的动画渲染器,  当然也可以实现自定义的动画渲染器。
要实现动画渲染器, 需要实现 android.vidw.animation.Interpolator 接口,这里以实现一个可以来回弹跳的动画渲染器
public class CustomInterceptor implements Interpolator {

@Override
public float getInterpolation(float input) {

if (input <= 0.5)
return input * input;
else
return (1 - input) * (1 - input);

}

}

在Interpolator 接口中只有一个getInterpolation 方法。该方法有一个float 类型的参数,取值范围在0.0-1.0 之间,表示动画的进度,如果参数值为0.0, 表示动画刚开始。如果参数值为1.0, 表示动画已结束。

如果方法的返回值小于1.0, 表示动画对象还没有到达目标点,越接近1.0,动画对象离目标点越近,当等于1.0时,正好到达目标点. 如果返回值大于1.0, 表示动画对象超过了目标点.

加载和开始动画的代码如下:

ImageView imageView = (ImageView) findViewById(R.id.imageview);
Animation animation = AnimationUtils.loadAnimation(this,
R.anim.translate);
animation.setInterpolator(new MyInterceptor());
animation.setRepeatCount(Animation.INFINITE);
imageView.startAnimation(animation);

程序运行后示意图如下, 具体代码请参见 ch11_Interceptor 工程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring中,可以使用自定义拦截器(Interceptor)来对请求进行预处理和后处理。自定义拦截器可以用于实现日志记录、权限验证、性能监控等功能。 下面是自定义拦截器的基本步骤: 1. 创建拦截器类并实现HandlerInterceptor接口。该接口有三个方法: - preHandle:在请求处理之前调用,返回值为boolean类型,如果返回false,则请求中断。 - postHandle:在请求处理之后调用,但是在视图被渲染之前。因此可以在这个方法中对请求域中的属性或视图做出修改。 - afterCompletion:在视图被渲染之后调用。用于资源清理操作。 2. 在Spring配置文件中注册拦截器。 - 配置<mvc:interceptors>元素,将拦截器添加到拦截器链中。 - 或者实现WebMvcConfigurer接口,并重写addInterceptors方法,在该方法中注册拦截器。 下面是一个简单的示例: ```java public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行调用(Controller方法调用之前) System.out.println("调用 MyInterceptor 的 preHandle 方法"); return true; // 如果返回false,则请求中断 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) System.out.println("调用 MyInterceptor 的 postHandle 方法"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作) System.out.println("调用 MyInterceptor 的 afterCompletion 方法"); } } ``` 配置文件中添加: ```xml <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 拦截所有请求 --> <bean class="com.example.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors> ``` 或者实现WebMvcConfigurer接口: ```java @Configuration public class MyMvcConfigurer implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**"); // 拦截所有请求 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值