2017-01-05 6 views
0

Ich brauche die Hintergrundfarbe der Anwendung jede Sekunde von einem ARGB-Wert, so weit die meisten Versuche haben mir gesagt 'nur der ursprüngliche Thread kann es berühren' Ansichten, so fragte ich mich, ob gab es einen Weg, dies in C# zu tun?Wie man Android Hintergrundfarbe jede Sekunde ändert

Antwort

0

Korrekt, Sie können nur eine Ansicht vom Hauptthread aktualisieren. Es gibt viele Möglichkeiten UI planen regelmäßig Updates - Sie HandlerThread oder AsyncTask oder Timer aber wirklich der einfachste Weg für einen einfachen Job verwenden können, wie Sie wollen, ist verwenden nur einen Handler (Java):

final Handler handler = new Handler(); 

    Runnable job = new Runnable() { 
     @Override 
     public void run() { 
      // Set background color 

      handler.postDelayed(this, 1000); 
     } 
    }; 

    job.run(); 

übersetzen sollte direkt in C#.

+0

Wo abouts würde ich diesen Code ausführen? – Dan2899

+0

[@ Dan2899] (http://stackoverflow.com/users/5669940/dan2899), können Sie Ihren Code vor/nach 'handler.postDelayed (diese, 1000);' –

+0

@ Dan2899 Sie verwenden diesen Code, wenn Sie wollen um die Hintergrundfarbe zu ändern, zum Beispiel in onCreate –

2

In Xamarin möchten Sie Activity.RunOnUIThread verwenden, um Code auf dem UI-Thread auszuführen. Sie können die Benutzeroberfläche nur über den Benutzeroberflächenthread aktualisieren. Es gibt keine Ausnahmen von dieser Regel.

RunOnUiThread (() => 
    // Code to run on UI thread here 
); 

https://developer.xamarin.com/api/member/Android.App.Activity.RunOnUiThread/p/System.Action/

Weiterführende Literatur:

https://developer.xamarin.com/guides/android/advanced_topics/writing_responsive_applications/

Verwandte Themen