我有一個奇怪的問題。查看Android中的viewpager和tablayout片段中的可見性檢查
中安裝有一個TabLayout
取得ViewPager
我有4 Fragment
秒。第一個是QR碼掃描儀,顯示一個攝像頭。我只想在Fragment
可見時才啓動相機。爲此,我重寫Fragment
的方法setUserVisibleHint
。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
checkPermissionForCamera(); //it checks permission and start camera
} else {
stopCamera();
}
}
而且它工作得很好。
期望
現在,我要實現的是,當Fragment
是不可見的(或正在滾動顯示),這表明與背景在相機的視圖,以便不用相機,那封面是可見的。像下面的圖片。
對於它,我編輯startCamera
和stopCamera
,現在它看起來像下面,
public void startCamera() {
if(cameraCover != null)
cameraCover.setVisibility(View.GONE);
isCameraStarted = true;
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera();
}
public void stopCamera() {
if(cameraCover != null)
cameraCover.setVisibility(View.VISIBLE);
if(mScannerView != null) {
isCameraStarted = false;
mScannerView.stopCamera();// Stop camera on pause
mScannerView.stopCameraPreview();// Stop camera preview
}
}
但灰色的蓋子是隻在第一次看到,休息的時候,我得到了相機以其滾動的視圖打開,如下所示。
我也試着重寫的OnPageChangeListener
onPageScrolled
,但沒有運氣。這是我所做的。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position == 0) {
if(positionOffset > 0.7) {
fragment = adapter.getItemAtPosition(0); //fragment is at zero
if(fragment != null) {
if(fragment instanceof ScanQRFragment) {
((ScanQRFragment) fragment).stopCamera();
}
}
}
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
,我想我也有過類似的問題,我的解決方案是在轉換時使用一些頁面變壓器 – nkoroi
您會詳細介紹一下嗎? –
即使用ViewPager.PageTransformer – nkoroi