mcu_hi3321_watch/tjd/ui/app/main/effect/TjdUiAppCurtainGaosiEffect.cpp
2025-05-26 20:15:20 +08:00

97 lines
3.4 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
*
* Description:
*
* Author: huangshuyi
*
* Create: 2024-8
*--------------------------------------------------------------------------*/
#include "common/screen.h"
#include "TjdUiAppCurtainGaosiEffect.h"
#include "dfx/dfx_dom_dump.h"
using namespace OHOS;
namespace TJD {
void TjdUiAppCurtainGaosiEffect::OnSwipe(UISwipeView& view)
{
ImageInfo info;
if (preLeftCard) {
container_->UIViewGroup::Remove(screenshotImage_);
container_->UIViewGroup::Remove(group);
if (preLeftCard->GetViewType() != UI_IMAGE_VIEW) {
ImageCacheFree(screenshotInfo_);
}
delete screenshotImage_;
delete group;
screenshotImage_ = nullptr;
preLeftCard->SetVisible(true);
preRightCard->SetVisible(true);
preLeftCard = nullptr;
preRightCard = nullptr;
}
}
// 左rose 中cat 右dove
//向右滑 leftcard是rose rightcard是cat
//向左滑 leftcard是cat rightcard是dove
void TjdUiAppCurtainGaosiEffect::CommonAlg(UIView* leftCard, UIView* rightCard, int16_t xOffset)
{
//printf("xOffset:%d\n", xOffset);
if (preLeftCard != leftCard && preRightCard != rightCard) {
//printf("init preLeftCard and preRightCard\n");
if (leftCard->GetViewType() == UI_IMAGE_VIEW) {
if (xOffset > 0) {
screenshotInfo_ = *(static_cast<UIImageView *>(rightCard)->GetImageInfo());
} else {
screenshotInfo_ = *(static_cast<UIImageView *>(leftCard)->GetImageInfo());
}
} else {
if (xOffset > 0) {
rightCard->GetBitmap(screenshotInfo_);
} else {
leftCard->GetBitmap(screenshotInfo_);
}
}
preLeftCard = leftCard;
preRightCard = rightCard;
if (screenshotImage_ == nullptr) {
screenshotImage_ = new UIImageView();
group = new UIViewGroup();
group->SetPosition(0, 0, Screen::GetInstance().GetHeight(), Screen::GetInstance().GetWidth());
group->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
group->SetBackgroundBlur(10);
group->SetFullScreenBlur(false);
}
screenshotImage_->SetPosition(0, 0, Screen::GetInstance().GetHeight(), Screen::GetInstance().GetWidth());
if (xOffset > 0) {
rightCard->SetVisible(false);
screenshotImage_->SetSrc(&screenshotInfo_);
container_->UIViewGroup::Insert(nullptr, screenshotImage_);
container_->UIViewGroup::Insert(screenshotImage_, group);
// DfxDomDump::GetInstance().DumpView(container_);
} else {
screenshotImage_->SetSrc(&screenshotInfo_);
leftCard->SetVisible(false);
container_->UIViewGroup::Insert(nullptr, screenshotImage_);
container_->UIViewGroup::Insert(screenshotImage_, group);
// DfxDomDump::GetInstance().DumpView(container_);
//DfxDomDump::GetInstance().DumpView(container_);
}
}
return;
}
void TjdUiAppCurtainGaosiEffect::CardSwipeAlg(UICardPage* leftCard, UICardPage* rightCard, int16_t xOffset)
{
CommonAlg(leftCard, rightCard, xOffset);
}
void TjdUiAppCurtainGaosiEffect::CardSwipeAlg(UIImageView* leftCard, UIImageView* rightCard, int16_t xOffset)
{
CommonAlg(leftCard, rightCard, xOffset);
}
}