diff --git a/README.md b/README.md index 61a81ff58788aca0e0281f4d5b5f5eeeb5442756..3b5bf20cd4f4bfab4154d67d28e16c9e7a3cb527 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # tooltips #### 项目介绍 -- 项目名称:tooltips。 -- 所属系列:openharmony的第三方组件适配移植。 -- 功能:易于使用的ohos库,可轻松在任何视图附近添加工具提示。 -- 项目移植状态:目前openharmony不支持加载.9图拉伸功能。 +- 项目名称:tooltips +- 所属系列:openharmony的第三方组件适配移植 +- 功能:易于使用的ohos库,可轻松在任何视图附近添加工具提示 +- 项目移植状态:目前openharmony不支持加载.9图拉伸功能 - 调用差异:无 - 基线版本:Release v1.1 - 开发版本:sdk5,DevEco Studio2.1 beta4 @@ -119,9 +119,8 @@ CloudTest代码测试无异常 #### 版本迭代 - ``` - 0.0.1-SNAPSHOT - ``` + #### 版权和许可信息 ``` Copyright 2016 Tomer Goldstein diff --git a/app/build.gradle b/app/build.gradle index 9d526d8af2ced369732b3ddc435127256e3d58db..31f1b234f9be0076f0d1957653402aa2ad874ec0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) testImplementation 'junit:junit:4.13' ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' - implementation('com.gitee.chinasoft_ohos:RWidgetHelper:0.0.3-SNAPSHOT') + implementation('com.gitee.chinasoft_ohos:RWidgetHelper:0.0.1-SNAPSHOT') implementation project(path : ':tooltips') } diff --git a/app/src/main/resources/base/layout/ability_main.xml b/app/src/main/resources/base/layout/ability_main.xml index 619f3e9740ae2bc610b356f7ac3164d979863694..3fef582bb648ee67a8cd64ca341f9c3e11227be1 100644 --- a/app/src/main/resources/base/layout/ability_main.xml +++ b/app/src/main/resources/base/layout/ability_main.xml @@ -92,7 +92,7 @@ ohos:vertical_center="true" ohos:background_element="$graphic:background_text_right" ohos:right_of="$id:ima_right_center" - ohos:left_margin="-10vp" + ohos:left_margin="-3vp" /> @@ -248,7 +249,7 @@ ohos:top_padding="10vp" ohos:padding="15vp" ohos:align_parent_right="true" - ohos:bottom_margin="-8vp" + ohos:bottom_margin="-3vp" /> @@ -335,7 +336,7 @@ ohos:id="$+id:ima_below_left" ohos:height="match_content" ohos:width="match_content" - ohos:left_padding="5vp" + ohos:left_padding="10vp" ohos:image_src="$media:media_up" ohos:horizontal_center="true" ohos:align_parent_left="true" @@ -346,7 +347,7 @@ ohos:height="match_content" ohos:width="match_content" ohos:below="$id:ima_below_left" - ohos:text="" + ohos:text="dsadsad" ohos:padding="12fp" ohos:multiple_lines="true" ohos:text_color="$color:colorWhile" @@ -372,7 +373,7 @@ ohos:id="$+id:ima_below_right" ohos:height="match_content" ohos:width="match_content" - ohos:left_padding="5vp" + ohos:right_padding="5vp" ohos:image_src="$media:media_up" ohos:horizontal_center="true" ohos:align_parent_right="true" @@ -383,7 +384,7 @@ ohos:height="match_content" ohos:width="match_content" ohos:below="$id:ima_below_right" - ohos:text="dsaDsadsadsadsadsadasdasdsad" + ohos:text="dsaDsadsad" ohos:padding="12fp" ohos:multiple_lines="true" ohos:text_color="$color:colorWhile" diff --git a/tooltips/build.gradle b/tooltips/build.gradle index f6bde8b1c0182462b3f266a09f0d083da422bed4..4b5173f941ac87d66b817a12003b92d48fd27f83 100644 --- a/tooltips/build.gradle +++ b/tooltips/build.gradle @@ -17,6 +17,6 @@ ohos { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation('com.gitee.chinasoft_ohos:RWidgetHelper:0.0.3-SNAPSHOT') + implementation('com.gitee.chinasoft_ohos:RWidgetHelper:0.0.1-SNAPSHOT') testImplementation 'junit:junit:4.13' } diff --git a/tooltips/src/main/java/com/tomergoldst/tooltipshm/DefaultToolTipAnimator.java b/tooltips/src/main/java/com/tomergoldst/tooltipshm/DefaultToolTipAnimator.java index 71264858dc1185ccae221e5d56e56cda2bd419f5..ee0ac940993978213b49354185a807c1ac2e054f 100644 --- a/tooltips/src/main/java/com/tomergoldst/tooltipshm/DefaultToolTipAnimator.java +++ b/tooltips/src/main/java/com/tomergoldst/tooltipshm/DefaultToolTipAnimator.java @@ -18,7 +18,6 @@ import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorProperty; import ohos.agp.components.Component; import ohos.agp.components.DependentLayout; -import ohos.agp.components.Image; import ohos.agp.components.Text; class DefaultToolTipAnimator implements ToolTipAnimator { @@ -26,7 +25,7 @@ class DefaultToolTipAnimator implements ToolTipAnimator { public AnimatorProperty popup(Text view, DependentLayout image, long duration) { view.setVisibility(Component.VISIBLE); AnimatorProperty abovePopup = new AnimatorProperty(); - abovePopup.alphaFrom(0).alpha(90).setCurveType(new Animator.CurveType().ANTICIPATE).setDuration(500); + abovePopup.alphaFrom(0).alpha(90).setCurveType(new Animator.CurveType().ANTICIPATE).setDuration(300); abovePopup.setTarget(image); abovePopup.start(); return abovePopup; diff --git a/tooltips/src/main/java/com/tomergoldst/tooltipshm/ToolTipsManager.java b/tooltips/src/main/java/com/tomergoldst/tooltipshm/ToolTipsManager.java index 4a91789e9a26bb3b7565eb026de28bf4e7d5d5ad..c1537ad7cab3c63054a264151b00d572c7b8e5b8 100644 --- a/tooltips/src/main/java/com/tomergoldst/tooltipshm/ToolTipsManager.java +++ b/tooltips/src/main/java/com/tomergoldst/tooltipshm/ToolTipsManager.java @@ -20,11 +20,8 @@ import com.ruffian.library.widget.component.RRadioButton; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorProperty; import ohos.agp.components.*; -import ohos.agp.components.element.PixelMapElement; import ohos.agp.utils.TextAlignment; -import ohos.global.resource.NotExistException; -import java.io.IOException; import java.util.List; public class ToolTipsManager { @@ -83,7 +80,6 @@ public class ToolTipsManager { private Text tvAboveRight; private Text belowImageLeft; private Text belowImageRight; - /** * empty build ToolTipsManager */ @@ -113,10 +109,12 @@ public class ToolTipsManager { this.checkboxLeft = checkList.get(ZERO); checkboxCenter = checkList.get(FIRST); checkboxRight = checkList.get(TWO); + mAboveBtn = buttons.get(ZERO); mBelowBtn = buttons.get(FIRST); mLeftToBtn = buttons.get(TWO); mRightToBtn = buttons.get(THREE); + idAboveImageview = texts.get(ZERO); idBelowimageView = texts.get(FIRST); leftImageView = texts.get(TWO); @@ -126,6 +124,8 @@ public class ToolTipsManager { tvAboveRight = texts.get(SIX); belowImageLeft = texts.get(SEVEN); belowImageRight = texts.get(Eight); + + dlAboveleft = dependentLayouts.get(ZERO); dlAboveCenter = dependentLayouts.get(FIRST); dlAboveRight = dependentLayouts.get(TWO); @@ -172,55 +172,33 @@ public class ToolTipsManager { } } - /** - * @param idImageview - * @param imaLeftAbove - * @param resource - */ - private void create(Text idImageview,Image imaLeftAbove, int resource) { + private void createAbove(Text idImageview,Image imaLeftAbove, int resource) { ToolTipBackgroundConstructor.setAboveBackground(idImageview,imaLeftAbove, resource); } - - /** - * @param idImageview - * @param imaLeftAbove - * @param resource - */ private void createLeft(Text idImageview,Image imaLeftAbove, int resource) { ToolTipBackgroundConstructor.setLeftBackground(idImageview,imaLeftAbove, resource); } - - /** - * @param idImageview - * @param imaLeftAbove - * @param resource - */ private void createRight(Text idImageview,Image imaLeftAbove, int resource) { ToolTipBackgroundConstructor.setRightBackground(idImageview,imaLeftAbove, resource); } - - /** - * @param idImageview - * @param imaLeftAbove - * @param resource - */ private void createBelow(Text idImageview,Image imaLeftAbove, int resource) { ToolTipBackgroundConstructor.setBelowBackground(idImageview,imaLeftAbove, resource); } - /** - * show above + * 展示顶部位置 */ public void showAbove() { dlAboveCenter.setVisibility(Component.VISIBLE); + imacenterAbove.setVisibility(Component.VISIBLE); String textAbove = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); idAboveImageview.setText(textAbove); idAboveImageview.setTextAlignment(TextAlignment.CENTER); idAboveImageview.setVisibility(Component.VISIBLE); - create(idAboveImageview,imacenterAbove, ResourceTable.Media_arrow_down); + createAbove(idAboveImageview,imacenterAbove, ResourceTable.Media_arrow_down); visableabove(); mToolTipAnimator.popup(idAboveImageview,dlAboveCenter, mAnimationDuration).start(); - dlAboveRight.setClickedListener(component -> findAndDismiss(dlAboveRight)); + idAboveImageview.setClickedListener(component -> findAndDismiss(dlAboveCenter,imacenterAbove)); + dlAboveCenter.setClickedListener(component -> findAndDismiss(dlAboveCenter,imacenterAbove)); } private void visableabove(){ @@ -236,15 +214,17 @@ public class ToolTipsManager { public void showAboveLeft() { dlAboveleft.setVisibility(Component.VISIBLE); + imaAboveLeft.setVisibility(Component.VISIBLE); String textAbove = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); tvAboveLeft.setText(textAbove); tvAboveLeft.setTextAlignment(TextAlignment.CENTER); tvAboveLeft.setVisibility(Component.VISIBLE); //ToolTipCoordinatesFinder.getPositionAbove(idAboveImageview, showTextView); - create(tvAboveLeft,imaAboveLeft, ResourceTable.Media_arrow_down); + createAbove(tvAboveLeft,imaAboveLeft, ResourceTable.Media_arrow_down); visableaboveLeft(); mToolTipAnimator.popup(tvAboveLeft,dlAboveleft, mAnimationDuration).start(); - dlAboveRight.setClickedListener(component -> findAndDismiss(dlAboveRight)); + tvAboveLeft.setClickedListener(component -> findAndDismiss(dlAboveleft,imaAboveLeft)); + imaAboveLeft.setClickedListener(component -> findAndDismiss(dlAboveleft,imaAboveLeft)); } private void visableaboveLeft(){ @@ -260,14 +240,16 @@ public class ToolTipsManager { public void showAboveRight() { dlAboveRight.setVisibility(Component.VISIBLE); + imaAboveRight.setVisibility(Component.VISIBLE); String textAbove = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); tvAboveRight.setText(textAbove); tvAboveRight.setTextAlignment(TextAlignment.CENTER); tvAboveRight.setVisibility(Component.VISIBLE); - create(tvAboveRight,imaAboveRight, ResourceTable.Media_arrow_down); + //ToolTipCoordinatesFinder.getPositionAbove(idAboveImageview, showTextView); + createAbove(tvAboveRight,imaAboveRight, ResourceTable.Media_arrow_down); visableaboveRight(); mToolTipAnimator.popup(tvAboveRight,dlAboveRight, mAnimationDuration).start(); - dlAboveRight.setClickedListener(component -> findAndDismiss(dlAboveRight)); + dlAboveRight.setClickedListener(component -> findAndDismiss(dlAboveRight,imaAboveRight)); } private void visableaboveRight(){ @@ -287,13 +269,15 @@ public class ToolTipsManager { */ public void showBelow() { dlBelowCenter.setVisibility(Component.VISIBLE); + imaBelowCenter.setVisibility(Component.VISIBLE); String textBelow = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); createBelow(idBelowimageView,imaBelowCenter,ResourceTable.Media_media_up); idBelowimageView.setVisibility(Component.VISIBLE); ToolTipCoordinatesFinder.getPositionBelow(textBelow, idBelowimageView, showTextView); visableBelow(); mToolTipAnimator.popup(idBelowimageView,dlBelowCenter,mAnimationDuration).start(); - dlBelowCenter.setClickedListener(component -> findAndDismiss(dlBelowCenter)); + idBelowimageView.setClickedListener(component -> findAndDismiss(dlBelowCenter,imaBelowCenter)); + imaBelowCenter.setClickedListener(component -> findAndDismiss(dlBelowCenter,imaBelowCenter)); } private void visableBelow(){ @@ -309,6 +293,7 @@ public class ToolTipsManager { public void showBelowLeft() { dlBelowLeft.setVisibility(Component.VISIBLE); + imaBelowLeft.setVisibility(Component.VISIBLE); String textBelow = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); belowImageLeft.setText(textBelow); belowImageLeft.setTextAlignment(TextAlignment.CENTER); @@ -318,7 +303,7 @@ public class ToolTipsManager { //ToolTipCoordinatesFinder.getPositionBelow(textBelow, idBelowimageView, showTextView); visableBelowLeft(); mToolTipAnimator.popup(belowImageLeft,dlBelowLeft,mAnimationDuration).start(); - dlBelowLeft.setClickedListener(component -> findAndDismiss(dlBelowLeft)); + dlBelowLeft.setClickedListener(component -> findAndDismiss(dlBelowLeft,imaBelowLeft)); } private void visableBelowLeft(){ @@ -335,12 +320,13 @@ public class ToolTipsManager { public void showBelowRight() { dlBelowRight.setVisibility(Component.VISIBLE); + imaBelowRight.setVisibility(Component.VISIBLE); String textBelow = com.tomergoldst.tooltipshm.TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT : mEditText.getText().toString(); createBelow(belowImageRight,imaBelowRight,ResourceTable.Media_media_up); ToolTipCoordinatesFinder.getPositionBelow(textBelow, belowImageRight, showTextView); visableBelowRight(); mToolTipAnimator.popup(belowImageRight,dlBelowRight,mAnimationDuration).start(); - dlBelowRight.setClickedListener(component -> findAndDismiss(dlBelowRight)); + dlBelowRight.setClickedListener(component -> findAndDismiss(dlBelowRight,imaBelowRight)); } private void visableBelowRight(){ @@ -362,6 +348,7 @@ public class ToolTipsManager { */ public void showLeft() { leftDlView.setVisibility(Component.VISIBLE); + imaLeftCenter.setVisibility(Component.VISIBLE); String textLeft = TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT_SMALL : mEditText.getText().toString(); leftImageView.setVisibility(Component.VISIBLE); createLeft(leftImageView,imaLeftCenter, ResourceTable.Media_arrow_left); @@ -369,7 +356,8 @@ public class ToolTipsManager { leftImageView.setTextAlignment(TextAlignment.CENTER); visableLeft(); mToolTipAnimator.popup(leftImageView,leftDlView,mAnimationDuration).start(); - leftImageView.setClickedListener(component -> findAndDismiss(dlAboveRight)); + leftImageView.setClickedListener(component -> findAndDismiss(leftDlView,imaLeftCenter)); + imaLeftCenter.setClickedListener(component -> dismissAll()); } private void visableLeft(){ @@ -388,13 +376,15 @@ public class ToolTipsManager { */ public void showRight() { rightDlView.setVisibility(Component.VISIBLE); + imaRightCenter.setVisibility(Component.VISIBLE); String textRight = TextUtils.isEmpty(mEditText.getText()) ? TIP_TEXT_LARGE : mEditText.getText().toString(); rightDlView.setVisibility(Component.VISIBLE); createRight(rightImageView,imaRightCenter, ResourceTable.Media_arrow_right); ToolTipCoordinatesFinder.getPositionRightTo(textRight, showTextView, rightImageView); visableRight(); mToolTipAnimator.popup(rightImageView,rightDlView, mAnimationDuration).start(); - rightDlView.setClickedListener(component -> findAndDismiss(rightDlView)); + rightImageView.setClickedListener(component -> findAndDismiss(rightDlView,imaRightCenter)); + imaRightCenter.setClickedListener(component -> findAndDismiss(rightDlView,imaRightCenter)); } private void visableRight(){ @@ -431,10 +421,14 @@ public class ToolTipsManager { animatorValue.setTarget(dlInitLayout); animatorValue.start(); dlInitLayout.setVisibility(Component.HIDE); - idAboveImageview.setVisibility(Component.HIDE); - idBelowimageView.setVisibility(Component.HIDE); - rightImageView.setVisibility(Component.HIDE); - leftImageView.setVisibility(Component.HIDE); + dlAboveRight.setVisibility(Component.HIDE); + dlAboveleft.setVisibility(Component.HIDE); + dlAboveCenter.setVisibility(Component.HIDE); + rightDlView.setVisibility(Component.HIDE); + leftDlView.setVisibility(Component.HIDE); + dlBelowLeft.setVisibility(Component.HIDE); + dlBelowCenter.setVisibility(Component.HIDE); + dlBelowLeft.setVisibility(Component.HIDE); } /** @@ -454,9 +448,10 @@ public class ToolTipsManager { * * @param view */ - public void findAndDismiss(DependentLayout view) { + public void findAndDismiss(DependentLayout view,Image image) { view.setVisibility(Component.HIDE); - isAnimateDismiss(view); + image.setVisibility(Component.HIDE); + isAnimateDismiss(view,image); } /** @@ -464,10 +459,11 @@ public class ToolTipsManager { * * @param view */ - private void isAnimateDismiss(final DependentLayout view) { + private void isAnimateDismiss(final DependentLayout view,Image image) { AnimatorProperty abovePopup = new AnimatorProperty(); abovePopup.alphaFrom(0).alpha(0).setCurveType(new Animator.CurveType().ANTICIPATE).setDuration(1000); abovePopup.setTarget(view); + abovePopup.setTarget(image); abovePopup.start(); } @@ -486,7 +482,7 @@ public class ToolTipsManager { @Override public void onClick(Component component) { showAboveLeft(); - create(idAboveImageview,imaAboveLeft, ResourceTable.Media_arrow_down); + createAbove(idAboveImageview,imaAboveLeft, ResourceTable.Media_arrow_down); } }); mBelowBtn.setClickedListener(new Component.ClickedListener() { @@ -530,7 +526,7 @@ public class ToolTipsManager { @Override public void onClick(Component component) { showAbove(); - create(idAboveImageview,imacenterAbove, ResourceTable.Media_arrow_down); + createAbove(idAboveImageview,imacenterAbove, ResourceTable.Media_arrow_down); } }); mBelowBtn.setClickedListener(new Component.ClickedListener() { @@ -576,7 +572,7 @@ public class ToolTipsManager { @Override public void onClick(Component component) { showAboveRight(); - create(tvAboveRight,imaAboveRight, ResourceTable.Media_arrow_down); + createAbove(tvAboveRight,imaAboveRight, ResourceTable.Media_arrow_down); } }); diff --git a/tooltips/src/main/resources/base/media/arrow_down.png b/tooltips/src/main/resources/base/media/arrow_down.png index 12a3826ed8ba1a93b7c18f727bdfa034c9e4cd68..e65f328d1bbb995ddc7d0acbd97633b39fef0847 100644 Binary files a/tooltips/src/main/resources/base/media/arrow_down.png and b/tooltips/src/main/resources/base/media/arrow_down.png differ diff --git a/tooltips/src/main/resources/base/media/arrow_left.png b/tooltips/src/main/resources/base/media/arrow_left.png index 220079b5ae71ba181b1d5bebddf70b95e4104388..b40ceed3deca1e92310870dfdb7f640acf079fc6 100644 Binary files a/tooltips/src/main/resources/base/media/arrow_left.png and b/tooltips/src/main/resources/base/media/arrow_left.png differ diff --git a/tooltips/src/main/resources/base/media/arrow_right.png b/tooltips/src/main/resources/base/media/arrow_right.png index 5e129217bce00ec25093a97a8b39218bd248a831..1f3740d6d0b0c19c1464c11e97b7110ef80d2eef 100644 Binary files a/tooltips/src/main/resources/base/media/arrow_right.png and b/tooltips/src/main/resources/base/media/arrow_right.png differ diff --git a/tooltips/src/main/resources/base/media/media_up.png b/tooltips/src/main/resources/base/media/media_up.png index 74a96e098b9006662d57e36272bb8a81728c0000..e9c4eab05aa0d9acdbd423a1bf2d5983b15f845d 100644 Binary files a/tooltips/src/main/resources/base/media/media_up.png and b/tooltips/src/main/resources/base/media/media_up.png differ