# ShowcaseView
**Repository Path**: xu-saisaiyi/ShowcaseView
## Basic Information
- **Project Name**: ShowcaseView
- **Description**: ShowcaseView库旨在通过独特且吸引人的叠加层向用户突出显示和展示应用的特定部分。这个库非常适合指出用户的兴趣点,突出模糊但是有用的内容
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-07-01
- **Last Updated**: 2021-11-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ShowcaseView
ShowcaseView库旨在通过独特且吸引人的叠加层向用户突出显示和展示应用的特定部分。这个库非常适合指出用户的兴趣点,突出模糊但是有用的内容。
# ScreenShot
# How to import into your project
方法一:
通过library生成har包,添加har包到libs文件夹内
在entry的gradle内添加如下代码
```gradle
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
```
方法二:
```gradle
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:ShowcaseView:1.0.2'
```
# Demo
要使用ShowcaseView,请使用Builder模式。
举个例子:
```Java
@Override
public void onStart(Intent intent) {
super.onStart(intent);
ComponentContainer componentContainer = (ComponentContainer) LayoutScatter.getInstance(this)
.parse(ResourceTable.Layout_ability_main, null, false);
setUIContent(componentContainer);
ViewTarget target = new ViewTarget(ResourceTable.Id_buttonBlocked, this);
new ShowcaseView.Builder(this, (ComponentContainer) componentContainer.getComponentParent())
.withMaterialShowcase()
.setTarget(target)
.setContentTitle(ResourceTable.String_showcase_main_title)
.setContentText(ResourceTable.String_showcase_main_message)
.setStyle(ResourceTable.Pattern_CustomShowcaseTheme2)
.setShowcaseEventListener(this)
.replaceEndButton(ResourceTable.Layout_view_custom_button)
.build();
}
```
也可以自定义ShowcaseView的外观
```Java
class CustomShowcaseView implements ShowcaseDrawer {
private float width = 0;
private float height = 0;
private Paint eraserPaint = null;
private Paint basicPaint = null;
private int eraseColour = 0xffffff;
private RectFloat renderRect = null;
CustomShowcaseView(ResourceManager resources) {
try {
width = resources.getElement(ResourceTable.Float_custom_showcase_width).getFloat();
height = resources.getElement(ResourceTable.Float_custom_showcase_height).getFloat();
eraserPaint = new Paint();
eraserPaint.setColor(new Color(0xFFFFFF));
eraserPaint.setAlpha(0);
eraserPaint.setBlendMode(BlendMode.CLEAR);
eraserPaint.setAntiAlias(true);
eraseColour = resources.getElement(ResourceTable.Color_custom_showcase_bg).getColor();
basicPaint = new Paint();
renderRect = new RectFloat();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void setShowcaseColour(int color) {
eraserPaint.setColor(new Color(color));
}
@Override
public void drawShowcase(PixelMap buffer, float x, float y, float scaleMultiplier) {
Texture texture = new Texture(buffer);
Canvas bufferCanvas = new Canvas(texture);
renderRect.left = x - width / 2f;
renderRect.right = x + width / 2f;
renderRect.top = y - height / 2f;
renderRect.bottom = y + height / 2f;
bufferCanvas.drawRect(renderRect, eraserPaint);
}
@Override
public int getShowcaseWidth() {
return (int) width;
}
@Override
public int getShowcaseHeight() {
return (int) height;
}
@Override
public float getBlockedRadius() {
return width;
}
@Override
public void setBackgroundColour(int backgroundColor) {
// No-op, remove this from the API?
}
@Override
public void erase(PixelMap bitmapBuffer) {
bitmapBuffer.writePixels(eraseColour);
}
@Override
public void drawToCanvas(Canvas canvas, PixelMap bitmapBuffer) {
PixelMapHolder pixelMapHolder = new PixelMapHolder(bitmapBuffer);
canvas.drawPixelMapHolder(pixelMapHolder, 0, 0, basicPaint);
}
}
```
Copyright and Licensing
----
Copyright Alex Curran ([@amlcurran](https://twitter.com/amlcurran)) © 2012-2014. All rights reserved.
This library is distributed under an Apache 2.0 License.