我目前正在努力用DrawerLayout
動畫做怪異的東西; 漢堡包圖標是laggy,並且如果我沒有讓Handler延遲fragment
交易動畫,它通常會從沒有動畫的漢堡包切換到箭頭。正確處理DrawerLayout動畫,同時瀏覽片段
所以我結束了一個處理程序,直到漢堡包圖標執行動畫,但是我們不需要等到抽屜靠近切換片段時才感到不自然。我敢肯定有一個更好的辦法來處理這個......
這裏是我目前如何:
private void selectProfilFragment() {
final BackHandledFragment fragment;
// TODO test this again
Bundle bundle = new Bundle();
bundle.putString(FragmentUserProfile.USER_FIRST_NAME, user.getFirstname());
bundle.putString(FragmentUserProfile.USER_LAST_NAME, user.getLastname());
bundle.putString(FragmentUserProfile.USER_PICTURE, user.getProfilepic());
bundle.putString(FragmentUserProfile.USER_EMAIL, user.getEmail());
bundle.putBoolean(FragmentUserProfile.USER_SECURITY, user.getParameters().getSecuritymodule().equals("YES"));
fragment = new FragmentUserProfile();
fragment.setArguments(bundle);
mDrawerLayout.closeDrawer(mDrawerLinear);
new Handler().postDelayed(new Runnable() {
public void run() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.pull_in_right, R.anim.push_out_left, R.anim.pull_in_left, R.anim.push_out_right);
ft.replace(R.id.content_frame, fragment)
.addToBackStack(fragment.getTagText())
.commitAllowingStateLoss();
}
}, 300);
}
它仍然毛刺在DrawerLayout
關閉和打開之間的一點點片段交易動畫。
這裏是我如何實例化抽屜:
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerListChild.setAdapter(new DrawerListAdapter(this, R.layout.drawer_layout_item, mPlanTitles));
mDrawerListChild.setOnItemClickListener(new DrawerItemClickListener());
mProfilPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectProfilFragment();
}
});
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
toolbar,
R.string.drawer_open,
R.string.drawer_close
) {
public void onDrawerClosed(View view) {
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
}
};
getSupportFragmentManager().addOnBackStackChangedListener(mOnBackStackChangedListener);
mDrawerLayout.setDrawerListener(mDrawerToggle);
setSupportActionBar(toolbar);
我猜想BackHandledFragment的初始化有大量的處理。 改變BackHandledFragment's'onCreateView'和'onActivityCreated'簡單,並且延遲重處理。 – nshmura
這不是問題,但因爲它只發生在配置文件片段... – Jaythaking
對不起,我犯了一個錯誤。 FragmentUserProfile的初始化是否有重要的檢索? – nshmura