我正在添加一个发光动画效果到一个标志。到目前为止,我已经设法使用LayeredDrawable获得了徽标背后的发光图像,但我不知道如何使其具有动画效果。我发现AlphaAnimation可以达到预期的效果,但不幸的是,我只能将其应用于视图,而不能应用于Drawables。怎样才能达到这个效果呢?
发布于 2011-05-22 00:16:14
Android3.0引入了Property Animations。
不幸的是,这仅限于Android3.0和更高版本,不会很快在手机上使用。
发布于 2014-11-11 14:13:02
简单的例子
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。我没有用九个机器人做测试。
发布于 2018-04-17 08:06:51
谢谢你@AndreyNick,它就像一个护身符!我还用它做了一个LayerDrawable,在其中只绘制一个可绘制的(一层)动画。这是代码,可能对某些人有用:
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创建一个可绘制的,使用:
我用毕加索加载徽标,我喜欢在加载(位图onBitmapLoaded回调)时对其进行动画处理。
我希望这能有所帮助!
https://stackoverflow.com/questions/2902222
复制