Я играю с Android-программированием в течение нескольких недель, и я пытаюсь заставить что-то работать, что кажется простым, но я думаю, что чего-то не хватает.
Я пытаюсь сделать так, чтобы фон постепенно исчезал, скажем, от белого до черного.
Я пробовал несколько вещей, ни одна из которых, похоже, не работает.
Первое, что я сделал, это использовать цикл for и метод setBackgroundColor для LinearLayout, изменяя значения R, G и B вместе от 0 до 255. Это не работает.
Я могу сделать одно из изменений настроек, но когда я делаю цикл, я получаю только последнее значение. Я думаю, что пользовательский интерфейс блокируется, пока цикл продолжается и размораживается, когда цикл завершается. Я попытался положить задержки в цикле (уродливые задержки вложенных циклов и Thread.sleep), все безрезультатно.
Может ли кто-нибудь указать мне, как это сделать? Нужен ли мне второй поток для изменения цвета? У меня есть смутное представление о потоках, хотя я никогда не использовал их.
Мой пример кода, показывающий примерно то, что я пытаюсь сделать, выглядит следующим образом:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/screen"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
И мой java-код (0,01 inc. просто выступает в качестве уродливого механизма задержки, чтобы попытаться увидеть, как цвет меняется медленно):
package nz.co.et.bgfader;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
public class bgfader extends Activity {
LinearLayout screen;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
screen = (LinearLayout) findViewById(R.id.screen);
for (int i = 0; i < 65535; i+=0.01) {
screen.setBackgroundColor(0xff000000 + i);
}
}
}
Любая помощь будет принята с благодарностью
Приветствия
Стив