Android ShowCaseView圆形大小
是否可以在ShowCaseView中更改圆圈的当前大小 我的代码中包含以下内容:Android ShowCaseView圆形大小,android,showcaseview,Android,Showcaseview,是否可以在ShowCaseView中更改圆圈的当前大小 我的代码中包含以下内容: ShowcaseView.ConfigOptions co = new ShowcaseView.ConfigOptions(); co.hideOnClickOutside = false; return ShowcaseView.insertShowcaseView(id, activity, title, message, co); 但现在,我只是显示Show
ShowcaseView.ConfigOptions co = new ShowcaseView.ConfigOptions();
co.hideOnClickOutside = false;
return ShowcaseView.insertShowcaseView(id, activity, title, message, co);
但现在,我只是显示ShowCaseView的默认大小,如果是这样,我如何调整它的大小
谢谢
有关ShowCaseView的更多信息,请参阅。。
使用setScaleMultiplier(浮点比例乘法器)
希望能帮助你 使用setScaleMultiplier(浮点缩放多路复用器)
希望能帮助你 我找到了方法,我们必须在代码中做一些更改。 我是在当前ShowcaseView版本为5.0的情况下写这个答案的 A) scalemultiplier变成了orphelin,我们必须重新实现它 1) 打开StandarShowcaseDrawer.java,找到drawShowcase方法并将其修改为以下内容:
@Override
public void drawShowcase(Bitmap buffer, float x, float y, float scaleMultiplier) {
Canvas bufferCanvas = new Canvas(buffer);
//[GIOVA]
//To avoid an infinite exception
if(scaleMultiplier == 0.0f)
scaleMultiplier = 0.001f;
//[/GIOVA]
//[Original]
//bufferCanvas.drawCircle(x, y, showcaseRadius, eraserPaint);
//[/Original]
//[GIOVA]
bufferCanvas.drawCircle(x, y, showcaseRadius * scaleMultiplier, eraserPaint);
//[/GIOVA]
int halfW = getShowcaseWidth() / 2;
int halfH = getShowcaseHeight() / 2;
int left = (int) (x - halfW);
int top = (int) (y - halfH);
showcaseDrawable.setBounds(left, top,
left + getShowcaseWidth(),
top + getShowcaseHeight());
showcaseDrawable.draw(bufferCanvas);
}
注:注意,我已经放置了一些[GIOVA]和[Original]标记,以便您可以比较更改;)
2) 打开NewShowcaseDrawer.java,作业与上一步相同:
@Override
public void drawShowcase(Bitmap buffer, float x, float y, float scaleMultiplier) {
Canvas bufferCanvas = new Canvas(buffer);
//[GIOVA]
//To avoid an infinite exception
if(scaleMultiplier == 0.0f)
scaleMultiplier = 0.001f;
//[/GIOVA]
eraserPaint.setAlpha(ALPHA_60_PERCENT);
//[Original]
//bufferCanvas.drawCircle(x, y, outerRadius , eraserPaint);
//eraserPaint.setAlpha(0);
//bufferCanvas.drawCircle(x, y, innerRadius , eraserPaint);
//[/Original]
//[GIOVA]
bufferCanvas.drawCircle(x, y, outerRadius * scaleMultiplier, eraserPaint);
eraserPaint.setAlpha(0);
bufferCanvas.drawCircle(x, y, innerRadius * scaleMultiplier, eraserPaint);
//[/GIOVA]
}
B) 现在我们需要能够设置值,我们将向生成器添加一个方法。
打开ShowcaseView.java,然后找到以下行:
public static class Builder {
在此生成器类中,添加以下方法:
public Builder setScaleMultiplier(float multiplier){
showcaseView.setScaleMultiplier(multiplier);
return this;
}
如何使用它:
现在非常简单,在您的活动中,当您使用Builder设置showcaseview时,只需调用setScaleMultiplier即可
例如:
sv = new ShowcaseView.Builder(this, true)
.setTarget(target)
.setContentTitle(getResources().getString(R.string.welcome))
.setContentText(getResources().getString(R.string.welcomDescription))
.setStyle(R.style.MyTheme)
.setScaleMultiplier(0.3f)
.build();
sv.Show();
我发现如何做到这一点,我们必须在代码中做一些更改。 我是在当前ShowcaseView版本为5.0的情况下写这个答案的 A) scalemultiplier变成了orphelin,我们必须重新实现它 1) 打开StandarShowcaseDrawer.java,找到drawShowcase方法并将其修改为以下内容:
@Override
public void drawShowcase(Bitmap buffer, float x, float y, float scaleMultiplier) {
Canvas bufferCanvas = new Canvas(buffer);
//[GIOVA]
//To avoid an infinite exception
if(scaleMultiplier == 0.0f)
scaleMultiplier = 0.001f;
//[/GIOVA]
//[Original]
//bufferCanvas.drawCircle(x, y, showcaseRadius, eraserPaint);
//[/Original]
//[GIOVA]
bufferCanvas.drawCircle(x, y, showcaseRadius * scaleMultiplier, eraserPaint);
//[/GIOVA]
int halfW = getShowcaseWidth() / 2;
int halfH = getShowcaseHeight() / 2;
int left = (int) (x - halfW);
int top = (int) (y - halfH);
showcaseDrawable.setBounds(left, top,
left + getShowcaseWidth(),
top + getShowcaseHeight());
showcaseDrawable.draw(bufferCanvas);
}
注:注意,我已经放置了一些[GIOVA]和[Original]标记,以便您可以比较更改;)
2) 打开NewShowcaseDrawer.java,作业与上一步相同:
@Override
public void drawShowcase(Bitmap buffer, float x, float y, float scaleMultiplier) {
Canvas bufferCanvas = new Canvas(buffer);
//[GIOVA]
//To avoid an infinite exception
if(scaleMultiplier == 0.0f)
scaleMultiplier = 0.001f;
//[/GIOVA]
eraserPaint.setAlpha(ALPHA_60_PERCENT);
//[Original]
//bufferCanvas.drawCircle(x, y, outerRadius , eraserPaint);
//eraserPaint.setAlpha(0);
//bufferCanvas.drawCircle(x, y, innerRadius , eraserPaint);
//[/Original]
//[GIOVA]
bufferCanvas.drawCircle(x, y, outerRadius * scaleMultiplier, eraserPaint);
eraserPaint.setAlpha(0);
bufferCanvas.drawCircle(x, y, innerRadius * scaleMultiplier, eraserPaint);
//[/GIOVA]
}
B) 现在我们需要能够设置值,我们将向生成器添加一个方法。
打开ShowcaseView.java,然后找到以下行:
public static class Builder {
在此生成器类中,添加以下方法:
public Builder setScaleMultiplier(float multiplier){
showcaseView.setScaleMultiplier(multiplier);
return this;
}
如何使用它:
现在非常简单,在您的活动中,当您使用Builder设置showcaseview时,只需调用setScaleMultiplier即可
例如:
sv = new ShowcaseView.Builder(this, true)
.setTarget(target)
.setContentTitle(getResources().getString(R.string.welcome))
.setContentText(getResources().getString(R.string.welcomDescription))
.setStyle(R.style.MyTheme)
.setScaleMultiplier(0.3f)
.build();
sv.Show();
好啊让我试试这个。我会再找你的。顺便说一下,谢谢。如果这能奏效,我会接受你的答案。对我来说(v5)这个方法是私有的,你知道它现在是怎么做的吗?@TomHart,因为现在它还没有被amlcurranOk合并。让我试试这个。我会再找你的。顺便说一下,谢谢。如果这能奏效,我会接受你的答案。对我来说(v5)这个方法是私有的,你知道它现在是怎么做的吗?@TomHart,因为现在它还没有被amlcurran合并