Beiträge von Fantasyelf

    Hallo,


    ich habe jetzt mal etwas logisch nachgedacht und bin etwas weitergekommen.
    Es werden jetzt Bilder aus der HashMap geladen, hier die genauere Erklärung des Zustandes:


    Ich habe eine Haupt-Activity mit mehreren Bildern, an die ein OnClickListener angehängt wurde. Bei einem Klick auf ein Bild wird eine Unter-Activity gestartet. Wenn ich von da per Zurück-Taste zurück gehe, werden die Bilder aus der HashMap geladen. Das ist aber voll sinnlos, da Android das in diesem Fall schon von alleine macht. Testweise habe ich den Bilder-Cache auskommentiert und die Bilder werden trotzdem sofort angezeigt, ohne neu aus dem Internet geladen werden zu müssen.


    Ich würde den Bilder-Cache aber gerne beim Drehen des Handys nutzen, aber da ist die HashMap immer leer.
    Geht das nicht anders oder mache ich noch was falsch? Denn die Daten, die in "onSaveInstanceState(Bundle savedInstanceState)" gespeichert werden, bleiben doch auch bei einer Drehung des Handys vorhanden.

    Hallo,


    ich habe mal eine Frage zum Cachen von Bildern, per Forumssuche habe ich nichts passendes gefunden.


    Ich habe eine App, die kleine und größere Bilder aus dem Internet herunterlädt und anzeigt. Das klappt auch alles wunderbar. Nun versuche ich mit (als global in der Hauptklasse definiert)

    Java
    HashMap<String,SoftReference<Bitmap>> imagecache = new HashMap<String,SoftReference<Bitmap>>();
    SoftReference<Bitmap> softreference;
    Bitmap bitmap;


    die kleinen Bilder zu cachen.


    Damit kommen die Bilder in den Cache:

    Java
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
       savedInstanceState.putIntArray("startids", startids);
       bitmap = starttip1_view.getDrawingCache();
       imagecache.put("starttip1", new SoftReference<Bitmap>(bitmap));
       super.onSaveInstanceState(savedInstanceState);
    }


    Vorher wird natürlich in der onCreate-Methode folgendes ausgeführt:

    Java
    starttip1_view.setDrawingCacheEnabled(true);


    In


    wird die entsprechende Größe ermittelt und dann werden die Bilder wie folgt geladen (eigene externe Klasse):


    Hier ist die Methode LoadStartImages(breite, hoehe):


    Aber irgendwie funktioniert das nicht, der Cache ist nach dem Drehen des Handys immer leer. Funktioniert das nur, wenn man das Handy nicht dreht, oder mache ich was falsch?
    Ich würde mich über einen Tip oder Hilfe sehr freuen.

    Hallo,


    ich bin es wieder. Ich habe jetzt einen anderen Weg gefunden, damit das Layout immer paßt und zwar mit "layout:weight".


    Trotzdem würde ich gerne wissen, warum das mit den dp-Angaben nicht klappt. Die sind doch dafür da, damit auf jedem Android-Gerät das entsprechende Element den gleichen physikalischen Platz einnimmt.
    Wenn ein Android-Gerät weiß, welche Auflösung und dpi es hat, dürfte es die Elemente doch anpassen können. Erst an die dpi und dann an die Auflösung. Es kann ja größere Displays mit einem gleichen dpi-Wert geben.
    Oder übersehe ich was bei meinen Überlegungen?

    Hallo,


    ich beginne gerade mit der Programmierung von Android-Apps. Von Anfang an möchte ich gleich darauf achten, die Richtlinien von developer.android.com umzusetzen.
    Deshalb verwende ich nur "fill_parent", "wrap_content" oder dp-Angaben, damit meine Apps auf jedem Display gleich aussehen.
    Aber irgendwie klappt das nicht bei dem Emulator. Ich habe mir für alle 3 Arten (ldpi, mdpi, hdpi) ein Device erstellt, aber nur auf meinem HTC Desire sieht es so aus, wie es soll.
    Bei ldpi und mdpi ist das Layout zu lang, bei hdpi ist es zu kurz. Laut den Empfehlungen von developer.android.com sollte jedes Android-Device die dp-Angaben im Verhältnis zur Standard-DPI-Zahl 160 umrechnen.
    DPI ist für mich das Verhältnis von Auflösung zu physikalischer Größe des Bildschirms.


    Hier ist das Layout, das ich meine:



    Und hier die manifest.xml:



    Ich würde mich freuen, wenn mir jemand sagen kann, wo mein Denkfehler liegt, weil ich von Anfang an alles richtig machen will.