悬停背景动画与JFoenix涟漪闪烁

时间:2019-01-16 18:20:34

标签: java javafx jfoenix

当试图将单元格悬停在列表视图中时,我试图从白色背景向灰色略微过渡。出于某种原因,为此不存在标准过渡,并且我们也不能使用时间轴,因为背景填充不是属性。所以我创建了自己的过渡。

这是到目前为止我得到的:

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波纹器有关。如果我使用的组件没有波纹,那么它将不再闪烁。但是我想要这些涟漪。

你能帮我解决吗?

0 个答案:

没有答案