Android 背景转换可在某些设备上不重新绘制
我在两个GradientDrawable之间使用TransitionDrawable two go,并将其设置为按钮的背景drawable。这在两个彩色绘图工具之间转换时效果很好,但是当我尝试使用GradientDrawables时,我得到了一些非常奇怪的结果 在我的2.3.5设备上,一切都运转良好。 在我的4.2.2设备上,按钮只呈现第一个渐变,根本不重画 如果我在开始转换后添加对view.refreshDrawableState()或view.setBackgroundDrawable(drawable)的调用,它会刷新,但事情会变得更奇怪:Android 背景转换可在某些设备上不重新绘制,android,Android,我在两个GradientDrawable之间使用TransitionDrawable two go,并将其设置为按钮的背景drawable。这在两个彩色绘图工具之间转换时效果很好,但是当我尝试使用GradientDrawables时,我得到了一些非常奇怪的结果 在我的2.3.5设备上,一切都运转良好。 在我的4.2.2设备上,按钮只呈现第一个渐变,根本不重画 如果我在开始转换后添加对view.refreshDrawableState()或view.setBackgroundDrawable(dr
- 有些按钮工作正常
- 某些按钮在转换过程中会在点处闪烁
- 无论出于何种原因,一个按钮将转换为黑色,而不是可绘制的第二个渐变
private static void highlightView(View view, Context context) {
TransitionDrawable drawable;
GradientDrawable d1 = new GradientDrawable(Orientation.TOP_BOTTOM, new int[] { HIGHLIGHT_COLOR_1, HIGHLIGHT_COLOR_G1 });
d1.setCornerRadius(3f);
GradientDrawable d2 = new GradientDrawable(Orientation.TOP_BOTTOM,
new int[] { HIGHLIGHT_COLOR_2, HIGHLIGHT_COLOR_G2 });
d2.setCornerRadius(3f);
drawable = new TransitionDrawable(new Drawable[] {
d1,
d2
});
view.setBackgroundDrawable(drawable);
drawable.setCrossFadeEnabled(true);
animateBackground(drawable, true, view);
}
private static void animateBackground(final TransitionDrawable drawable,
final boolean forward, final View view) {
if (view.getBackground() != drawable) return;
if (forward) {
drawable.startTransition(HIGHLIGHT_CYCLE / 2);
} else {
drawable.reverseTransition(HIGHLIGHT_CYCLE / 2);
}
view.postDelayed(new Runnable() {
@Override
public void run() {
animateBackground(drawable, !forward, view);
}
}, HIGHLIGHT_CYCLE / 2);
view.refreshDrawableState(); //without this, no transition occurs at all
}
+我也有同样的问题!我想这是一只虫子!希望谷歌能尽快解决这个问题。