如何每秒更改Android背景颜色

时间:2017-01-05 13:54:01

标签: c# android xamarin

我需要每秒从ARGB值设置应用程序的背景颜色,到目前为止,大多数尝试告诉我'只有原始线程可以触摸它的视图',所以我想知道是否有办法在C#?

2 个答案:

答案 0 :(得分:2)

在Xamarin中,您希望使用Activity.RunOnUIThread在UI线程上运行代码。您只能从UI线程更新UI - 此规则没有例外。

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

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

进一步阅读:

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

答案 1 :(得分:0)

正确,您只能从主(UI)线程更新视图。有很多方法可以定期安排UI更新 - 您可以使用HandlerThreadAsyncTaskTimer,但实际上最简单的方法就是使用Handler(java) :

    final Handler handler = new Handler();

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

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

    job.run();

应直接转换为C#。