以特定时间间隔更改背景

发布于 2024-11-10 12:07:29 字数 582 浏览 5 评论 0原文

我必须每 30 秒更改一次背景图像,但

我尝试使用线程和 TimerTask 时没有得到正确的结果。但没有工作。 我有 port1、port2...等图像。

在TimerTask中背景消失了。

class Task1 extends TimerTask {
    public void run() {
        System.out.println("Checking a");
        Random r = new Random();
        int i = r.nextInt(3) + 1;
        rl.setBackgroundResource(getResources().getIdentifier(
                    "port" + i, "drawable","com.samcom.breakingdowncd"));

    }
}

Timer timerBackground = new Timer();
timerBackground.scheduleAtFixedRate(new Task1(), 0, 30000);

它不起作用,任何帮助将不胜感激。 谢谢

I have to change background image at every 30 seconds but i am not getting proper result

I have tried with thread and TimerTask. but no work.
I have port1, port2...etc images.

In TimerTask background is gone.

class Task1 extends TimerTask {
    public void run() {
        System.out.println("Checking a");
        Random r = new Random();
        int i = r.nextInt(3) + 1;
        rl.setBackgroundResource(getResources().getIdentifier(
                    "port" + i, "drawable","com.samcom.breakingdowncd"));

    }
}

Timer timerBackground = new Timer();
timerBackground.scheduleAtFixedRate(new Task1(), 0, 30000);

Its not working, any help will be appreciated.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白衬杉格子梦 2024-11-17 12:07:29

使用这个,它可以工作

    private static final long GET_DATA_INTERVAL = 1000;
    int images[] = {R.drawable.cloud1,R.drawable.cloud2};
    int index = 0;
    ImageView img;
    Handler hand = new Handler();

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
        img = (ImageView) findViewById(R.id.image);
        hand.postDelayed(run, GET_DATA_INTERVAL);
    }

    Runnable run = new Runnable() {
        @Override
        public void run() {
            img.setBackgroundDrawable(getResources().getDrawable(images[index++]));
            if (index == images.length)
                index = 0;
            hand.postDelayed(run, GET_DATA_INTERVAL);
        }
    };

XML 代码:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/line">
    <ImageView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/image"
    />
</LinearLayout>

use this, it works

    private static final long GET_DATA_INTERVAL = 1000;
    int images[] = {R.drawable.cloud1,R.drawable.cloud2};
    int index = 0;
    ImageView img;
    Handler hand = new Handler();

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
        img = (ImageView) findViewById(R.id.image);
        hand.postDelayed(run, GET_DATA_INTERVAL);
    }

    Runnable run = new Runnable() {
        @Override
        public void run() {
            img.setBackgroundDrawable(getResources().getDrawable(images[index++]));
            if (index == images.length)
                index = 0;
            hand.postDelayed(run, GET_DATA_INTERVAL);
        }
    };

XML Code:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/line">
    <ImageView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/image"
    />
</LinearLayout>
盛夏尉蓝 2024-11-17 12:07:29

试试这个:

Runnable run = new Runnable() {
@Override
public void run() {
if (index < images.length){
    img.setBackgroundDrawable(getResources().getDrawable(images[index++]));}
else{
  index = 0;
   }
   hand.postDelayed(run, GET_DATA_INTERVAL);
   }
  };

这是正确的!

Try this:

Runnable run = new Runnable() {
@Override
public void run() {
if (index < images.length){
    img.setBackgroundDrawable(getResources().getDrawable(images[index++]));}
else{
  index = 0;
   }
   hand.postDelayed(run, GET_DATA_INTERVAL);
   }
  };

This is correct!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文