Answer the question
In order to leave comments, you need to log in
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);
}
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 questionAsk a Question
731 491 924 answers to any question