快速动画显示半透明圆圈

时间:2014-08-03 07:39:28

标签: android c++ qt animation qt5

我正在使用Qt for Android开发一个简单的测试应用程序。我试图通过显示半透明圆圈来为屏幕上的每个用户触摸设置动画,例如,将半径从0增加到100。

我在所有小部件上添加了一个自定义QLabel。我正在尝试使用QPropertyAnimation为自定义属性更新它的QPixmap动画

Q_PROPERTY(QRect circleGeometry READ getCircleGeometry WRITE setCircleGeometry)

setter是:

void CircleLabel::setCircleGeometry(QRect circleGeometry)
{
    QPixmap pixmap(this->size());
    pixmap.fill(Qt::transparent);

    QPainter painter(&pixmap);
    painter.setOpacity(0.2);
    painter.setPen(QPen(Qt::transparent));
    painter.setBrush(QBrush(Qt::white));
    painter.setRenderHint(QPainter::Antialiasing);

    painter.drawEllipse(circleGeometry);

    this->setPixmap(pixmap);
}

我知道,setter对于动画而言太重了,所以它在我的Android设备上运行得很慢。 能否请您建议我如何修改动画以使其快速顺畅。

1 个答案:

答案 0 :(得分:0)

所以...我的解决方案是在应用程序启动时创建一次QPixmaps矢量,然后我的CircleLabel :: setCircleGeometry将如下所示:

void CircleLabel::setCircleGeometry(int currentIdx)
{
    this->setPixmap(preGeneratedPixmaps[currentIdx]);
}