Вопрос по dynamically-generated, videoview, android, android-viewpager – Как отобразить видео в VideoView в центре экрана?

1

Я создаюViewPager с двумяVideoViews, На скользящих страницах начинает воспроизводиться видео на текущей странице. Одна проблема: как отобразить видео в VideoView в центре экрана?

Вот мой код,

MainActivity.java:
public class MainActivity extends Activity{

    private class MyViewPagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener
    {
         private Vector pages;         
         private ViewGroup myContainer;
         private int currentPageId;
         private boolean flag;

         public MyViewPagerAdapter(Context context, Vector pages) 
         {
             this.pages=pages;
         }

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

         @Override
         public Object instantiateItem(ViewGroup container, int position)
         {
             flag = true;
             currentPageId = 0;
             int positionNow = myPager.getCurrentItem();

             View page = pages.get(position);
             container.addView(page);
             myContainer = container;

             if(positionNow == position)
                StartVideo(container, positionNow);

             return page;
         }

         @Override
         public void destroyItem(ViewGroup container, int position, Object object)
         {
             container.removeView((View) object);
             myContainer = container;
         }

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

        @Override
        public void onPageScrollStateChanged(int arg0) 
        {
            if(flag)
            {
                MyVideoView currVideo = (MyVideoView) myContainer.getChildAt(currentPageId+1);
                if(currVideo != null)
                    if(currVideo.getVideoPath() != null)
                        currVideo.pause();
            }
            else
                flag = !flag;
        }

        @Override
        public void onPageSelected(int arg0) 
        {
            flag = false;
            currentPageId = myPager.getCurrentItem();
            StartVideo(myContainer, myPager.getCurrentItem());
        }

        private void StartVideo(ViewGroup container, int position)
        {
            View page = container.getChildAt(position+1);
            MyVideoView curVideo = (MyVideoView) page;
            Log.d("Andrew", curVideo.getVideoPath());
            curVideo.start();
        }
    }

    private ViewPager myPager;
    private MyViewPagerAdapter myAdapter;
    private Vector pages;
    private MyVideoView myVideoView;
    int currentPage, previousPage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pages = new Vector();

        for(int i=1; i 
Поблагодарить's для ссылок. В моем случае это родитель VideoView - ViewGroup, а не Relative или Linear Layouts. Andrew
Просто передайте это. это мало полезно .. [введите описание ссылки здесь] [1] [введите описание ссылки здесь] [2] [1]:stackoverflow.com/questions/12211837/...    [2]:stackoverflow.com/questions/8471618/... harikrishnan
Я установил LayoutParams в контейнер, но никакой реакции.@Override public Object instantiateItem(ViewGroup container, int position) { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.CENTER_HORIZONTAL, 1); params.addRule(RelativeLayout.CENTER_IN_PARENT, 1); params.addRule(RelativeLayout.CENTER_VERTICAL, 1); container.setLayoutParams(params); .... return page; } Andrew
Попробуйте установить ViewGroup в центр View. Как мы делаем в XML. View.centerInParent = true; попробуй что-нибудь подобное Umer Abid

Ваш Ответ

1   ответ
0

возможно, кто-то еще борется с ним, так как у меня была такая же проблема. Я решил это, изменив

 android:layout_centerInParent="true"
 android:layout_centerVertical="true"
 android:layout_centerHorizontal="true"

в

 android:layout_gravity="center"

в XML для VideoView я использовал для заполнения ViewPager.

Похожие вопросы