当试图将单元格悬停在列表视图中时,我试图从白色背景向灰色略微过渡。出于某种原因,为此不存在标准过渡,并且我们也不能使用时间轴,因为背景填充不是属性。所以我创建了自己的过渡。
这是到目前为止我得到的:
df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],
'B': [3, 3, 3, 4, 4, 5],
'C': [6, 7, 8, 9, 10, 11]})
res = df.groupby(['A', 'B']).apply(lambda x: (x.index).tolist()).reset_index()
print(res)
# A B 0
# 0 1 3 [0, 1, 2]
# 1 2 4 [3, 4]
# 2 2 5 [5]
我以这种方式应用它:
public class BackgroundTransition extends Transition {
private static final double DEFAULT_DURATION = 500;
private Control element;
private Color fromColor;
private Color toColor;
//Other constructors
public BackgroundTransition(Control element, Duration duration, Color fromColor, Color toColor) {
setInterpolator(Interpolator.LINEAR);
setCycleDuration(duration);
this.element = element;
this.fromColor = fromColor;
this.toColor = toColor;
}
//Getters and setters
protected void interpolate(double frac) {
Color color = fromColor.interpolate(toColor, frac);
element.setBackground(new Background(new BackgroundFill(color, CornerRadii.EMPTY, Insets.EMPTY)));
}
}
它可以工作,但是在还原动画时背景闪烁一帧。 (看起来在动画继续播放之前,背景已删除了一帧)
我也使用sideList.setCellFactory(ev -> {
JFXListCell<Label> cell = new JFXListCell<Label>();
BackgroundTransition transition = new BackgroundTransition(cell, Color.WHITE, Color.web("#f5f5f5"));
cell.hoverProperty().addListener((v, oldVal, newVal) -> {
transition.setRate(newVal ? 1 : -1);
transition.playFrom(transition.getCurrentTime());
});
return cell;
});
在Label上测试了相同的动画,并且没有任何闪烁。经过一些测试,我意识到它与JFoenix波纹器有关。如果我使用的组件没有波纹,那么它将不再闪烁。但是我想要这些涟漪。
你能帮我解决吗?