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

P

pyretta

Ambitioniertes Mitglied
1
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
 
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
 
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:
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
 
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:

Ähnliche Themen

M
Antworten
3
Aufrufe
167
moin
M
netfreak
  • netfreak
Antworten
10
Aufrufe
457
netfreak
netfreak
R
  • Robby1950
2
Antworten
23
Aufrufe
1.016
Robby1950
R
Zurück
Oben Unten