Как я могу отображать изображения или видео для Android, такие как Instagram или Facebook прокрутки автоигры - PullRequest
0 голосов
/ 12 июня 2018

Вот мой класс адаптера. Я не могу отобразить его в массиве, если его изображение или видео, если его видео, мне также нравится, что он автоматически воспроизводится при прокрутке к видео.как Facebook или Instagram изображение или видео.

Я могу передать его как массив, но когда я связываю его, я могу только связать видео или изображение, и если его видео не воспроизводится автоматически, он даже не отображает

   public class Adapter extends 
   RecyclerView.Adapter<RecyclerView.ViewHolder{
        private Context context;
        private LayoutInflater inflater;
        List<Datainfo> data_info = Collections.emptyList();
        public Datainfo info;
        int currentPos = 0;
        private Uri uri;

        // create constructor to initilize context and data sent from 
    MainActivity
        public Adapter(Context context, List<Datainfo> data_info){
            this.context = context;
            inflater= LayoutInflater.from(context);
            this.data_info = data_info;
        }

        // Inflate the layout when viewholder created
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup 
    parent, int viewType) {
            View view=inflater.inflate(R.layout.activity, parent,false);
            MyHolder holder = new MyHolder(view);
            return holder;
        }

        // Bind data
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int 
    position) {

            // Get current position of item in recyclerview to bind data 
    and assign values from list
            MyHolder myHolder = (MyHolder) holder;

            Datainfo info = data_info.get(position);

            if(null != info.image) {
                myHolder.image.setImageBitmap(current.image);
                myHolder.image.setVisibility(View.VISIBLE);

            }else{

                myHolder.vid.setOnCompletionListener(new 
    MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        String uriPath = "https://....."; // your URL here
                        uri = Uri.parse(uriPath);
                        MediaPlayer mediaPlayer = new MediaPlayer();

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        try {

    mediaPlayer.setDataSource(String.valueOf(uri));
                            mediaPlayer.prepareAsync(); // might take 
    long! (for buffering, etc)
                            mediaPlayer.start();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }


                    }
                });

            }


        }


        // return total item from List
        @Override
        public int getItemCount() {
            return data_info.size();
        }


        class MyHolder extends RecyclerView.ViewHolder{


            private ImageView image;
            private VideoView vid;

            // create constructor to get widget reference
            public MyHolder(View itemView) {
                super(itemView);

                image = (ImageView) itemView.findViewById(R.id.image);
                vid = (VideoView) itemView.findViewById(R.id.vid);
            }

        }
    }

вот мой макет активности

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/feed_item_padding_top_bottom"
    android:paddingTop="@dimen/feed_item_padding_top_bottom">


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="fill_vertical"
        android:orientation="vertical">


        <ImageView
            android:id="@+id/image"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:cropToPadding="true"
            android:scaleType="fitXY"
            android:visibility="gone">
       </ImageView>

        <VideoView
            android:id="@+id/vid"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="2"
            android:visibility="gone" />

    </LinearLayout>

</LinearLayout>

</LinearLayout>

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете автоматически воспроизводить видео в режиме просмотра с помощью следующей библиотеки:

https://github.com/Krupen/AutoplayVideos

README.md библиотеки дает подробное описание того, как его использовать.

Может быть, это поможет вашей проблеме.

...