Beiträge von UweApps

    nein, einen OK-Button brauchst du nicht, die PreferencesActivity (von der erbt dein configure) speichert immer sofort beim Ändern eines Feldes.


    Da musst du an deiner MainActivity wohl noch etwas machen - du kannst ja zunächst auch mal die gespeicherten Werte einfach anzeigen lassen, damit du sicher bist, dass du auf die richtigen Werte schaust.


    Am besten machst du das in onResume() - denn die Methode wird bei Rückkehr von einer anderen Activity aufgerufen (onCreate nur beim Start der Activity).

    Da geht sicher was mit MotionEvents - mit denen kannst du zumindest die Koordinaten bei Drag+Drop mitbekommen.


    Dann musst du schauen, in welchem Element die Start- und End-Koordinaten sind, danach die beiden Elemente nach deinen Wünschen bearbeiten (im Datenmodell) und dann den ListAdapter informieren, dass sich was geändert hat.


    Die Sache mit den Koordinaten könnte ziemlich frickelig werden, da musst du wahrscheinlich einiges mit getTop, getHeight etc. für die unterschiedlichen Elemente rumrechnen.


    Ansonsten schau dir noch mal an, ob OnTouchListener vielleicht helfen könnte, aber du willst ja ein Touch für verschiedene View-Elemente auswerten - auch das könnte frickelig werden. Und einen MotionEvent bekommst du da auch.

    Ich glaube, die ActionBar geht dafür auch, aber ich kann ja nicht alles auf einmal machen. *g*


    Schau dir die ActionBar ruhig genauer an, gebrauchen wirst du sie bestimmt auch irgendwann. Und wenn sie deine Anforderungen erfüllt, dann passt es ja.


    Fragments haben den Vorteil, dass man sie hübsch nebeneinander packen kann auf einem Tablet, und weil mir einige andere User Fragments empfohlen haben, stelle ich jetzt mein ganzes Projekt um (bzw. mach ein neues). O:-)

    Vergiss es - leider ist der TabHost dort recht beschränkt in seinen Möglichkeiten...


    Ich hab mich vor ein paar Tagen dazu durchgerungen, für diesen Zweck Fragments einzusetzen.
    Damit hast du die Möglichkeit, Unter-Activities (Fragments) in andere Layouts einzubauen.
    Die Haupt-Activity übernimmt dann das Laden der Fragments und umfärben der (selbstgebauten) Tabs.


    Aber fertig bin ich noch nicht mit meinem Umbau. Wenn ich damit weiter komme, mach ich vielleicht ein kleines Tutorial.
    Dabei du kannst mir helfen, wenn du im Forum noch ein paar Fragen dazu stellst. ;)


    Mit dem Compatibility-Pack kann man Fragments auch ab API-4 nutzen.

    Hallo Phil,


    vielleicht kannst du vor dem Aufteilen in die Einzelteile dein Drawable mit setBounds() schon mal auf die Bildschirmgröße zurechtschneiden.


    Dazu brauchst du dann die Pixel-Auflösung des benutzbaren Bereichs und mit mit ein wenig Dreisatz kannst du dann die ganzen Ausschneide-Parameter für das Gesamt-Bild und die Einzelteile zurechtrechnen.


    Mit der Bildschirmauflösung hast du auch die Möglichkeit, Grafiken in unterschiedlicher Größe (für Briefmarke bis HD-Tablet) vorzuhalten und nach Bedarf als Vorlage zu benutzen. Diese Aufgabe könnte sogar Android mit einigen speziellen drawable-Verzeichnissen übernehmen.


    Abschneiden wirst du immer, da die Seitenverhältnisse der Android-Geräte immer unterschiedlich sind und man den Platz ja auch ausnutzen möchte.
    Dann geht halt am Rand was verloren, aber wenn das nicht wichtig für das Bild ist, macht es ja nix...


    Gutes Gelingen
    Uwe

    Deine Idee zur Auswertung ist m.E. völlig ok, nur verheddert man sich in den ganzen if's, wenn man die Ergenisse prüft.


    Außerdem sollte man genau wissen, was man vergleicht - bei "==" benutzt du den Identitäts-Vergleich, der geht aber garantiert schief, weil du ja verschiedene Objekte (Strings) miteinander vergleichen willst. Um ganz sicher zu gehen, solltest du den String.equals() verwenden, also vom TextView erst getText() und dann mit toString() einen String machen.


    Schreib dir doch einfach mal die Sachen so auf (Zeile 1: Felder 1-3, Zeile 2: Felder 4-6, Zeile 3: Felder 7-9),
    dann sind Gewinner die Kombinationen 123, 456, 789, 147, 258, 369, 159, 357.
    Nun diese Kombinationen in die richtigen Vergleiche für das if einbauen.
    Ich kümmere mich im if übrigens nicht um den Spieler sondern nur um den Erfolg - gewonnen hat der letzte, der gesetzt hat, und das kannst du dann berechnen (hier 0 oder 1) .


    Das If könnte dann ungefähr so aussehen (hier nur für 123 -> 1 nicht leer && 1==2 && 1==2):

    Java
    if (  (  textview1.getText().length() > 0 &&
             textview1.getText().toString().equals(textview2.getText().toString()) &&
             textview1.getText().toString().equals(textview3.getText().toString())
           ) || (
             ...
           )
        ) {
       int gewinner = spielzug % 2;
    }


    Viel Erfolg! :P

    Die Idee ist eigentlich ganz einfach, aber ich weiß die Lösung in Android nicht.


    E-Mail mit HTML brauchen den Hinweis, dass der Inhalt HTML ist - im Mail-Quelltext sieht das so aus:

    Code
    Content-Type: text/html; charset="utf-8"
    Content-Transfer-Encoding: quoted-printable
    
    
    <html>...</html>


    Diese Angaben müssen entweder im Mail-Header oder im Abschnitts-Header (Multipart-Mail für text, html, Anhänge) vor der ersten Leerzeile stehen, es hilft also wahrscheinlich nicht, wenn du es einfach am Anfang dazu schreibst, weil die Mail-App selber bereits den Header mit einer Leerzeile beendet hat...


    Das quoted-printable ist nötig, weil E-Mail nur 7-bit-Zeichen erlaubt (ja, daran sollte man sich auch im Jahr 2012 noch halten). Das sollte allerdings das Mail-Programm selber schaffen.


    Entweder kannst du beim Mail-Intent den Content-Type angeben (wenn der Intent-Empfänger das versteht), oder irgendjemand hier im Forum hat noch eine bessere Idee.

    Um dir auf die Frage zu antworten, hier ein kurzes Beispiel:

    Java
    LinearLayout container = (LinearLayout) findViewById(R.id.linearLayout1);
    TextView beschriftung = new TextView(this);
    beschriftung.setText(feld.beschriftung);
    container.addView(beschriftung);


    Aber du wirst nach anfänglichen Erfolgen dann doch auf Probleme stoßen, z.B. scrollt ein LinearLayout nicht von alleine.


    Aber zu deinem Problem: du willst eine Liste von Werten anzeigen?
    Dann nimm lieber einen ListView statt LinearLayout und verpacke deine Daten mit einem Adapter in einzelne Listeneinträge (im Adapter wirst du die o.a. Zeilen gebrauchen).
    Der ListView lädt sich die gewünschten Teile dann nach Bedarf, scrollt schön und im Adapter kannst du auch noch onClick etc. verarbeiten.


    Es gibt schon ein paar Threads zu ListView und Adapter hier im Forum...

    Ist zwar nur eine Vermutung, aber in der configure.xml hast du dem android:entryValues ein Drawable gegeben - normalerweise sollte dort eine Referenz auf ein Array stehen, z.B. @array/prefs1EntryValues. Zusätzlich solltest du auch noch android:entries dazu packen, das sind die Strings die angezeigt werden...


    Die Arrays mit den Entries und EntryValues muss in strings.xml als string-array eingebunden werden:

    HTML
    <string-array name="prefs1Entries">
            <item>erste Einstellung</item>
            <item>zweite Einstellung</item>
        </string-array>
        <string-array name="prefs1EntryValues">
            <item>first</item>
            <item>second</item>
        </string-array>


    Wenn das nicht hilft, dann kopiere doch bitte ein paar interessante Zeilen der Fehlermeldungen im LogCat, da steht wahrscheinlich genaueres... ;)

    Das müsste eigentlich mit vier ListViews in einem LinearLayout mit android:orientation="horiozontal" funktionieren.
    Jeder ListView erhält dann seine Liste mit Einträgen und bastelt mit einem Adapter die ListView-Elemente für die Anzeige.


    In der Layout-Datei also ungefähr so:


    Wie die einzelnen ListView-Einträge gebaut werden (und wieviel Grafik du dort brauchst), musst du dir überlegen,dafür brauchst du eine Adapter-Klasse.


    Aufbau der ListView-Einträge und die Auswertung müssen dann die vier Adapter-Objekte (jeweils mit eigenen Daten) für die vier ListViews übernehmen (wahrscheinlich brauchst du dann auch getTop() oder ähnliches, um die Position in der Liste zu bestimmen).


    Später kannst du dann noch mit weiteren Container-Elementen, Background-Drawables, Abständen und layout-weight rumspielen, um die vier ListViews und die Einträge hübsch zu gestalten. Am Anfang reichen wohl erst einfache TextViews für die Zahlen (\n für mehrzeilige Elemente) in einer großen Schrift.


    Es gibt zu ListViews und Adapter auch schon ein paar andere Fragen im Forum, wenn du dort nicht fündig wirst, dann frag noch mal. ;)


    Ich glaub, jetzt hab ich genug geändert... :-[

    Wenn du in der ersten Activity (der "BesitzerActivity" der Variable) eine kleine Änderung machst:

    Java
    public static final int SET_COLOR_REQUEST = 0;


    dann kannst du in der anderen Activity folgendes schreiben:

    Java
    setResult(BesitzerActivity.SET_COLOR_REQUEST, myIntent);


    P.S.: es gibt bei den Editor-Buttons auch eine Kaffee-Tasse für Java-Code (statt PHP)... ;)

    Hast du das Projekt als Android-Projekt angelegt? Denn eigentlich weiß Eclipse sehr genau, was R.string (und andere) sind.


    Wenn ich bei mir an einer halbwegs vernünftigen Stelle R. schreibe, schlägt Eclipse gleich eine kleine Auswahl an Unter-Objekten vor, aus denen du dann auswählen kannst.

    Brauchst du denn auch das Video oder willst du nur viele Bilder aufnehmen?


    Wenn es dir nur um die Bilder geht, dann sollte die Camera-Doku dir die gewünschten Infos liefern.


    Ansonsten musst du erst mal das Video aufnehmen und dann eine API suchen, die dir Thumbs / Previews aus einem Video ziehen kann...

    Ich weiß nicht, ob ich dir den Zusammenhang jetzt korrekt darstelle, aber nach meinem Verständnis von Android macht dein Ergebnis schon Sinn.


    Ein ListView baut seine ListItems bei Bedarf öfter neu auf - und muss dann (bei eigenem Background) nach seinem entsprechenden Background-Abschnitt suchen, damit er den Vordergrund korrekt drauf plazieren kann.


    Wenn der ListView aber durchsichtig ist (dein FrameLayout-Background ist ja unterhalb), dann kann er seinen View komplett aufbauen und in einem Stück auf den Background rendern.


    Wie gesagt - ich weiß nicht, ob das dem exakten Ablauf in Android entspricht, aber es würde das Verhalten genau erklären.


    Vielen Dank für die Frage - ich denke mal, andere werden davon bestimmt auch profitieren!!!


    Wir merken uns also: B-)
    ListView bekommt bitte keinen hübschen Background - den verpassen wir einem FrameLayout (o.ä), das wir da drum packen!
    /edit/ Oder wir setzen den Background für die Activity, wie im nachfolgenden Beitrag beschrieben. Gruß an killphil!!!

    In der aktuellen c't (6/2012) ist ein Artikel zur "gefühlten Geschwindigkeit" von Smartphones/Tables im Vergleich zu PCs - die Geschwindigkeit beruht vor allem auf Tricks in der Vorausberechnung der Anzeigelemente. Wenn jedoch jedesmal die Drawables neu berechnet werden müssen, ist ein ARM-Prozessor schnell an seinen Grenzen.


    Es stellt sich also die Frage, wie aufwändig deine Drawables sind und ob du dem System durch irgendwelche Anpassungen am Layout unter die Arme greifen kannst.


    Erste Vorschlag wäre, den Hintergrund auf die List-Elemente zu verteilen...