在Android中的可绘制设备上应用动画
我正在为徽标添加辉光动画效果。到目前为止,我已经使用LayeredDrawable获得了徽标后面的发光图像,但我不知道如何设置它的动画。我发现AlphaAnimation可以达到预期的效果,但不幸的是,我只能将其应用于视图,而不能应用于绘图。如何实现此效果?我正在ImageView上使用一个动画来显示可绘制图像。我认为这在你的情况下也应该是可能的。Android 3.0的推出 不幸的是,这仅限于Android 3.0及更高版本,而Android 3.0及更高版本在短期内无法在手机上使用。简单示例在Android中的可绘制设备上应用动画,android,animation,drawable,Android,Animation,Drawable,我正在为徽标添加辉光动画效果。到目前为止,我已经使用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)和
- 具有 标志中间(带有渐变动画)
我希望这能有所帮助 不幸的是,分层可绘制视图似乎创建了一个ImageView。因此,如果我要应用Alpha动画,那么它将同时应用于徽标和光晕。这非常好!我只需要设置背景alpha颜色的动画,而不是ImageView表面上的可绘制图标。这种方法肯定有帮助。谢谢