如何使用预定义的时间间隔自动更改ImageView中url中的图像



这是我的主要课程:

$`公共类MainActivity扩展Activity实现Runnable{

ImageView im1,im2,im3;
int b,p=0,j,k,l;
String b1 ;
Bitmap img;
Bitmap bm;
ArrayList<String> arl = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
im1 = (ImageView)findViewById(R.id.imageView1);
im2 = (ImageView)findViewById(R.id.imageView2);
im3 = (ImageView)findViewById(R.id.imageView3);
arl.add("http://dev.purpletab.com/files/jewels/original/Jewel_1344148107.png");
arl.add("http://dev.purpletab.com/files/jewels/original/Jewel_1332428944.png");
arl.add("http://dev.purpletab.com/files/jewels/original/Jewel_1341902610.png");
while(p<1)
{
for(j=0;j<3;j++)
{
Bitmap bitmap1 = DownloadImage(arl.get(j));
Log.e("image of j : ", ""+bitmap1);
im1.setImageBitmap(bitmap1);
delay();
k=j+1;
if(k==3)
k=0;
Bitmap bitmap2 = DownloadImage(arl.get(k));
Log.e("image of k : ", ""+bitmap2);
im2.setImageBitmap(bitmap2);
delay();
l=k+1;
if(l==3)
l=0;
Bitmap bitmap3 = DownloadImage(arl.get(l));
Log.e("image of l : ", ""+bitmap3);
im3.setImageBitmap(bitmap3);
delay();
}         
p++;
}
}
private void delay()
{
Thread t = new Thread()
{
public void run() 
{
Log.e("entered thread", " entered run method");
try
{
Log.e("entered for loop ", "loop : ");
Thread.sleep(10000);
}
catch(Exception e)
{
Log.e("thread error", ""+e);
}
}
};
t.start();
Log.e("started thread", ""+t);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private Bitmap DownloadImage(String URL)
{        
Log.e("bitmap d/l",""+URL);
Bitmap bitmap = null;
InputStream in = null;        
try 
{
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in);
Log.e("downloaded images ", " images ");
in.close();
} 
catch (IOException e1) 
{
e1.printStackTrace();
Log.e("started thread", ""+e1);
}
return bitmap;                
}
private InputStream OpenHttpConnection(String urlString)throws IOException
{
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))throw new IOException("Not an HTTP connection");
try
{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();                
if (response == HttpURLConnection.HTTP_OK) 
{
in = httpConn.getInputStream();  
Log.e("download in progress", " . . . ");
}
else if(response != HttpURLConnection.HTTP_OK)
{
//ProfileImgPreview.setBackgroundResource(R.drawable.photo_bg);
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");            
}
return in;    
}
@Override
public void run() {
Log.e("started the other thread", "not defined");
}

}`

这是我的布局代码:

$`

<ImageView
android:id="@+id/imageView1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:contentDescription="@string/app_name"
android:src="@drawable/a0"/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/imageView1"
android:contentDescription="@string/app_name"
android:src="@drawable/a1"/>
<ImageView
android:id="@+id/imageView3"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/imageView2"
android:contentDescription="@string/app_name"
android:src="@drawable/a2"/>

`

所以当我运行这个代码时,只查看最后一个图像,并且图像不会根据给定的延迟而改变。我的意思是最后的图像加载为静态图像,但我需要它作为动画视图。有人能回答我吗?

提前谢谢。

您的延迟函数不会延迟onCreate,它只是在后台启动一个线程,而不会执行任何操作。onCreate只是继续在它的线程(你的应用程序主ui线程)上运行。

延迟某些操作的正确方法是调用ImageView:上的postDelayed函数

im1.postDelayed(new Runnable() {
public void run() {
//Code to change image
}
}, 5000);

最新更新