作者:黄姐佛光普照_516 | 来源:互联网 | 2023-09-08 10:45
我有一个基于views :: BubbleDialogDelegateView的弹出对话框(类似于ProfileChooserView)。
class WebViewPopup : public views::BubbleDialogDelegateView,public ExtensionViewViews::Container,public content::NotificationObserver,public TabStripModelObserver,public content::DevToolsAgentHostObserver,public zoom::zoomObserver,public FullscreenObserver
{
....
static void ShowPopup(views::Button* anchor_button,Browser* browser) {
auto* popup =
new WebViewPopup(anchor_button,browser);
views::BubbleDialogDelegateView::CreateBubble(popup);
}
....
}
当窗口出现时,我需要从左向右移动(动画)。类似于Opera简易设置栏。
是否有跨平台的方式来移动或设置小部件的动画而不会闪烁?
如果我使用计时器模仿动画并逐步更改小部件大小,则会闪烁
void WebViewPopup::SetPaneWidth(int w)
{
views::Widget* this_widget = this->GetWidget();
gfx::Rect bounds(); //calculate new widget size
this_widget->setbounds(bounds); // flickers!
}
我在chrome \ src \ ui \ wm \ core \ window_animations.cc中找到了窗口动画,它可以正常运行,但是它使用了Aura,并且仅在Windows上可用。
所以,再次要问的主要问题是:是否存在一种跨平台的方式来移动或设置小部件的动画而不会闪烁?