!31149 修复在滚动条出现动画启动之后,设置透明度为0未生效的问题

Merge pull request !31149 from honzx/0420scrolbar
This commit is contained in:
openharmony_ci 2024-05-21 01:21:03 +00:00 committed by Gitee
commit 4842149834
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 11 additions and 2 deletions

View File

@ -158,7 +158,7 @@ void ScrollBarOverlayModifier::StartBarAnimation(HoverAnimationType hoverAnimati
StartHoverAnimation(fgRect, hoverAnimationType);
StartAdaptAnimation(fgRect, needAdaptAnimation);
}
if (opacityAnimationType != OpacityAnimationType::NONE) {
if (opacityAnimationType != OpacityAnimationType::NONE && isScrollable_) {
StartOpacityAnimation(opacityAnimationType);
}
}

View File

@ -129,6 +129,11 @@ public:
positionMode_ = positionMode;
}
void SetScrollable(bool isScrollable)
{
isScrollable_ = isScrollable;
}
private:
Offset GetHoverOffset(const Size& size) const;
// Animatable
@ -148,6 +153,8 @@ private:
HoverAnimationType hoverAnimatingType_ = HoverAnimationType::NONE;
OpacityAnimationType opacityAnimatingType_ = OpacityAnimationType::NONE;
PositionMode positionMode_ = PositionMode::RIGHT;
bool isScrollable_ = false;
};
} // namespace OHOS::Ace::NG

View File

@ -813,6 +813,7 @@ void ScrollablePattern::UpdateScrollBarRegion(float offset, float estimatedHeigh
scrollBar_->SetScrollable(scrollable);
if (scrollBarOverlayModifier_) {
scrollBarOverlayModifier_->SetOpacity(scrollable ? UINT8_MAX : 0);
scrollBarOverlayModifier_->SetScrollable(scrollable);
}
if (scrollable) {
scrollBar_->ScheduleDisappearDelayTask();

View File

@ -274,11 +274,11 @@ HWTEST_F(ScrolleBarTestNg, ScrollBarAnimation002, TestSize.Level1)
auto modifier = scrollPaint->GetOverlayModifier(&paintWrapper);
auto scrollBarOverlayModifier = AceType::DynamicCast<ScrollBarOverlayModifier>(modifier);
pattern_->SetScrollBar(DisplayMode::ON);
scrollBarOverlayModifier->SetScrollable(true);
EXPECT_EQ(scrollBar->displayMode_, DisplayMode::ON);
EXPECT_TRUE(scrollBar->NeedPaint());
ASSERT_NE(scrollBarOverlayModifier, nullptr);
EXPECT_EQ(scrollBarOverlayModifier->GetOpacity(), UINT8_MAX);
EXPECT_NE(scrollBarOverlayModifier->opacityAnimation_, nullptr);
EXPECT_EQ(scrollBarOverlayModifier->opacityAnimatingType_, OpacityAnimationType::NONE);
/**
@ -298,6 +298,7 @@ HWTEST_F(ScrolleBarTestNg, ScrollBarAnimation002, TestSize.Level1)
*/
scrollBar->PlayScrollBarAppearAnimation();
scrollPaint->UpdateOverlayModifier(&paintWrapper);
EXPECT_NE(scrollBarOverlayModifier->opacityAnimation_, nullptr);
EXPECT_EQ(scrollBarOverlayModifier->opacityAnimatingType_, OpacityAnimationType::NONE);
/**