J'essaie donc de définir l'arrière-plan d'un SurfaceView sur un fichier JPG. Mais il ne semble pas vouloir dessiner l'image, et tout ce que j'obtiens est un écran noir.
Voici mon code :
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
}
Je ne sais pas pourquoi il ne dessine pas l'image du "plan d'étage" que j'ai enregistrée dans le dossier drawable-mdpi.
Quelqu'un a des suggestions ?
Gracias.
EDIT : Après avoir fait un peu de débogage avec des points d'arrêt, il semble que la variable "scaled" devienne "Infinity" pour une raison quelconque et, de ce fait, les variables newWidth et newHeight deviennent inférieures à 0 et l'application se plante.
C'est seulement si je déplace toute la surfaceCreated dans le contstructeur, si je laisse le code tel qu'il est ici, il ne fait rien d'autre que d'afficher un écran noir.
Je n'ai aucune idée de la raison pour laquelle il fait ça...