Code Review - Panel - Frage

  • Antworten:1
Asmar Demir
  • Forum-Beiträge: 5

18.07.2014, 14:41:12 via Website

Hallo Liebe Community,

ich bin relativ neu im Forum und auch in der Android Entwicklung.

Ich versuche grade ein kleines Spiel nachzubauen. Gewinn ist sehr sehr sehr sehr unrealistisch. Aber es ist für mich.

Jedenfalls habe ich ein Linear Layout (Horizontal) und habe da mal paar Buttons reingezogen. Diese werden durch einen Thread hin / Her geschoben (So siehts zumindest aus, weil immer ein Button Rot / Grün ist und alle anderen Schwarz). Das hat eine Art Ping Pong effekt.

Der Code für den Thread sieht so aus:

public class SetColorThread extends Thread {
public static Activity _activity;

public static LinearLayout _layout;

public static int _childCount = 0;

public static int _currentItem = 0;

public static boolean _positive = true;

@Override
public void run()
{
    _childCount = _layout.getChildCount();

    while(true)
    {
        // Erstmal Default Hintergrundfarbe bei allen setzen
        for (int i = 0; i < _childCount; i++) {
            final Button btn = (Button) _layout.getChildAt(i);
            _activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    btn.setBackgroundColor(Color.BLACK);
                }
            });
        }

        // Nun die gew&uuml;nschte Farbe des Objektes Setzen
        final Button btn = (Button)_layout.getChildAt(_currentItem);
        _activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                btn.setBackgroundColor(Color.RED);
            }
        });

        _currentItem += _positive ? 1 : -1;

        if(_currentItem == (_childCount - 1))
            _positive = false;
        else if(_currentItem == 0)
            _positive = true;

        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }


} }

Durch ein Button klick wird der Thread aufgerufen. Funktionieren tut es.

Erste Frage: Ist das so sauber gelöst? Weil es gibt ja auch Alternativen Außer einen Thread (TimerAsync). Allgemein Meinungen zum Lösungsansatz. Ich bin stark Kritikoffen :)

Nächste Frage: Gibts alternativen zu Buttons für die Kacheln? Und wie mache ist es am besten dass die BUttons immer so Breit sind wie der Bildschirm? Weil auf dem S4 passts. Auf nem Huwai Tablet ist es im Vergelcih zum Rest Mini.

Außerdem sind es nicht nur Kacheln in der Breite. 6 in der Breite, und je nach dem was reinpasst (ca 7) Zeilen in der Höhe.
Dieser Ping Pong effekt ist nur Zeilenbezogen.

Oder soll ich lieber alles selber Zeichnen und die Finger weg von den Controls lassen?

Gruß errox

Antworten
Asmar Demir
  • Forum-Beiträge: 5

18.07.2014, 14:49:14 via Website

Ok wegen der Breite in der Relation hab ich schon was gefunden:

Layout: Layout.Width: fill_parent
Button: Width: 0dp
Button Weight: 1 / Anzahl Buttons (z.B. bei 5 Buttons 0.2)

Dann sind die egal ob bei Tablet / Smartphone immer so breit wie der Bildschirm :)

Antworten