从 gridview onClick 全屏显示图像
Display image in full screen from gridview onClick
我正在尝试在 Gridview 中显示来自特定目录的本地图像,现在我想在单击新 activity.I 中的 gridview 缩略图时显示完整图像android 过去两天我在网上搜索过,找不到任何对我有帮助的东西。希望这里的任何人都能提供帮助。
这是我的代码。
PictureRecyclerAdapter.java
private ArrayList<File> filesList;
private Activity activity;
Context context;
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView thumbnail;
ImageButton imageDownload, imageShare;
public MyViewHolder(View itemView) {
super(itemView);
thumbnail = itemView.findViewById(R.id.pictures_thumbnail);
imageDownload = itemView.findViewById(R.id.imageDownload);
imageShare = itemView.findViewById(R.id.imageShare);
}
}
public pictureRecyclerAdapter(ArrayList<File> filesList, Activity activity) {
this.filesList = filesList;
this.activity = activity;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.pictures_item_view, parent, false);
return new MyViewHolder(inflatedView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
final File currentFile = filesList.get(position);
Glide.with(activity).load(currentFile.getAbsolutePath())
.skipMemoryCache( false )
.crossFade().into(holder.thumbnail);
holder.imageDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
copyFile(currentFile, new File( DIRECTORY_TO_SAVE_MEDIA_NOW+currentFile.getName()),activity);
} catch (IOException e) {
e.printStackTrace();
}
}
});
holder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go = new Intent(activity, ImageDetailsActivity.class);
go.putExtra("image", FileProvider.getUriForFile(context,BuildConfig.APPLICATION_ID + ".provider",currentFile));
activity.startActivity(go);
}
});
这是我的 PictureActivity
public class pictures extends Fragment {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
private static final String IMAGE_LOCATION = "/storage/emulated/0/Image Folder/";
public pictures() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_pictures, container, false);
recyclerView=(RecyclerView)v.findViewById(R.id.pictures_recyclerView);
layoutManager = new GridLayoutManager(getContext(),2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new ItemDecorationAlbumColumns(
getResources().getDimensionPixelSize(R.dimen.photos_list_spacing),2));
getListFiles(new File(IMAGE_LOCATION));
pictureRecyclerAdapter ra = new pictureRecyclerAdapter(this.getListFiles(new File(IMAGE_LOCATION)), getActivity());
recyclerView.setAdapter(ra);
return v;
}
private ArrayList<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files;
files = parentDir.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().endsWith(".jpg") ||
file.getName().endsWith(".png") ||
file.getName().endsWith(".jpeg")) {
if (!inFiles.contains(file))
inFiles.add(file);
}
}
}
return inFiles;
}
}
要在 ImageDetailsActivity 中显示图片,请在 Intent 中传递图片文件路径并启动 activity。
holder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go = new Intent(activity, ImageDetailsActivity.class);
go.putExtra("image",currentFile.getAbsolutePath());
activity.startActivity(go);
}
});
然后详细activity onCreate 方法,获取路径并使用滑动或其他方式显示它。
if(getIntent() != null){
String path = getIntent().getStringExtra("image");
Glide.with(this)
.load(path)
.into(imageView);
}
我正在尝试在 Gridview 中显示来自特定目录的本地图像,现在我想在单击新 activity.I 中的 gridview 缩略图时显示完整图像android 过去两天我在网上搜索过,找不到任何对我有帮助的东西。希望这里的任何人都能提供帮助。 这是我的代码。
PictureRecyclerAdapter.java
private ArrayList<File> filesList;
private Activity activity;
Context context;
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView thumbnail;
ImageButton imageDownload, imageShare;
public MyViewHolder(View itemView) {
super(itemView);
thumbnail = itemView.findViewById(R.id.pictures_thumbnail);
imageDownload = itemView.findViewById(R.id.imageDownload);
imageShare = itemView.findViewById(R.id.imageShare);
}
}
public pictureRecyclerAdapter(ArrayList<File> filesList, Activity activity) {
this.filesList = filesList;
this.activity = activity;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.pictures_item_view, parent, false);
return new MyViewHolder(inflatedView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
final File currentFile = filesList.get(position);
Glide.with(activity).load(currentFile.getAbsolutePath())
.skipMemoryCache( false )
.crossFade().into(holder.thumbnail);
holder.imageDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
copyFile(currentFile, new File( DIRECTORY_TO_SAVE_MEDIA_NOW+currentFile.getName()),activity);
} catch (IOException e) {
e.printStackTrace();
}
}
});
holder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go = new Intent(activity, ImageDetailsActivity.class);
go.putExtra("image", FileProvider.getUriForFile(context,BuildConfig.APPLICATION_ID + ".provider",currentFile));
activity.startActivity(go);
}
});
这是我的 PictureActivity
public class pictures extends Fragment {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
private static final String IMAGE_LOCATION = "/storage/emulated/0/Image Folder/";
public pictures() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_pictures, container, false);
recyclerView=(RecyclerView)v.findViewById(R.id.pictures_recyclerView);
layoutManager = new GridLayoutManager(getContext(),2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new ItemDecorationAlbumColumns(
getResources().getDimensionPixelSize(R.dimen.photos_list_spacing),2));
getListFiles(new File(IMAGE_LOCATION));
pictureRecyclerAdapter ra = new pictureRecyclerAdapter(this.getListFiles(new File(IMAGE_LOCATION)), getActivity());
recyclerView.setAdapter(ra);
return v;
}
private ArrayList<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files;
files = parentDir.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().endsWith(".jpg") ||
file.getName().endsWith(".png") ||
file.getName().endsWith(".jpeg")) {
if (!inFiles.contains(file))
inFiles.add(file);
}
}
}
return inFiles;
}
}
要在 ImageDetailsActivity 中显示图片,请在 Intent 中传递图片文件路径并启动 activity。
holder.thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent go = new Intent(activity, ImageDetailsActivity.class);
go.putExtra("image",currentFile.getAbsolutePath());
activity.startActivity(go);
}
});
然后详细activity onCreate 方法,获取路径并使用滑动或其他方式显示它。
if(getIntent() != null){
String path = getIntent().getStringExtra("image");
Glide.with(this)
.load(path)
.into(imageView);
}