1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Bild in App für jeweiliges Display skalieren - Wie?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pyretta, 25.01.2011.

  1. pyretta, 25.01.2011 #1
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    Hallo,

    Mein Problem ist folgendes:
    Ich möchte ein Bild, das auf einem FTP-Server liegt, in die App einbinden. (Das ist für mich später einfacher zu aktualisieren, da dieses Bild von mehreren Internet-Anwendungen genutzt wird. So muss ich es nur einmal ändern.)

    Dieses Bild ist im Original 600x600 Pixel groß. Das ist natürlich viel zu groß fürs Handy, also muss ich das skalieren. Nur wie? :huh:

    Ich habe schon versucht in der main.xml im Ordner layouts den Befehl:
    Code:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    "android:layout_width="fill_parent"
    in folgenden Befehl umzuwandeln:
    Code:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    "android:layout_width="wrap_content"
    In der Hoffnung das löst genau das Problem - aber nö, tut es leider nicht.

    Dann habe ich natürlich versucht über die CSS das Bild zu skalieren, funktioniert auch nicht.

    Dann habe ich mir Beispiel-Apps angesehen und versucht da was zu erkennen was mir weiterhilft. Leider auch ohne Erfolg.

    Dann hab ich hier im Forum gesucht, ob jemand schon ein ähnliches Problem hatte und es schon gelöst hat, aber leider bin ich nicht fündig geworden.

    Muss ich denn echt erst das Bild im Bildbearbeitungsprogramm skalieren und neu abspeichern und direkt in die App einbinden, oder kann ich das auch mit dem Originalbild und entsprechendem Code lösen?

    Ich bin momentan echt ratlos. :mellow:

    Für eure Hilfe wäre ich sehr dankbar.
    Vielen Dank schon mal im Voraus.

    Liebe Grüße,

    pyretta
     
  2. swordi, 25.01.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    android:layout_width="" hat nichts mit dem bild selbst zu tun

    wie der name schon sagt, es sagt wie breit das layout element sein soll

    es gibt ein attribute android:scaleXXXX

    das hilft dir sicher weiter
     
  3. pyretta, 25.01.2011 #3
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    Hallo swordi,

    vielen Dank für deine Antwort.

    Das klingt schon mal seeeehr viel versprechend.

    Ich habe gleich mal bissel gegooglet nach dem was du mir vorgeschlagen hast und ich hab folgendes gefunden: android:scaleType="centerCrop".

    (Hier gefunden: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html - allerdings ohne richtige Gebrauchsanleitung für Anfänger)

    Ist es das was du meinst? Dieses ImageView.ScaleType? (das klingt nämlich äußerst viel versprechend)

    Wo platzier ich das denn?
    In der Layout-XML (main.xml)?
    Und wo genau?
    Innerhalb des "LinearLayout"?
    Und wie bring ich dem bei, welches Bild er croppen soll?
    Ich hab dem Bild eine CSS-Klasse und eine CSS-ID gegeben, kann ich die ansprechen?

    :blink: Ok das sind dann doch echt sehr viele Fragen - aber ich bin echt absoluter Anfänger. :blushing:

    Kannst du mir da weiterhelfen? Oder vielleicht sonst jemand aus der Android-Gemeinde der ein Herz für Anfänger hat?

    Vielen Dank schon mal im Voraus.

    Liebe Grüße,

    pyretta
     
    Zuletzt bearbeitet: 25.01.2011
  4. swordi, 25.01.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    als erstes brauchst du mal eine ImageView

    der sagst du android:scaleType welchen du eben haben willst

    im code lädst du dann dein bild in diese imageview
     
  5. pyretta, 26.01.2011 #5
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    ok.

    Und wie lad ich die darein?

    Mich deucht nämlich grade dass ich mir selbst ein Bein gestellt habe.
    Ich nutze nämlich PhoneGap und habe damit ein bestehendes JavaScript für Android adaptiert. Das bedeutet die App an sich läuft über die index.html - nicht über eine xml.

    Wo muss ich denn dann dieses ImageView einfügen?
    In das Layout? Und wie soll ich dann das Bild laden, was ja wie gesagt nicht in der xml sondern in der index.html geladen werden müsste?

    Deshalb dachte ich, vielleicht kann ich ja einfach mit der Klasse auf das Bild verweisen.

    Ist das denn möglich? Wenn ja, wie?


    EDIT:

    Kann ich das eventuell in der TestApp.java lösen?

    Etwa so:

    Code:
     package com.phonegap.TestApp.beta;
    
    import android.app.Activity;
    import android.os.Bundle;
    import com.phonegap.*;
    import android.graphics.Bitmap;
    import android.widget.ImageView;
    
    
    public class TestApp extends DroidGap {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);           
            super.loadUrl("file:///android_asset/www/index.html");
            
            ImageView image = (ImageView) findViewById(R.id.test_image);
            Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
            Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, 150, 100, true);
            image.setImageBitmap(bMapScaled);
        }
    } 
    Aber ich glaube ich versteh unter "scale" etwas anderes als Android, kann das sein?
    Da in der Beschreibung von diesem code stehen Y und X Koordinaten. Kann also nicht das sein, was ich möchte?

    Aber ich nehme an so ähnlich gehts? Und bei R.id.test_image geb ich die Id des Bildes an?
    Also die <img src="blabla.jpg" id="test_image" />?

    Oder will es den View also die "Seite" finden? - Ich habe nämlich keine Seiten... glaub ich jedenfalls.
     
    Zuletzt bearbeitet: 26.01.2011

Diese Seite empfehlen