首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中的可绘制对象上应用动画

在Android中的可绘制对象上应用动画
EN

Stack Overflow用户
提问于 2010-05-25 13:26:32
回答 4查看 14.1K关注 0票数 8

我正在添加一个发光动画效果到一个标志。到目前为止,我已经设法使用LayeredDrawable获得了徽标背后的发光图像,但我不知道如何使其具有动画效果。我发现AlphaAnimation可以达到预期的效果,但不幸的是,我只能将其应用于视图,而不能应用于Drawables。怎样才能达到这个效果呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-22 08:16:14

Android3.0引入了Property Animations

不幸的是,这仅限于Android3.0和更高版本,不会很快在手机上使用。

票数 3
EN

Stack Overflow用户

发布于 2014-11-11 22:13:02

简单的例子

代码语言:javascript
运行
复制
final ImageView imageView = (ImageView) findViewById(R.id.animatedImage);
final Button animated = (Button) findViewById(R.id.animated);
animated.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Drawable drawable = imageView.getDrawable();
        if (drawable.getAlpha() == 0) {
            ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(drawable, PropertyValuesHolder.ofInt("alpha", 255));
            animator.setTarget(drawable);
            animator.setDuration(2000);
            animator.start();
        } else {
            ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(drawable, PropertyValuesHolder.ofInt("alpha", 0));
            animator.setTarget(drawable);
            animator.setDuration(2000);
            animator.start();
        }
    }
});

方法getAlpha()在API19中添加。但这不是一个很大的限制,您可以将状态保存在本地变量中。ObjectAnimator在Android3.0(API11)中添加,也许老版本的Android你可以使用nineoldandroids。我没有用九个机器人做测试。

票数 9
EN

Stack Overflow用户

发布于 2018-04-17 16:06:51

谢谢你@AndreyNick,它就像一个护身符!我还用它做了一个LayerDrawable,在其中只绘制一个可绘制的(一层)动画。这是代码,可能对某些人有用:

代码语言:javascript
运行
复制
Drawable[] layers = new Drawable[2];
layers[0] = new ColorDrawable(Color.RED);
BitmapDrawable bd = new BitmapDrawable(activity.getResources(), bitmap);
bd.setGravity(Gravity.CENTER);
Drawable drawLogo = bd;
layers[1] = drawLogo;
LayerDrawable layerDrawable = new LayerDrawable(layers);

layers[1].setAlpha(0);

((AppCompatActivity) activity).getSupportActionBar().setBackgroundDrawable(layerDrawable);

ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(layers[1], PropertyValuesHolder.ofInt("alpha", 255));
animator.setTarget(layers[1]);
animator.setDuration(2000);
animator.start();

我需要为Action Bar创建一个可绘制的,使用:

  • a layer (0)是背景色,
  • a layer (1)中间带有徽标(带有淡入淡出动画)

我用毕加索加载徽标,我喜欢在加载(位图onBitmapLoaded回调)时对其进行动画处理。

我希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2902222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档