P
P
protectman2019-07-06 16:44:27
Android
protectman, 2019-07-06 16:44:27

Exoplayer disappears in vertical ViewPager when clicked, why?

When swiping a video in a vertical ViewPager, the Video in Exoplayer disappears at the moment of transition from one fragment to another. why is this happening?
Written VerticalView:

public class VerticalView extends ViewPager {
public VerticalView (@NonNull Context context)
{
    super(context);
}
public VerticalView(@NonNull Context context, @NonNull AttributeSet attrs)
{
    super(context,attrs);
    init();
}

private void init(){
    setPageTransformer(true, new Verticalpage());
    setOverScrollMode(OVER_SCROLL_NEVER);
}
private MotionEvent XY(MotionEvent ev)
{
    float width = getWidth();
    float height = getHeight();
    float newx = (ev.getY() / height) * width;
    float newy = (ev.getX() / width) * height;
    ev.setLocation(newx, newy);
    return ev;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    boolean inter = super.onInterceptTouchEvent(XY(ev));
    XY(ev);
    return inter;
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    return super.onTouchEvent(XY(ev));
}
private class Verticalpage implements ViewPager.PageTransformer{

    @Override
    public void transformPage(@NonNull View page, float position) {
        if(position<-1)
        {
            page.setAlpha(0);
        }
        else if ( position <= 1)
        {
            page.setAlpha(1);
            page.setTranslationX(page.getWidth() * - position);
            float Vpos = position * page.getHeight();
            page.setTranslationY(Vpos);
        }
        else
            page.setAlpha(0);
    }
}
}
Адаптер, который задает информацию в 1 фрагмент:

public class AdapterPages extends FragmentStatePagerAdapter {
private List<VideoClass> videoclass;
static int count = -1;
static int pos = -100;
private int countVideos = 0;
private static int bool = 0;
private static int[] array;
public AdapterPages(FragmentManager fm, List<VideoClass> videos)
{
    super(fm);
    this.videoclass = videos;
    this.countVideos = videos.size();
}

@NonNull
@Override
public Fragment getItem(int position) {


    if (position > pos)
        count++;
    else
        if (count > 0)
            count--;

    pos = position;
        String href = videoclass.get(count).getHref();
        String inst = videoclass.get(count).getName();
        String tag = videoclass.get(count).getTag();
        int id = videoclass.get(count).getId();
        int likes = videoclass.get(count).getLikes();
        return Fragmento.newInstance(href, inst, tag, likes,0, id);

}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return super.getPageTitle(position);
}

@Override
public int getCount() {
    return 9999999;
}

@Override
public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    super.setPrimaryItem(container, position, object);
}

@Override
public void finishUpdate(@NonNull ViewGroup container) {
    super.finishUpdate(container);
}

How I create ExoPlayer:
com.google.android.exoplayer2.ui.PlayerView Video = v.findViewById(R.id.video);
        player = ExoPlayerFactory.newSimpleInstance(v.getContext());
        Video.setPlayer(player);
        player.setVolume(0f);
        Player.EventListener listener = new Player.EventListener() {
            @Override
            public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                switch (playbackState) {

                    case ExoPlayer.STATE_READY:

                        double cx = ((double) Video.getWidth()) / 2;
                        double cy = ((double) Video.getHeight()) / 2;
                        float FinalRadius = (float) Math.hypot(cx, cy);
                        Animator anim = ViewAnimationUtils.createCircularReveal(Video, (int) cx, (int) cy, 0f, FinalRadius);
                        anim.start();
                        break;
                }
            }
        };
        player.addListener(listener);
        player.setRepeatMode(Player.REPEAT_MODE_ALL);
        player.setPlayWhenReady(true);
        player.seekTo(0, 100000);
        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(v.getContext(), Util.getUserAgent(v.getContext(), "jus"));
        MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(mNum));
        player.prepare(videoSource, true, true);
        player.getAnalyticsCollector();

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question