2016-06-13 8 views
1

Ich bin meine Anwendung mit Android Studio erstellen, kann diese App ein Bild von Himbeere auf meinem Emulator hochladen. Es funktioniert gut. Nun möchte ich dieses Bild hochladen und es direkt dem Benutzer zeigen, ohne es in der Galerie zu suchen. Ich dachte darüber nach, eine andere Klasse zu erstellen und dieses Bild als Hintergrundbild in meiner XML-Datei zu setzen, aber das ist zu sehr, als müsste ich jedes Mal eine neue Klasse erstellen, wenn ich ein Bild von meiner Himbeere hochladen möchte. Kann mir bitte jemand helfen. DankeEine Schaltfläche, mit der ein Bild in Android Studio angezeigt werden kann

Antwort

0

Wenn ich Ihre Frage richtig verstehe, möchten Sie ein Bild aus dem Android-Dateisystem in Ihre App laden und es dem Benutzer anzeigen.

Drawable, Android generalisierte Bildklasse, können Sie von Datei über laden.

This SO question schlägt Drawable#createFromPath nicht auf Wegen mit file:// Anfang nicht funktioniert, so auf Ihren Anwendungsfall ab, die Sie, dass mit Uri#parse/Uri#getPath vorangestellt werden soll.

Sobald Sie eine Drawable haben, können Sie es in einer von zwei Möglichkeiten an: eine ImageView in Ihrer Anwendung setzen und seine setImageDrawable Methode aufrufen, oder stellen Sie den Drawable als Hintergrundbild über View#setBackground (beachten Sie, dass setBackground nur aufgenommen in API 16 - In früheren Versionen sollten Sie View#setBackgroundDrawable aufrufen.

alles zusammen Einlochen, erhalten wir die folgende (nicht getestet) nach oben:

private void loadImage(String imagePath) { 
    Uri imageUri; 
    String fullImagePath; 
    Drawable image; 
    ImageView imageDisplay; 

    imageUri = Uri.parse(imagePath); 
    fullImagePath = imageUri.getPath(); 
    image = Drawable.createFromPath(fullImagePath); 

    imageDisplay = (ImageView) findViewById(R.id.imageDisplay); 
    /*if image is null after Drawable.createFromPath, this will simply 
     clear the ImageView's background */ 
    imageDisplay.setImageDrawable(image); 

    /*if you want the image in the background instead of the foreground, 
     comment the line above and uncomment this bit instead */ 
    //imageDisplay.setBackground(image); 
} 

Sie sollten dies mit jedem View nur zur Arbeit ändern können, indem imageDisplay ‚s deklarierten Typ mit dem entsprechenden Ersatz View Geben und ändern Sie die Besetzung findViewById. Stellen Sie sicher, dass Sie setBackground anrufen, nicht setImageDrawable, für eine nicht ImageViewView.

+0

danke für deine antwort, es scheint richtig, aber es sagt kann imageDisplay in diesem nicht auflösen: imageDisplay = (ImageView) findViewById (R.id.imageDisplay); –

+0

'R.id.imageDisplay' ist die Image-ID's ID. Sie müssen das mit dem Namen ersetzen, den Sie Ihrem eigenen ImageView gegeben haben. – computerfreaker

+0

Thnx Mann, es funktioniert perfekt. –

Verwandte Themen