Instagram, как видео и изображение ViewPager - PullRequest
0 голосов
/ 05 марта 2020

Я создаю приложение точно так же, как instagram, и я хочу показывать изображения и видео в viewpager так же, как это делает instagram.

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

Вот так я показываю изображения для своих сообщений в viewpager.

public class PostImageViewAdapter extends PagerAdapter {

private Context context;
private ArrayList<String> strUrls;

public PostImageViewAdapter(ArrayList<String> strUrls, Context context) {
    this.strUrls = strUrls;
    this.context = context;
}

@Override
public int getCount() {
    return strUrls.size();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    return view == object;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView postImage = new ImageView(context);
    VideoView postVideo = new VideoView(context);
    Glide.with(context)
            .load(strUrls.get(position))
            .into(postImage);
    postImage.setScaleType(ImageView.ScaleType.FIT_XY);
    container.addView(postImage);
    return postImage;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

    container.removeView((View) object);
}

}

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

, пожалуйста, объясните мне, как этого добиться.

1 Ответ

0 голосов
/ 05 марта 2020

Использовать преобразователь страниц с пейджером просмотра

viewPager.setPageTransformer(false, CustomPageTransformer())

Вот код для класса CustomPageTransformer

public class CustomPageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(@NonNull View page, float position) {
        // Rotate the fragment on the left or right edge
        page.setPivotX( position < 0f ? page.getWidth() : 0f );
        page.setPivotY( page.getHeight() * 0.5f );
        page.setRotationY( 50f * position );
    }
}
...