我正在使用Peter Doyle的 Android的支持-V4-谷歌地图 支持库,用于实现同时使用Fragments和Google Maps的Activity,并且似乎无法使FragmentTransaction动画生效。我试过用过 setCustomAnimations(int enter, int exit)
方法以及 setTransition(int transit)
方法但无济于事。任何人都可以获得动画工作,或者在制作动画时遇到问题?
我试过的一些动画:
setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)
你应该打电话 FragmentTransaction。setCustomAnimations
你有没有尝试过 FragmentTransaction.remove() 接着 FragmentTransaction.add(), 代替 FragmentTransaction.replace()?我在其他线程中看到过抱怨 replace()
没有按预期工作。
我还没用过 Android的支持-V4-谷歌地图 库,但我可以确认下面的代码适用 android-support-v4.jar
:
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
tx.replace(R.id.fragment_container, new Fragment2());
tx.addToBackStack(null);
tx.commit();
尝试制作谷歌地图的快照:
private void snapShot() {
SnapshotReadyCallback callback = new SnapshotReadyCallback() {
Bitmap bitmap;
@Override
public void onSnapshotReady(Bitmap snapshot) {
// TODO Auto-generated method stub
bitmap = snapshot;
try {
FileOutputStream out = new FileOutputStream(getActivity()
.getFilesDir() + "/MapSnapshot.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};
map.snapshot(callback);
}
制作一个只有地图图片的新片段。使用replace加载此新片段,然后对要替换的片段进行转换:
final SnapShotFragment snapFrag = new SnapShotFragment();
FragmentTransaction事务= getFragmentManager()
.beginTransaction();
transaction.replace(MapFragment.this.getId(),
snapFrag);
transaction.addToBackStack(null);
transaction.commit();
getFragmentManager().executePendingTransactions();
final boolean roi = isInROI;
WayPointDetailActivity waypointFrag = new WayPointDetailActivity();
waypointFrag.setWayPointId(wp.getId());
waypointFrag.setInRoi(roi);
transaction = getFragmentManager()
.beginTransaction();
transaction.setCustomAnimations(R.anim.enter,
R.anim.exit);
transaction.replace(snapFrag.getId(), waypointFrag);
transaction.addToBackStack(null);
transaction.commit();