Solusi saya: manfaatkan antarmuka snapshot baru dari GoogleMap dan tampilkan snapshot peta sambil menggulir halaman.
Berikut adalah kode saya untuk menyetel snapshot (ada di fragmen yang sama dengan peta, disebut FragmentMap.java):
public void setSnapshot(int visibility) {
switch(visibility) {
case View.GONE:
if(mapFragment.getView().getVisibility() == View.VISIBLE) {
getMap().snapshot(new SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap arg0) {
iv.setImageBitmap(arg0);
}
});
iv.setVisibility(View.VISIBLE);
mapFragment.getView().setVisibility(View.GONE);
}
break;
case View.VISIBLE:
if(mapFragment.getView().getVisibility() == View.GONE) {
mapFragment.getView().setVisibility(View.VISIBLE);
iv.setVisibility(View.GONE);
}
break;
}
}
Di mana "mapFragment" adalah SupportedMapFragment saya dan "iv" adalah ImageView (buat sesuai dengan match_parent).
Dan di sini saya mengontrol gulungan:
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position == 0 && positionOffsetPixels > 0 || position == 1 && positionOffsetPixels > 0) {
((FragmentMap)adapter.getRegisteredFragment(1)).setSnapshot(View.GONE);
} else if(position == 1 && positionOffsetPixels == 0) {
((FragmentMap)adapter.getRegisteredFragment(1)).setSnapshot(View.VISIBLE);
}
}
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageSelected(int arg0) {}
});
Fragmen saya dengan peta (FragmentMap) ada di posisi 1, jadi saya perlu mengontrol scroll dari posisi 0 ke 1 dan dari posisi 1 ke 2 (klausa if pertama). "getRegisteredFragment ()" adalah fungsi dalam FragmentPagerAdapter khusus saya, di mana saya memiliki SparseArray (Fragment) yang disebut "terdaftarFragments".
Jadi, setiap kali Anda menggulir ke atau dari peta Anda, Anda selalu melihat snapshotnya. Ini bekerja dengan sangat baik untuk saya.