随机闪烁仅发生在 Galaxy Note 4 上

Random flashing occurring only on Galaxy Note 4

出于某种原因,我发现了一个完全没有意义的故障,而且我现在认为它只出现在 Galaxy Note 4 上。我唯一的测试设备是 Nexus 7 (2012)、blue stacks beta 和 Note 4。这个故障只出现在 note 4 上。这是绘图代码:

if(!started){
            continue;
        }
        h = getHolder();
        if (!h.getSurface().isValid()){
            continue;
        }
        Canvas c = h.lockCanvas();
        c.drawRect(0, 0, this.getWidth(), this.getHeight(), white);

        //draw walls
        for(int i=0;i<walls.length;i++){
            c.drawRect(walls[i].x, walls[i].y, walls[i].bottom, walls[i].right, red);
        }

        //draw portals
        for(int i=0;i<portals.length;i++){
            Log.d("S", i+"");
            Log.d("S", portalimages[i].toString());
            c.drawBitmap(portalimages[i], portals[i].x1, portals[i].y1, null);
            c.drawBitmap(portalimages[i], portals[i].x2, portals[i].y2, null);
        }

        //draw startlocations
        for(int i=0;i<startlocations.length;i++){
            c.drawBitmap(player, startlocations[i].x, startlocations[i].y, null);
        }

        //draw checkpoints
        for(int i=0;i<checkpoints.length;i++){
            c.drawRect(checkpoints[i].x, checkpoints[i].y, checkpoints[i].x+this.getHeight()/18, checkpoints[i].y+this.getHeight()/18, blue);
        }

        //draw middle line
        c.drawRect(0, getHeight()/2-getHeight()/80, getWidth(), getHeight()/2+getHeight()/80, black);

        menu.draw(c);

        h.unlockCanvasAndPost(c);

一旦我的 onClick 被调用,故障就会发生。它只是添加了一个新的起始位置:

startlocations[location] = new Coord(lastx, lasty);
if(location>0){
    location = 0;
}else{
    location++;
}
break;

注意:起始位置设置为 startlocations = new Coord[2];

对视频质量表示抱歉。 Note 4 是我爸爸的,所以我不得不通过消息服务发送它,它压缩了它,然后 YouTube 压缩了更多。然后它分解成这样:https://www.youtube.com/watch?v=Ig9mflYBPaI

点击播放器开始位置按钮没有其他变化。我将尝试对此进行更多研究,但我决定在此处 post 以防遗漏某些内容。谢谢!

编辑:

我现在知道,如果您没有此行,问题就会消失:c.drawBitmap(player, startlocations[i].x, startlocations[i].y, null); 这毫无意义。没有错误,它加载了这段代码。 BitmapFactory.decodeResource(getResources(), R.drawable.portal);以后调整为Bitmap.createScaledBitmap(player, this.getHeight()/18, this.getHeight()/18, true);

我找到了答案,但完全没有意义。出于某种原因,就在这个 class 中,图像需要具有透明度,否则会出现故障。后来我画了其他非透明图像。这没有任何意义,但它有效。如果您知道发生这种情况的任何原因,请告诉我。

我的猜测是,在另一个 class 中我使用了主包,但在这个 class 中它是一个不同的包。这可能就是为什么只有这个 class (或方法)的原因。我将不得不做更多的测试。

谢谢。