6

これは些細な質問だと思いますが、答えが見つかりませんでした。

複数の画像を表示する画像ビューアを開きたい Android アプリを作成しています。私は1つの画像だけでこれを行う方法を知っています:

    Intent intent = new Intent();  
    intent.setAction(android.content.Intent.ACTION_VIEW);
    File file1 = new File("/mnt/sdcard/photos/20397a.jpg");
    intent.setDataAndType(Uri.fromFile(file1), "image/jpg");
    startActivity(intent);

これは完全に機能します。しかし、複数の画像をビューアに渡すにはどうすればよいでしょうか?

ありがとう!!L.

4

3 に答える 3

1

ハードコードされたパスは使用しないでください。

この行を変更します:

File file1 = new File("/mnt/sdcard/photos/20397a.jpg");

File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

それはに位置します

/storage/emulated/0/Picture

Environment.DIRECTORY_PICTURESSDカードの親ディレクトリが必要な場合は削除できます。

単一20397a.jpgのファイルを指定しているため、他の画像を見ることができません。

また、画像以外のコンテンツを見たい場合は、' image/jpg' を ' ' にimage/*変更してください。

于 2016-08-13T14:09:09.883 に答える
1

画像ビューアを開きたい

Android には「画像ビューア」はありません。image/jpegデバイスとユーザーは、ローカル ファイルから読み込まれたファイルを表示できる非常に多くの異なるアプリを持っている場合があります。

しかし、複数の画像をビューアに渡すにはどうすればよいでしょうか?

Intent申し訳ありませんが、あらゆる種類の複数のファイルを開くための標準はありません。

/mnt/sdcard/また、アプリにハードコーディングしないでください。クラスの適切なメソッドを使用して、Environment外部ストレージのディレクトリを決定してください。

于 2012-06-26T16:52:43.173 に答える
1

表示するすべてのファイルを配列にリストする必要があります。次に、配列の 1 つを表示し、ドラッグすると次の画像が表示されます。

ArrayList list;

private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Ansi date format

list = new ArrayList();  
  String path = "c:/temp/";  
  File dir = new File(path);   
  for (String dirListing : dir.list()) {
    if ((dirListing.endsWith(".jpg")) ||
      (dirListing.endsWith(".png")) || 
      (dirListing.endsWith(".gif"))) {
      try { // write all file-info to a arraylist
        File f = new File(path+dirListing);      
        list.add(f.getCanonicalPath()); 
        list.add(f.getName());
        list.add(String.valueOf(f.length()));
        String lastModified = dateFormat.format(new Date(f.lastModified()));
        list.add(lastModified);
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      catch (IndexOutOfBoundsException e) {
        e.printStackTrace();
      }
    }
  }

これで、配列を読み取り、1 つずつ表示できます。

于 2012-06-26T16:54:58.077 に答える