动画按钮中的可绘制更改

时间:2013-08-14 14:33:57

标签: android android-layout android-animation android-button android-drawable

我有一个Button,其中包含BitmapDrawable和一行文字。这不重要,但我的drawable在我的文本“上方”,它对应于顶部的第三个按钮。

Examples of using setCompundDrawablesWithIntrisicBounds

可使用以下方式设置drawable:

BitmapDrawable top = new BitmapDrawable(mContext.getResources(), Bitmap.createScaledBitmap(buttonContent.content, 
            mContext.IMAGE_WIDTH, mContext.IMAGE_HEIGHT, false));

    button.setCompoundDrawablesWithIntrinsicBounds(null, top.getCurrent(), null, null);

我设置的图像最初会在某些事件后发生变化,我希望图像更改为动画。我的布局中已经有android:animateLayoutChanges=true字段。

我最初的猜测是创建一个自定义Button - 类。但我想知道是否还有另一种方法可以解决我的问题?

2 个答案:

答案 0 :(得分:1)

您可以为drawable本身设置动画。 TransitionDrawable允许在图层之间交叉淡入淡出(setCrossFadeEnabled(true)),您可以通过

之类的内容开始转换
((TransitionDrawable) button.getCompoundDrawables()[INDEX]).startTransition(MILLIS);

基于Animatable s 的旧答案:请参阅"Drawable Animation" documentation。您也可以将该技术用于复合绘图。

使用类似

的方式启动动画
((Animatable) button.getCompoundDrawables()[INDEX]).start();

或在未从XML设置drawable时保留对Animatable的引用。

答案 1 :(得分:1)

答案“dst”给出的是正确的。但是,如果您正在寻找多个图像之间的交叉渐变动画并且不想使用Animator - 类,则TransitionDrawable不会削减它。它只适用于两个图像。

对于几乎相似的post有一个答案。看看吧!