首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >α色SurfaceView绘图涂料

α色SurfaceView绘图涂料
EN

Stack Overflow用户
提问于 2014-07-22 22:35:01
回答 1查看 1.4K关注 0票数 0

我有一个SurfaceView,它使用基本的ThreadCanvas设置来运行动画。当我试图执行淡色动画时,我注意到了一件奇怪的事情:简单地将Paint上的alpha从0x22 (34)降到0x00 (0)。当动画运行时,似乎矩形没有平滑地褪色;相反,它似乎跳过alpha级别。我知道这和我的帧率没有任何关系,因为我在测量的60 FPS运行它。考虑到这与我的实现方式有关,我让画布画出一条带有递减α的白色矩形。这就是我得到的..。

图像是用以下代码绘制的:

代码语言:javascript
复制
private void onDraw(Canvas canvas) {
    canvas.drawColor(Color.BLACK);

    Paint w = new Paint();
    w.setColor(Color.WHITE);

    Paint r = new Paint();
    r.setColor(Color.RED);
    r.setStrokeWidth(1.0f);

    for(int i = 0x22; i >= 0; i--) {
        w.setAlpha(i);
        int y = (0x22 - i) * 50;
        canvas.drawRect(0, y, 100, y + 50, w);
        canvas.drawLine(100, y, 110, y, r);
    }
}

这可能是很难看到,但它看起来似乎阿尔法下降了块,而不是顺利。您可以看出,红线标记一个新的矩形,但alpha似乎没有适当地减少。我怀疑这就是为什么阿尔法动画看上去不顺利,即使我运行在60 FPS。以前有人经历过这种情况吗?或者我知道如何在Canvas上使用SurfaceView获得平滑的alpha动画。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 17:37:21

您需要调用mSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT)将表面格式设置为RGBA 8888。否则,您将得到默认格式,即RGB 565。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24899012

复制
相关文章

相似问题

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