Configurando o fundo da imagem no SurfaceView, obtendo a tela preta
Ok, então estou tentando definir o plano de fundo de um SurfaceView para um arquivo JPG. Mas parece que não quer desenhar a imagem, e tudo que consigo é uma tela preta.
Aqui está o meu código:
public class FloorplanActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapView mapView = new MapView(getApplicationContext());
setContentView(mapView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.floorplan, menu);
return true;
}
class MapView extends SurfaceView{
Rect testRectangle1 = new Rect(0, 0, 50, 50);
Bitmap scaled;
int x;
int y;
public MapView(Context context) {
super(context);
}
public void surfaceCreated(SurfaceHolder arg0){
Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.floorplan);
float scale = (float)background.getHeight()/(float)getHeight();
int newWidth = Math.round(background.getWidth()/scale);
int newHeight = Math.round(background.getHeight()/scale);
scaled = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);
}
public void onDraw(Canvas canvas) {
canvas.drawBitmap(scaled, 0, 0, null); // draw the background
}
Não sei por que não desenha a imagem "planta baixa" que salvei na pasta drawable-mdpi.
Alguém tem alguma sugestão?
Obrigado.
EDIT: Depois de fazer alguns depuração com pontos de interrupção, parece que a variável "dimensionada" se torna "Infinity" por algum motivo e, como tal, as variáveis newWidth e newHeight tornam-se menores que 0 e o aplicativo falha.
Isso é somente se eu mover toda a superfícieCriada no contstructor, se eu deixar o código como está aqui, então ele não fará nada além de exibir uma tela preta.
Não faço ideia do que está causando isso embora ...