sdcardの特定のフォルダから一連の画像をスライドショー形式で表示しようとしています。 filelist []には、そのディレクトリにあるすべてのファイルの名前が含まれています。thread.sleepに基づいてループを実行できません
ここで画像を除外しています。次に、thread.sleep(1000)は何の効果もないようです。 1000msの時間が経過すると、ディレクトリ内の最後のイメージのみが表示されます。どこが間違っていますか?私はこれを達成することができる他の方法ですか?
多分私は完全に間違った。私は初心者ですので、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スレッドで行われたイメージビューの変更がワーカースレッドでないことを確認してください。 – user370305
filelistに1つ以上のイメージがありますか?ループの前にリストをフィルタリングしている場合は、最後の画像以外のすべてを何らかの形でフィルタリングした可能性はありますか? – brianestey
こんにちは、 あなたはTimerTaskを試すことができます。 – Lucifer