我有一个Button
,其中包含BitmapDrawable
和一行文字。这不重要,但我的drawable在我的文本“上方”,它对应于顶部的第三个按钮。
可使用以下方式设置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
- 类。但我想知道是否还有另一种方法可以解决我的问题?
答案 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有一个答案。看看吧!