1st would suggest creating a basic activity that will expand your ActionBarActivity.
2-activity_sliding_drawer main_container DrawerLayout: -
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:layout_gravity="bottom"
android:id="@+id/bottom_container"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_width="match_parent"
android:background="@color/white">
</FrameLayout>
</FrameLayout>
<fragment
android:id="@+id/slidingMenuFragment"
android:name="om.ooredoo.fragments.SlidingMenuFragment"
android:layout_width="@dimen/slidingmenu__parent_width"
android:layout_height="fill_parent"
android:layout_gravity="start" />
3- , 2 , , .. lockDrawerMenu() unlockDrawerMenu().
4 (AbstractActivity ): -
public abstract class AbstractActivity extends ActionBarActivity {
public DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private boolean bSupportActionBar = true;
private boolean mSlidingMenuLocked = false;
private BackPressListener mBackPressListener;
private String title;
boolean ismSlidingMenuLocked() {
return mSlidingMenuLocked;
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
requestWindowFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sliding_drawer);
if (bSupportActionBar) {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_navigation_drawer,
R.string.drawer_open,
R.string.drawer_close
) {
public void onDrawerClosed(View view) {
if (getSupportActionBar().getTitle().equals(getString(R.string.app_name)))
getSupportActionBar().setTitle(title);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
title = (String) getSupportActionBar().getTitle();
getSupportActionBar().setTitle(getString(R.string.app_name));
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
unlockDrawerMenu();
}
}
@Override
protected void onStart() {
super.onStart();
setSupportProgressBarIndeterminateVisibility(false);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
mHandler = null;
}
}
public void addNewFragmentWithBackStack(Fragment fragment) {
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragment, fragment.getClass().getSimpleName())
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
} else {
Log.e("AbstractActivity", "Error in creating fragment");
}
}
public void addNewFragmentWithBackStack(Fragment fragment, boolean animation) {
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_up_anim, 0);
fragmentTransaction.replace(R.id.frame_container, fragment, fragment.getClass().getSimpleName())
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
} else {
Log.e("AbstractActivity", "Error in creating fragment");
}
}
public void addNewBottomFragmentWithBackStack(Fragment fragment) {
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_up_anim, 0);
fragmentTransaction.replace(R.id.bottom_container, fragment)
.addToBackStack(fragment.getClass().getSimpleName())
.commit();
} else {
Log.e("AbstractActivity", "Error in creating fragment");
}
}
public void replaceAndClearBackStack(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.frame_container, fragment)
.addToBackStack(fragment.getClass().getSimpleName());
transaction.commit();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
if (bSupportActionBar)
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (bSupportActionBar)
mDrawerToggle.onConfigurationChanged(newConfig);
}
public void lockDrawerMenu() {
((DrawerLayout) findViewById(R.id.drawer_layout)).setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
if (bSupportActionBar) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerToggle.setDrawerIndicatorEnabled(false);
}
mSlidingMenuLocked = true;
}
public void unlockDrawerMenu() {
((DrawerLayout) findViewById(R.id.drawer_layout)).setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mSlidingMenuLocked = false;
mDrawerToggle.setDrawerIndicatorEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (!ismSlidingMenuLocked() && mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case android.R.id.home:
if (ismSlidingMenuLocked()) {
onBackPressed();
return true;
}
return true;
default: {
return super.onOptionsItemSelected(item);
}
}
}
public BackPressListener getBackPressListener() {
return mBackPressListener;
}
public void setBackPressListener(BackPressListener mBackPressListener) {
this.mBackPressListener = mBackPressListener;
}
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getFragments().size() > 0) {
for (Fragment frag : getSupportFragmentManager().getFragments()) {
if (frag != null && frag.isAdded() && frag instanceof AbstractParentFragment) {
if (frag.getChildFragmentManager().getBackStackEntryCount() > 0) {
frag.getChildFragmentManager().popBackStack();
return;
}
}
}
}
if (mBackPressListener != null) {
if (mBackPressListener.onBackPress())
return;
} else {
if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
this.finish();
return;
}
super.onBackPressed();
}
}
void supportActionBar(boolean support) {
bSupportActionBar = support;
}}
5 , , , .
, , , , .
, .!!!