随机闪烁仅发生在 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 (或方法)的原因。我将不得不做更多的测试。
谢谢。
出于某种原因,我发现了一个完全没有意义的故障,而且我现在认为它只出现在 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 (或方法)的原因。我将不得不做更多的测试。
谢谢。