我試圖從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