Display-Breite zum App-Start auslesen

  • 2 Antworten
  • Letztes Antwortdatum
znieh99

znieh99

Fortgeschrittenes Mitglied
12
Hallo Forum;
ich möchte zum App-Start einen TextView animieren sodass er ein Laufband darstellt. Mein Problem ist, dass ich die Breite des Display benötige. Da das Layout aber noch nicht fertig erstellt ist, ist getWidth() natürlich 0. Daher meine Frage: Wo platziere ich meinen Code sodass getWidth() greift oder auf was kann ich warten das getWidth() greift.
lg Heinz

der Code:
Code:
public class MainActivity extends Activity {

    private RelativeLayout layout;

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout =  (RelativeLayout)findViewById(R.id.activity_main);

        bewegen();
    }

    private void bewegen() {
        TextView tv = (TextView) findViewById(R.id.txt_animate);
        int end = 0;
        tv.animate().setDuration(10000);
        int mx = layout.getWidth();

        while(end < 1) {
            tv.animate().x(mx);
            end++;
        }
    }
}
 
Hallo Heinz ,

zu a) Breite des Bildschirmes : die Formel habe ich bereits in älteren Beiträgen schon mehrfach gepostet
Verständnisprobleme beim Layout

zu b )
du brauchst keine Animation zu bauen, schau dir mal Beispiele zu zu Marquee / Ellipsize an
 
  • Danke
Reaktionen: znieh99
swa00 schrieb:
du brauchst keine Animation zu bauen, schau dir mal Beispiele zu zu Marquee / Ellipsize an
Hallo Stefan,
danke für die Hinweise! Ich habe das nun wie folgt gelöst:
Code:
public class MainActivity extends Activity {

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bewegen();
    }

    private void bewegen() {
            // Display Dimensionen holen
        DisplayMetrics dm = getResources().getDisplayMetrics();
            // Laufleiste für Text erstellen und starten
        final TranslateAnimation m_ta = new TranslateAnimation(dm.widthPixels, -1 * (dm.widthPixels), 0f, 0f);
        m_ta.setDuration(10000);        //Zeitdauer für einen Durchlauf
        m_ta.setInterpolator(new LinearInterpolator());     //gleichmässige Bewegung
        m_ta.setRepeatCount(Animation.INFINITE);            //endlos
        TextView m_tv = (TextView)findViewById(R.id.txt_animate);
        m_tv.startAnimation(m_ta);
            // Warten bis "Thread" beendet, dann Animation stopen
        new CountDownTimer(20000, 5000) {
            public void onTick(long millisUntilFinished) { }

            public void onFinish() {
                m_ta.cancel();      //beende Animation
            }
         }.start();
    }
}
 

Ähnliche Themen

G
Antworten
0
Aufrufe
103
Gerdchen07
G
G
Antworten
1
Aufrufe
364
Gerdchen07
G
G
Antworten
13
Aufrufe
575
Gerdchen07
G
L
Antworten
2
Aufrufe
466
Lexub
L
migi01
Antworten
26
Aufrufe
1.913
migi01
migi01
Zurück
Oben Unten