如何让图像自动切换?

时间:2013-06-15 16:46:31

标签: java android xml image

我有一个应用程序。 在我的主文件中,我想去另一个活动。 但在此之前,我想展示一些照片。 我在这里看到了一些话题,但他们无法帮助我。

这是我的想法:

加载下一个屏幕时我想显示不同的图片但是1次1次,间隔4秒并且过渡很好。

我希望有人可以帮助我吗? 请尽快帮助我。

这是我的代码:

 <?xml version="1.0" encoding="utf-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">

 <ProgressBar
     android:id="@+id/progressBar1"
     style="?android:attr/progressBarStyleLarge"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_centerHorizontal="true"
     android:layout_marginBottom="32dp" />
</RelativeLayout>

这里我的java代码:( 2星之间的所有内容都是错误的)

class Main extends AsyncTask<Void, Void, Void> {

int i = 0;
protected Void doInBackground(Void... progress ) {

     try {
    while(i < 3)
        {
        publishProgress();
        i++;
            Thread.sleep(4000);             
        }               
        return null;
    } catch (InterruptedException e) {              
        e.printStackTrace();
    }
    return null;
 }

 protected void onProgressUpdate(Void... j) {

     Drawable image=null;
     try{
         int[] imgs = new int[]{R.drawable.grijs,R.drawable.home_afbeelding,R.drawable.menu};
     image = getResources().**getDrawable**(imgs[i]);
     }
     catch(Exception e)
     {
         image = getResources().**getDrawable**(R.drawable.grijs);
         **splashImage**.setImageDrawable(image);
     }
     **splashImage**.setImageDrawable(image);            
 }

 private Object getResources() {
    // TODO Auto-generated method stub
    return null;
}

protected void onPostExecute(Void i) {
     if(**changed** != true)
        {
        **changed** = true;
        **finish()**;
        **startActivity**(new **Intent**(**classContext()**,**NewActivity**.class));
    }
 }      

}

3 个答案:

答案 0 :(得分:0)

创建一个用于更改图像的线程,睡眠时间为4秒..

答案 1 :(得分:0)

使用AsyncTask更改图像。这是AsyncTask的代码。你应该像

一样使用它
ChangeImages ci = new ChangeImages();
ci.execute();

图像位于drawables文件夹中,并引用为 R.drawable.image#,其中#表示数字。如果您想更改延迟更改 Thread.sleep(4000); 4000等于4秒。

private class ChangeImages extends AsyncTask<Void, Void, Void> {

    int i = 0;
    protected Void doInBackground(Void... progress ) {

         try {
        while(i < 3)
            {
            publishProgress();
            i++;
                Thread.sleep(4000);             
            }               
            return null;
        } catch (InterruptedException e) {              
            e.printStackTrace();
        }
        return null;
     }

     protected void onProgressUpdate(Void... j) {

         Drawable image=null;
         try{
             int[] imgs = new int[]{R.drawable.image1,R.drawable.image2,R.drawable.image3};
         image = getResources().getDrawable(imgs[i]);
         }
         catch(Exception e)
         {
             image = getResources().getDrawable(R.drawable.image1);
             splashImage.setImageDrawable(image);
         }
         splashImage.setImageDrawable(image);            
     }

     protected void onPostExecute(Void i) {
         if(changed != true)
            {
            changed = true;
            finish();
            startActivity(new Intent(classContext(),NewActivity.class));
        }
     }      
 }

答案 2 :(得分:0)

您只需使用AnimationDrawable

即可显示图片

res / anim / loading.xml

  <?xml version="1.0" encoding="utf-8"?>
  <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/voipemLoading"
  android:oneshot="false" >

  <item
    android:drawable="@drawable/loading_01"
    android:duration="300"/>
  <item
    android:drawable="@drawable/loading_02"
    android:duration="300"/>
  <item
    android:drawable="@drawable/loading_03"
    android:duration="300"/>
  <item
    android:drawable="@drawable/loading_04"
    android:duration="300"/>

  </animation-list>

dravable_animation.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DravableAnimation"
android:background="@drawable/bg_login" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="44dp"
    android:text="@string/hello_world"
    android:textColor="@color/black"
    android:textSize="24sp" />

<ImageView
    android:id="@+id/loading_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="37dp"
    android:src="@anim/loading"
    android:visibility="invisible" />

<Button
    android:id="@+id/btn_start"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/loading_image"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="48dp"
    android:text="@string/btn_start" />

<强> DravableAnimation

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;

public class DravableAnimation extends Activity implements OnClickListener {

private AnimationDrawable mAnimation;
private ImageView mAnimLogo;
private Button mbtnStart;
private boolean mStart;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dravable_animation);

    mAnimLogo = (ImageView) findViewById(R.id.loading_image);
    mAnimation = (AnimationDrawable) mAnimLogo.getDrawable();
    mbtnStart = (Button) findViewById(R.id.btn_start);

    mbtnStart.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if (!mStart) {
        mAnimLogo.post(new Runnable() {
            @Override
            public void run() {
                mAnimLogo.setVisibility(View.VISIBLE);
                mAnimation.start();
                mStart = true;
                mbtnStart.setText("Stop");
            }
        });
    } else {
        mAnimation.stop();
        mbtnStart.setText("Start");
        mStart = false;
    }
  }
 }

Download source code from here