首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShowCaseView圆尺寸

ShowCaseView圆尺寸
EN

Stack Overflow用户
提问于 2014-06-03 03:01:30
回答 2查看 2.4K关注 0票数 1

在ShowCaseView中可以改变当前圆的大小吗?

我的代码中有以下内容:

代码语言:javascript
复制
ShowcaseView.ConfigOptions co = new ShowcaseView.ConfigOptions();
            co.hideOnClickOutside = false;
            return ShowcaseView.insertShowcaseView(id, activity, title, message, co);

但是现在,我只是显示ShowCaseView的默认大小,如果是的话,我如何调整它的大小呢?

谢谢!

有关ShowCaseView的更多信息,这将是有帮助的。https://github.com/amlcurran/Showcaseview

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-03 03:20:39

使用setScaleMultiplier(浮点scaleMultiplier)

希望能帮助你!

票数 3
EN

Stack Overflow用户

发布于 2014-09-27 16:22:38

我找到了怎么做的,我们必须在代码中做一些修改。我正在写这个答案,而当前的ShowcaseView版本是5.0

( A)剑客成了孤儿,我们必须重新实现它。

1)打开StandarShowcaseDrawer.java,找到drawShowcase方法并按以下方式修改它:

代码语言:javascript
复制
@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和原始标签,以便您可以比较更改;)

2)打开NewShowcaseDrawer.java,与前面的步骤相同:

代码语言:javascript
复制
@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]
    }

)现在我们需要能够设置值,我们将向构建器添加一个方法。打开ShowcaseView.java,然后找到以下行:

代码语言:javascript
复制
public static class Builder {

在此Builder类中,添加以下方法:

代码语言:javascript
复制
 public Builder setScaleMultiplier(float multiplier){
            showcaseView.setScaleMultiplier(multiplier);
            return this;
        }

如何使用它:

现在非常简单,在您的活动中,当您使用Builder设置您的显示视图时,只需调用setScaleMultiplier即可。

例子:

代码语言:javascript
复制
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();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24006442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档