4

В моем приложении я использую ViewPager с FragmentStatePagerAdapter для отображения 4 разных макетов. Макет 1, 3, 4 состоит из ListView, а второй макет содержит SurfaceView Camera. Теперь, когда я прокручиваю горизонтальную камеру на обоих краях, вы мерцаете.Camera SurfaceView мерцает в ожидании пейджера при прокрутке

Я ищу в Google и находим различные решения. например 1) предоставление минус маржа с помощью android: layout_gravity = "center". 2) viewPager.requestTransparentRegion (viewPager);

Здесь, в первом случае, он работает хорошо в первый раз, но при возвращении из резюме он разрезает справа, показывая черный прямоугольник.

также я также пробовал с разным родительским макетом, но тот же сценарий произошел , а также попытался дать маржу программно, но не смог найти решение.

Вот моя камера xml.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <SurfaceView 
     android:id="@+id/surface_view" 
     android:layout_width="match_parent" 
     android:layout_gravity="center" 
     android:layout_marginRight="-100dp" 
     android:layout_marginLeft="-100dp" 
     android:layout_height="match_parent" 
     android:visibility="visible" /> 

</LinearLayout> 

и вот мой адаптер фрагмента.

public class DashboardAdapter extends FragmentStatePagerAdapter { 

public DashboardAdapter(FragmentManager fm) { 
    super(fm); 
    fragmentList = new ArrayList<>(); 
    fragmentList.add(new InboxFragment()); 
    fragmentList.add(new CameraFragment()); 
    fragmentList.add(new ContactFragment()); 
    fragmentList.add(new AddFriendsFragmnet()); 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      return InboxFragment.newInstance(position); 
     case 1: 
      return CameraFragment.newInstance(position); 
     case 2: 
      return ContactFragment.newInstance(position); 
     case 3: 
      return AddFriendsFragmnet.newInstance(position); 
     default: 
      return CameraFragment.newInstance(position); 
    } 
} 

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

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    Fragment fragment = (Fragment) super.instantiateItem(container, position); 
    return fragment; 
} 


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

}

Любая помощь будет слишком много благодарен.

+0

Привет, наконец, после стольких вещей, я решил эту проблему, заменив SurfaceView на TextureView. Ниже ссылка помогает мне в «TextureView» с камерой. [Ссылка] (http://www.tutorialspoint.com/android/android_textureview.htm). Если какой-либо орган wnats, чем я могу поделиться миром фактического кода, который я использовал в своем проекте. – Neo

+0

Если вы нашли решение, не ждите, когда кто-то попросит вас, просто опубликуйте его как ответ и примите/отметьте его как ответ. Все в порядке, если вы сами придумаете решение. :) – Sufian

ответ

1

Я заменил SurfaceView на TextureView, чтобы открыть камеру.

Link

Вот ссылка на пример TextureView камеры. Теперь работает.

Благодаря