วิธีแก้ปัญหาของฉัน: ใช้ประโยชน์จากอินเทอร์เฟซภาพรวมใหม่จาก GoogleMapและแสดงภาพรวมของแผนที่ขณะเลื่อนหน้า
นี่คือรหัสของฉันในการตั้งค่า snapshot (อยู่ในส่วนเดียวกับแผนที่เรียกว่า 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;
}
}
โดยที่ "mapFragment" คือ SupportedMapFragment ของฉันและ "iv" คือ ImageView (ทำให้เป็นแบบ match_parent)
และที่นี่ฉันกำลังควบคุมการเลื่อน:
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) {}
});
ส่วนของฉันที่มีแผนที่ (FragmentMap) อยู่ในตำแหน่งที่ 1 ดังนั้นฉันจำเป็นต้องควบคุมการเลื่อนจากตำแหน่ง 0 ถึง 1 และจากตำแหน่ง 1 ถึง 2 (if-clause แรก) "getRegisteredFragment ()" เป็นฟังก์ชันใน FragmentPagerAdapter แบบกำหนดเองของฉันซึ่งฉันมี SparseArray (Fragment) ที่เรียกว่า "registerFragments"
ดังนั้นเมื่อใดก็ตามที่คุณเลื่อนไปมาหรือจากแผนที่คุณจะเห็นภาพรวมของแผนที่นั้นเสมอ สิ่งนี้ได้ผลดีสำหรับฉัน