Android layout 滚动时,摄像头表面视图在视图寻呼机中闪烁

Android layout 滚动时,摄像头表面视图在视图寻呼机中闪烁,android-layout,android-fragments,android-viewpager,fragmentpageradapter,fragmentstatepageradapter,Android Layout,Android Fragments,Android Viewpager,Fragmentpageradapter,Fragmentstatepageradapter,在我的应用程序中,我使用带有FragmentStatePagerAdapter的ViewPager来显示4种不同的布局。 布局1、3、4包含ListView,第二个布局包含SurfaceView摄像头。现在,当我水平滚动时,两边的相机都会闪烁 我在谷歌上搜索,找到不同的解决方案。喜欢 1) 使用android:layout_gravity=“center”给出负边距。 2) viewPager.requestTransparentRegion(viewPager) 在第一种情况下,它在第一次运行

在我的应用程序中,我使用带有FragmentStatePagerAdapter的ViewPager来显示4种不同的布局。 布局1、3、4包含ListView,第二个布局包含SurfaceView摄像头。现在,当我水平滚动时,两边的相机都会闪烁

我在谷歌上搜索,找到不同的解决方案。喜欢 1) 使用android:layout_gravity=“center”给出负边距。 2) viewPager.requestTransparentRegion(viewPager)

在第一种情况下,它在第一次运行时效果很好,但当从resume返回时,它从右侧剪切,显示黑色矩形

此外,我还尝试了不同的父布局,但场景相同 发生,并试图以编程方式提供余量,但找不到任何解决方案

这是我的相机

<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) {
}
公共类仪表板适配器扩展FragmentStatePagerAdapter{
公用仪表板适配器(FragmentManager fm){
超级(fm);
fragmentList=新的ArrayList();
添加(新的InboxFragment());
添加(新的CameraFragment());
添加(新的ContactFragment());
add(newaddFriendsFragmentList());
}
@凌驾
公共片段getItem(int位置){
开关(位置){
案例0:
返回InboxFragment.newInstance(位置);
案例1:
返回CameraFragment.newInstance(位置);
案例2:
返回ContactFragment.newInstance(位置);
案例3:
返回AddFriendsFragmnet.newInstance(位置);
违约:
返回CameraFragment.newInstance(位置);
}
}
@凌驾
public int getCount(){
返回4;
}
@凌驾
公共对象实例化项(视图组容器,int位置){
Fragment Fragment=(Fragment)super.instanceItem(容器,位置);
返回片段;
}
@凌驾
公共项(视图组容器、int位置、对象){
}
}


任何帮助都太感谢了。

我已将SurfaceView替换为TextureView以打开相机

下面是TextureView相机示例的链接。它正在工作


谢谢

Hi,经过这么多的努力,我终于解决了这个问题,用TextureView替换了SurfaceView。下面的链接帮助我在“TextureView”中使用相机。如果有人比我更愿意分享我在项目中使用的实际代码。如果你找到了解决方案,不要等到有人来问你,只需将其作为答案发布,并接受/标记为答案。如果你自己能想出一个解决方案,那也没关系。:)