Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android – 几秒钟后在运行时更改图像视图源大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下代码适用于我的app中的启动画面.我需要做的是当活动加载图像时应该显示认值,然后几秒后图像应该在同一活动中更改为另一个.我有一个像第一个不同颜色的图像.我想在几秒钟后更改该图像的屏幕.

我在我的代码中这样做了.

package com.ruchira.busguru;

import android.media.MediaPlayer;
import android.os.AsyncTask;
import android.os.bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.View.onClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class SplashScreen extends Activity {

    ImageView imgBus;
    MediaPlayer introSound,bellSound;

    @Override
    public void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.splash_screen);
        imgBus = (ImageView) findViewById(R.id.imgBus);
        imgBus.setImageresource(R.drawable.blackbus);
        introSound = MediaPlayer.create(SplashScreen.this,R.raw.ENGInestart);
        introSound.start();

                Thread timer = new Thread(){
            public void run(){
                try{
                    sleep(3000);
                } catch (InterruptedException E) {              
                    e.printStackTrace();
                }finally{
                   imgBus.setImageresource(R.drawable.bluekbus);    
                }
            }
        };
        timer.start();
    }

    @Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.splash_screen,menu);
        return true;
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        introSound.stop();
        finish();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        introSound.stop();
        finish();
    }
}

但问题是程序停止执行线程说…

“android.view.ViewRoot $CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图.”

我如何才能实现这一目标?有人请帮我解决这个问题.我是android开发的新手..

谢谢.

解决方法

您应该使用ImageView的Handler和Runnable. Handler是特定于Android的调度程序,它们可以在UI线程上运行.试试这个:
ImageView imgBus;
MediaPlayer introSound,bellSound;
Runnable swapImage = new Runnable() {
    @Override
    public void run() {
        imgBus.setImageresource(R.drawable.bluekbus);
    }
};

在onCreate()里面调用

imgBus = (ImageView) findViewById(R.id.imgBus);
imgBus.setImageresource(R.drawable.blackbus);
imgBus.postDelayed(swapImage,3000);  // Add me!

了解启动画面是不受欢迎的,因为您应该专注于尽快启动应用程序(同时在后台加载较慢的元素).然而,有时稍微延迟是不可避免的.

大佬总结

以上是大佬教程为你收集整理的Android – 几秒钟后在运行时更改图像视图源全部内容,希望文章能够帮你解决Android – 几秒钟后在运行时更改图像视图源所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。