Android 定期在ImageView中更改图像。

Android 定期在ImageView中更改图像。,android,ui-thread,Android,Ui Thread,我的主要活动: package com.example.imagechange; public class MainActivity extends Activity { ImageView imageView; int []imageArray={R.drawable.a0,R.drawable.a1,R.drawable.a2,R.drawable.a3}; @Override public void onCreate(Bundle savedInstanceState) {

我的主要活动:

package com.example.imagechange;

public class MainActivity extends Activity 
{

ImageView imageView;
int []imageArray={R.drawable.a0,R.drawable.a1,R.drawable.a2,R.drawable.a3};


@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView = (ImageView)findViewById(R.id.imageView1);

    final Handler handler = new Handler();
    Runnable runnable = new Runnable() 
    {
                int i=0;
                public void run() 
                {
                    imageView.setImageResource(imageArray[i]);
                    i++;
                    if(i>imageArray.length-1)
                    {
                    i=0;    
                    }
                    handler.postDelayed(this, 3000);  //for interval...
                }

    };
            handler.postDelayed(runnable, 1000); //for initial delay..
  }




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


因此,在上面的代码中,我已经复制了drawable中的图像,并定期对其进行更改,但我需要从
url
获取图像,并将其显示在
ImageView

中。您的代码从行中的资源设置图像

setImageResource(imageArray[i])


您要做的是从URL加载图像。

尝试以下代码:首先,您需要从URL获取图像路径,然后将该URL传递到此函数

<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" >



<ImageView
    android:id="@+id/imageView1"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:contentDescription="@string/app_name"
    android:layout_marginTop="56dp"
    android:src="@drawable/a0" />

</RelativeLayout>
没有什么太复杂的–只需使用“src”字符串创建URL对象(即字符串src=”http://thinkandroid.wordpress.com),连接到它,并使用Android的BitmapFactory类对输入流进行解码。结果应该是你想要的位图对象! 在那之后:

public static Bitmap getBitmapFromURL(String src) {
    try {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

re>layouts>drawable
中创建第一个可绘制文件夹,并在其中放置图像a.png、b.png等。

定期在ImageView中更改图像。(这意味着什么?)。假设我有4个URL,正在下载并在ImageView中显示,并且我必须在固定的时间间隔内更改相同ImageView中的图像。感谢您的回复,我通过下载SmartImageView完成了回复-
imageView.setImageBitmap(bitmap);
ImageView MyImageView;
int []imageArray={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d};

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.one);
    MyImageView=(ImageView)findViewById(R.id.imageView1);

    /*here the countdown start for images*/

    final Handler handler = new Handler();
    Runnable runnable = new Runnable() {
       int i=0;
       public void run() {
           MyImageView.setImageResource(imageArray[i]);
           i++;
           if(i>imageArray.length-1) {
               i=0;    
           }
           handler.postDelayed(this, 500);  //for interval...
       }
   };
   handler.postDelayed(runnable, 2000); //for initial delay..
    /*here the button click counter start */
}