Отображение изображения в полноэкранном режиме из gridview onClick

Я пытаюсь отобразить локальные изображения из определенного каталога в Gridview, и теперь я хочу отображать полное изображение, когда я нажимаю на миниатюру 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;
    }



}
1
0
721
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы отобразить изображение в ImageDetailsActivity, передайте путь к файлу изображения в намерении и начните действие.

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);
        }
    });

Затем подробно опишите метод onCreate, получите путь и отобразите его, используя скольжение или что-то еще.

if (getIntent() != null){
  String path = getIntent().getStringExtra("image");
  Glide.with(this)
    .load(path)
    .into(imageView);
}

Работает без сбоев, могу ли я использовать тот же метод для видео

Faisal Khan 27.01.2019 08:23

Таким образом вы можете передать путь к видеофайлу другому действию. Но вам нужен другой подход к воспроизведению видео, так как glide не может воспроизводить видео. Если вы просто хотите показать миниатюру видео с помощью glide, я ссылаюсь на эту ссылку (futurestud.io/tutorials/glide-displaying-gifs-and-videos)

Chan Myae Aung 27.01.2019 08:47

if (getIntent() != null){ String path = getIntent().getStringExtra("video"); videoView.setVideoPath (путь); MediaController mc = новый MediaController (это, ложь); videoView.setMediaController(mc); videoView.setFitsSystemWindows(true); мк.шоу (0); mc.setVisibility(View.VISIBLE); mc.setAnchorView (видеопросмотр); видеоПросмотр.старт(); сделал это, работает нормально

Faisal Khan 27.01.2019 09:36

Другие вопросы по теме