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 */
}