1

我有一个ButtonBitmapDrawable里面有一行文本。没关系,但我的drawable在我的文本“上方”,它对应于顶部的第三个按钮。

使用 setCompundDrawablesWithIntrisicBounds 的示例

可绘制对象使用以下方法设置:

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类。但我想知道是否有另一种方法可以解决我的问题?

4

2 回答 2

1

您可以为可绘制对象本身设置动画。ATransitionDrawable允许在层之间交叉淡入淡出(setCrossFadeEnabled(true)),您可以通过类似的方式开始过渡

((TransitionDrawable) button.getCompoundDrawables()[INDEX]).startTransition(MILLIS);

基于Animatables 的旧答案:请参阅“可绘制动画”文档。您也可以将该技术用于复合可绘制对象。

使用类似的东西开始动画

((Animatable) button.getCompoundDrawables()[INDEX]).start();

或持有对Animatable未从 XML 设置可绘制对象时的引用。

于 2013-08-14T14:38:26.393 回答
1

“dst”给出的答案是正确的。但是,如果您正在寻找多个图像之间的交叉淡入淡出动画并且不想使用Animator-classes ,那么TransitionDrawable就不会削减它。它仅适用于两个图像。

几乎类似的帖子有一个答案。看看这个!

于 2013-08-16T09:28:45.277 回答