Android 估值器工具类valueUtil
发布日期:2021-06-30 22:37:25 浏览次数:2 分类:技术文章

本文共 3237 字,大约阅读时间需要 10 分钟。

一、解析:

1、方法1:evalute(float percent, Number startValue, Number endValue)

1)使用场景1,ValueAnimator 值动画里:

final int startHeight = mImageView.getHeight();        final int endHeight = mBitmapHeight;        ValueAnimator animator  = ValueAnimator.ofInt(1);        animator.addUpdateListener(new AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animation) {                float fraction = animation.getAnimatedFraction();                               int newHeight = (int) (ValueUtil.evalute(fraction, startHeight, endHeight) + 0.5f);                mImageView.getLayoutParams().height = newHeight;                mImageView.requestLayout();            }        });        animator.setInterpolator(new OvershootInterpolator(4));        animator.setDuration(500);        animator.start();

—————————————————–

(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
请先拍 , 下载请用百度盘
目录如下:
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
01高级架构师四十二个阶段高内容:
01高级架构师四十二个阶段高内容:
这里写图片描述
这里写图片描述
—————————————————–

2)使用场景2,ViewHelper值动画里:

ViewHelper.setScaleX(mLeftConent, evalute(percent, 0.5f, 1.0f));        ViewHelper.setScaleY(mLeftConent, evalute(percent, 0.5f, 1.0f));        // 平移动画 , -width/2 ->0 ,从外到内        ViewHelper.setTranslationX(mLeftConent, evalute(percent, -mScreenWidth / 2.0f, 0));        // 透明度从0.5f到 1.0f        ViewHelper.setAlpha(mLeftConent, evalute(percent, 0.5f, 1.0f));

2、颜色渐变方法:evaluateColor(float fraction, Object startValue, Object endValue)

使用场景:

// 背景动画 ,此动画必须在xml文件的主布局里添加背景图片getBackground().setColorFilter((Integer) evaluateColor(percent, Color.BLACK, Color.TRANSPARENT), Mode.SRC_OVER);

二、代码:

/** * @描述 估值器工具类 * @项目名称 App_imooc * @包名 com.android.imooc.paralla * @类名 ValueUtil * @author chenlin * @date 2015年5月29日 下午12:29:12 * @version 1.0 */public class ValueUtil {
/** * 估值器,得到移动后的位置 * * @param percent * @param startValue * @param endValue * @return */ public static Float evalute(float percent, Number startValue, Number endValue) { float start = startValue.floatValue(); return start + percent * (endValue.floatValue() - start); } /** * 颜色变化过度 * * @param fraction * @param startValue * @param endValue * @return */ public static Object evaluateColor(float fraction, Object startValue, Object endValue) { int startInt = (Integer) startValue; int startA = (startInt >> 24) & 0xff; int startR = (startInt >> 16) & 0xff; int startG = (startInt >> 8) & 0xff; int startB = startInt & 0xff; int endInt = (Integer) endValue; int endA = (endInt >> 24) & 0xff; int endR = (endInt >> 16) & 0xff; int endG = (endInt >> 8) & 0xff; int endB = endInt & 0xff; return (int) ((startA + (int) (fraction * (endA - startA))) << 24) | (int) ((startR + (int) (fraction * (endR - startR))) << 16) | (int) ((startG + (int) (fraction * (endG - startG))) << 8) | (int) ((startB + (int) (fraction * (endB - startB)))); }}

转载地址:https://lovoo.blog.csdn.net/article/details/51531375 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android 重写Animation实现实现下拉图片后弹射回去效果
下一篇:Android 值动画使用三

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月24日 06时50分32秒