打开保存在应用程序文件夹中的图像
Opening images saved inside app folder
android 相对较新,并且是图库功能的新手。话虽如此,在我的应用程序中,我将图像保存在图库文件夹 (Gallery/MyAppFolder) 中。我在 GridView 中显示这些文件夹。到这里它按预期工作正常。现在我正在尝试在 gridview 上实现一个点击监听器,它应该显示该特定图像。下面是我在 activity 中尝试实现上述 objective
的代码
public String FolderPath = Environment.getExternalStorageDirectory().getPath() + "/MyAppFolder";
private void setGridAdapter(String path) {
// Create a new grid adapter
gridItems = createGridItems(path);
MyGridAdapter adapter = new MyGridAdapter(this, gridItems);
// Set the grid adapter
GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(adapter);
// Set the onClickListener
gridView.setOnItemClickListener(this);
}
private List<GridViewItem> createGridItems(String directoryPath) {
List<GridViewItem> items = new ArrayList<GridViewItem>();
// List all the items within the folder.
files = new File(directoryPath).listFiles(new ImageFileFilter());
for (File file : files) {
// Add the directories containing images or sub-directories
if (file.isDirectory()
&& file.listFiles(new ImageFileFilter()).length > 0) {
items.add(new GridViewItem(file.getAbsolutePath(), true, null));
}
// Add the images
else {
Bitmap image = BitmapHelper.decodeBitmapFromFile(file.getAbsolutePath(),
50,
50);
items.add(new GridViewItem(file.getAbsolutePath(), false, image));
}
}
return items;
}
private boolean isImageFile(String filePath) {
if (filePath.endsWith(".jpg") || filePath.endsWith(".png") || filePath.endsWith(".pdf"))
// Add other formats as desired
{
return true;
}
return false;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (gridItems.get(position).isDirectory()) {
setGridAdapter(gridItems.get(position).getPath());
}
else {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"),SELECT_PICTURE);
Log.e("Path for clicked Item::",gridItems.get(position).getPath());
}
}
private class ImageFileFilter implements FileFilter {
@Override
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
else if (isImageFile(file.getAbsolutePath())) {
return true;
}
return false;
}
}
我试过使用 intent 和 onActivityResult 方法但没有成功。这是我在设置 gridview 和在我的应用程序中显示文件夹时所遵循的 solution。你能指导我在 onClick Listener 中做什么,以便直接在我的布局中打开图像吗?我不想浏览图库并显示图片。
为全屏视图或片段创建新的 Activity,并在参数或额外的参数中传递图像路径,并仅在此 activity 上显示此图像。
你也应该检查这个库 Picasso。它可以使处理图像变得更加容易。
android 相对较新,并且是图库功能的新手。话虽如此,在我的应用程序中,我将图像保存在图库文件夹 (Gallery/MyAppFolder) 中。我在 GridView 中显示这些文件夹。到这里它按预期工作正常。现在我正在尝试在 gridview 上实现一个点击监听器,它应该显示该特定图像。下面是我在 activity 中尝试实现上述 objective
的代码public String FolderPath = Environment.getExternalStorageDirectory().getPath() + "/MyAppFolder";
private void setGridAdapter(String path) {
// Create a new grid adapter
gridItems = createGridItems(path);
MyGridAdapter adapter = new MyGridAdapter(this, gridItems);
// Set the grid adapter
GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(adapter);
// Set the onClickListener
gridView.setOnItemClickListener(this);
}
private List<GridViewItem> createGridItems(String directoryPath) {
List<GridViewItem> items = new ArrayList<GridViewItem>();
// List all the items within the folder.
files = new File(directoryPath).listFiles(new ImageFileFilter());
for (File file : files) {
// Add the directories containing images or sub-directories
if (file.isDirectory()
&& file.listFiles(new ImageFileFilter()).length > 0) {
items.add(new GridViewItem(file.getAbsolutePath(), true, null));
}
// Add the images
else {
Bitmap image = BitmapHelper.decodeBitmapFromFile(file.getAbsolutePath(),
50,
50);
items.add(new GridViewItem(file.getAbsolutePath(), false, image));
}
}
return items;
}
private boolean isImageFile(String filePath) {
if (filePath.endsWith(".jpg") || filePath.endsWith(".png") || filePath.endsWith(".pdf"))
// Add other formats as desired
{
return true;
}
return false;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (gridItems.get(position).isDirectory()) {
setGridAdapter(gridItems.get(position).getPath());
}
else {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"),SELECT_PICTURE);
Log.e("Path for clicked Item::",gridItems.get(position).getPath());
}
}
private class ImageFileFilter implements FileFilter {
@Override
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
else if (isImageFile(file.getAbsolutePath())) {
return true;
}
return false;
}
}
我试过使用 intent 和 onActivityResult 方法但没有成功。这是我在设置 gridview 和在我的应用程序中显示文件夹时所遵循的 solution。你能指导我在 onClick Listener 中做什么,以便直接在我的布局中打开图像吗?我不想浏览图库并显示图片。
为全屏视图或片段创建新的 Activity,并在参数或额外的参数中传递图像路径,并仅在此 activity 上显示此图像。 你也应该检查这个库 Picasso。它可以使处理图像变得更加容易。