我试图从sdcard中的特定文件夹显示一系列图像 - 以幻灯片的形式。 filelist []包含该目录中存在的所有文件的名称。无法执行基于thread.sleep的循环
我在这里过滤出图像。接下来,thread.sleep(1000)似乎没有任何作用。在1000毫秒后只显示目录中的最后一个图像。我哪里错了?任何其他方式,我可以做到这一点?
也许我已经完全错了。我是一个新手,所以plz的帮助。
public class List_imgActivity extends Activity {
/** Called when the activity is first created. */
Bitmap[] bitmapArray = new Bitmap[1000];
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button pf=(Button) findViewById(R.id.pick_button);
pf.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent("org.openintents.action.PICK_DIRECTORY");
intent.setData(Uri.parse("file:///sdcard"));
intent.putExtra("org.openintents.extra.TITLE", "Please select a folder");
intent.putExtra("org.openintents.extra.BUTTON_TEXT", "Use this folder");
startActivityForResult(intent, 1);
}
});
}
protected void onActivityResult(int requestCode, int recievecode, Intent intent)
{
if (requestCode == 1)
{
Uri uri = intent.getData();
try {
File f=new File(new URI(uri.toString()));
final String nx=f.toString();
if(f.isDirectory()) {
File filelist[] = f.listFiles();
for(int i=0;i<filelist.length;i++)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String filename = filelist[i].getName();
int pos = filename.lastIndexOf(".");
String ext = filename.substring(pos);
if(ext.equals(".jpg"))
{
TextView tv1= (TextView) findViewById(R.id.textView1);
tv1.setText(filelist[i].toString());
ImageView iv1=(ImageView) findViewById(R.id.imageView1);
bitmapArray[i] = BitmapFactory.decodeFile(filelist[i].toString());
iv1.setImageBitmap(bitmapArray[i]);
}
}
}
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
发布整个活动代码。如果您使用的是线程,请确保您在UI线程上完成的imageview更改不在工作线程中。 – user370305
你确定filelist里面有1个以上的图像吗?如果在循环之前过滤列表,是否有可能以某种方式过滤了除最后一个图像以外的所有内容? – brianestey
嗨有, 你可以尝试TimerTask。 – Lucifer