微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Zxing Android 中为 Laser 添加纹理

如何解决在 Zxing Android 中为 Laser 添加纹理

我已经集成了 zxing android 库。并进行了所需的定制。我想在取景框内添加渐变纹理,而不是激光线。 我尝试在 drawLaser 中编写代码。我参考了以下链接(更新答案):

I have problems animating canvas in Zxing Android

它工作得很好,但纹理在线上,但我需要它在线下。也就是说,一旦线条上升,纹理就应该显示出来。

public void drawTexture (Canvas canvas) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.codi_texture);
BitmapShader fillBMPshader = new BitmapShader(bitmap,Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);

Paint paint = new Paint();
paint.setShader(fillBMPshader);

int middle = mFramingRect.height() / 2 + mFramingRect.top;
middle = middle + cntr;

if ((cntr < 300) && (!goingup)) {
    canvas.drawRect(mFramingRect.left,mFramingRect.top,mFramingRect.right,middle,paint);

    cntr = cntr + 4;
}

if ((cntr >= 300) && (!goingup)) goingup = true;

if ((cntr > -300) && (goingup)) {
    canvas.drawRect(mFramingRect.left,paint);
    cntr = cntr - 4;
}

if ((cntr <= -300) && (goingup)) goingup = false;
}

@Override
public void drawLaser(Canvas canvas) {
    // Draw a red "laser scanner" line through the middle to show decoding is active
    mLaserPaint.setAlpha(155);
    int middle = mFramingRect.height() / 2 + mFramingRect.top;
    middle = middle + cntr;
    if ((cntr < 300) && (!goingup)) {
        canvas.drawRect(mFramingRect.left + 2,middle - 5,mFramingRect.right - 1,middle + 10,mLaserPaint);
        cntr = cntr + 4;
    }

    if ((cntr >= 300) && (!goingup)) goingup = true;

    if ((cntr > -300) && (goingup)) {
        canvas.drawRect(mFramingRect.left + 4,mLaserPaint);
        cntr = cntr - 4;
    }

    if ((cntr <= -300) && (goingup)) goingup = false;

    postInvalidateDelayed(ANIMATION_DELAY,mFramingRect.left - POINT_SIZE,mFramingRect.top - POINT_SIZE,mFramingRect.right + POINT_SIZE,mFramingRect.bottom + POINT_SIZE);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。