Display-Breite zum App-Start auslesen

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

H
Antworten
2
Aufrufe
1.309
Hcman
H
Manny87
  • Manny87
Antworten
11
Aufrufe
164
swa00
swa00
Laser5001
  • Laser5001
Antworten
2
Aufrufe
900
Laser5001
Laser5001
Zurück
Oben Unten