在Android中的可绘制设备上应用动画

在Android中的可绘制设备上应用动画,android,animation,drawable,Android,Animation,Drawable,我正在为徽标添加辉光动画效果。到目前为止,我已经使用LayeredDrawable获得了徽标后面的发光图像,但我不知道如何设置它的动画。我发现AlphaAnimation可以达到预期的效果,但不幸的是,我只能将其应用于视图,而不能应用于绘图。如何实现此效果?我正在ImageView上使用一个动画来显示可绘制图像。我认为这在你的情况下也应该是可能的。Android 3.0的推出 不幸的是,这仅限于Android 3.0及更高版本,而Android 3.0及更高版本在短期内无法在手机上使用。简单示例

我正在为徽标添加辉光动画效果。到目前为止,我已经使用LayeredDrawable获得了徽标后面的发光图像,但我不知道如何设置它的动画。我发现AlphaAnimation可以达到预期的效果,但不幸的是,我只能将其应用于视图,而不能应用于绘图。如何实现此效果?

我正在ImageView上使用一个动画来显示可绘制图像。我认为这在你的情况下也应该是可能的。

Android 3.0的推出

不幸的是,这仅限于Android 3.0及更高版本,而Android 3.0及更高版本在短期内无法在手机上使用。

简单示例

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()
加载项api 19。但这不是一个很大的限制,您可以将状态保存在局部变量中
ObjectAnimator
add-in Android 3.0(api 11),可能是您可以使用的旧版本Android。我没有用NineoladDroids进行测试。

谢谢@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();
我需要为动作栏创建一个可绘制的,带有:

  • 作为背景色的层(0)和
  • 具有 标志中间(带有渐变动画)
我用毕加索加载徽标,并且我喜欢在加载后为其制作动画(位图onBitmapLoaded回调)


我希望这能有所帮助

不幸的是,分层可绘制视图似乎创建了一个ImageView。因此,如果我要应用Alpha动画,那么它将同时应用于徽标和光晕。这非常好!我只需要设置背景alpha颜色的动画,而不是ImageView表面上的可绘制图标。这种方法肯定有帮助。谢谢