Commit 8c26ef3e authored by Weidong Guo's avatar Weidong Guo Committed by Commit Bot

Make expand arrow button move more smoothly

1. Add rounded cap and join for the arrow.
2. Change from Point to PointF.

Bug: 861845
Change-Id: Id0019af3eb3f43136dcf13ebe5349ab6e309732b
Reviewed-on: https://chromium-review.googlesource.com/1148987Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Weidong Guo <weidongg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577714}
parent b3a65a61
...@@ -52,14 +52,14 @@ constexpr int kExpandArrowStrokeWidth = 2; ...@@ -52,14 +52,14 @@ constexpr int kExpandArrowStrokeWidth = 2;
// The three points of arrow in peeking and fullscreen state. // The three points of arrow in peeking and fullscreen state.
constexpr size_t kPointCount = 3; constexpr size_t kPointCount = 3;
constexpr gfx::Point kPeekingPoints[] = { constexpr gfx::PointF kPeekingPoints[] = {
gfx::Point(0, kArrowDimension / 4 * 3), gfx::PointF(0, kArrowDimension / 4 * 3),
gfx::Point(kArrowDimension / 2, kArrowDimension / 4), gfx::PointF(kArrowDimension / 2, kArrowDimension / 4),
gfx::Point(kArrowDimension, kArrowDimension / 4 * 3)}; gfx::PointF(kArrowDimension, kArrowDimension / 4 * 3)};
constexpr gfx::Point kFullscreenPoints[] = { constexpr gfx::PointF kFullscreenPoints[] = {
gfx::Point(0, kArrowDimension / 2), gfx::PointF(0, kArrowDimension / 2),
gfx::Point(kArrowDimension / 2, kArrowDimension / 2), gfx::PointF(kArrowDimension / 2, kArrowDimension / 2),
gfx::Point(kArrowDimension, kArrowDimension / 2)}; gfx::PointF(kArrowDimension, kArrowDimension / 2)};
// Arrow vertical transiton animation related constants. // Arrow vertical transiton animation related constants.
constexpr int kTotalArrowYOffset = 24; constexpr int kTotalArrowYOffset = 24;
...@@ -118,9 +118,9 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) { ...@@ -118,9 +118,9 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) {
const int current_height = app_list_view_->GetCurrentAppListHeight(); const int current_height = app_list_view_->GetCurrentAppListHeight();
const int peeking_height = const int peeking_height =
AppListConfig::instance().peeking_app_list_height(); AppListConfig::instance().peeking_app_list_height();
gfx::Point circle_center(kTileWidth / 2, kCircleCenterPeekingY); gfx::PointF circle_center(kTileWidth / 2, kCircleCenterPeekingY);
gfx::Point arrow_origin((kTileWidth - kArrowDimension) / 2, kArrowPeekingY); gfx::PointF arrow_origin((kTileWidth - kArrowDimension) / 2, kArrowPeekingY);
gfx::Point arrow_points[kPointCount]; gfx::PointF arrow_points[kPointCount];
for (size_t i = 0; i < kPointCount; ++i) for (size_t i = 0; i < kPointCount; ++i)
arrow_points[i] = kPeekingPoints[i]; arrow_points[i] = kPeekingPoints[i];
SkColor circle_color = SkColor circle_color =
...@@ -135,12 +135,12 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) { ...@@ -135,12 +135,12 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) {
DCHECK_GT(peeking_to_fullscreen_height, 0); DCHECK_GT(peeking_to_fullscreen_height, 0);
const double progress = const double progress =
(current_height - peeking_height) / peeking_to_fullscreen_height; (current_height - peeking_height) / peeking_to_fullscreen_height;
circle_center.set_y(gfx::Tween::IntValueBetween( circle_center.set_y(gfx::Tween::FloatValueBetween(
progress, kCircleCenterPeekingY, kCircleCenterFullscreenY)); progress, kCircleCenterPeekingY, kCircleCenterFullscreenY));
arrow_origin.set_y(gfx::Tween::IntValueBetween(progress, kArrowPeekingY, arrow_origin.set_y(gfx::Tween::FloatValueBetween(progress, kArrowPeekingY,
kArrowFullscreenY)); kArrowFullscreenY));
for (size_t i = 0; i < kPointCount; ++i) { for (size_t i = 0; i < kPointCount; ++i) {
arrow_points[i].set_y(gfx::Tween::IntValueBetween( arrow_points[i].set_y(gfx::Tween::FloatValueBetween(
progress, kPeekingPoints[i].y(), kFullscreenPoints[i].y())); progress, kPeekingPoints[i].y(), kFullscreenPoints[i].y()));
} }
circle_color = gfx::Tween::ColorValueBetween(progress, circle_color, circle_color = gfx::Tween::ColorValueBetween(progress, circle_color,
...@@ -176,6 +176,8 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) { ...@@ -176,6 +176,8 @@ void ExpandArrowView::PaintButtonContents(gfx::Canvas* canvas) {
arrow_flags.setAntiAlias(true); arrow_flags.setAntiAlias(true);
arrow_flags.setColor(kExpandArrowColor); arrow_flags.setColor(kExpandArrowColor);
arrow_flags.setStrokeWidth(kExpandArrowStrokeWidth); arrow_flags.setStrokeWidth(kExpandArrowStrokeWidth);
arrow_flags.setStrokeCap(cc::PaintFlags::Cap::kRound_Cap);
arrow_flags.setStrokeJoin(cc::PaintFlags::Join::kRound_Join);
arrow_flags.setStyle(cc::PaintFlags::kStroke_Style); arrow_flags.setStyle(cc::PaintFlags::kStroke_Style);
gfx::Path arrow_path; gfx::Path arrow_path;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment