I created the app drawer by using the following library: http://developer.android.com/training/implementing-navigation/nav-drawer.html
I want to show the Navigation
You need to call drawerLayout.openDrawer(Gravity.LEFT) to animate the drawer opening. The drawer won't animate if you make the call too early in the Activity lifecycle.
The simplest solution is to just set a flag in onCreate() and act on it in onResume().
You want to make sure that you only set the flag when savedInstanceState is null indicating that the Activity isn't being resumed from the background. You don't want the drawer sliding out every time you change orientation or switch applications.
public class MainActivity extends ActionBarActivity {
private DrawerLayout drawerLayout;
private boolean firstResume = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = (DrawerLayout)findViewById(R.id.drawer);
if(savedInstanceState == null){
firstResume = true;
}
}
@Override
protected void onResume() {
super.onResume();
if(firstResume) {
drawerLayout.openDrawer(Gravity.LEFT);
}
firstResume = false;
}
}
You could also use an OnPreDrawListener but I feel it's a bit unnecessarily complicated as onPreDraw is called multiple times so you need to remove the listener after opening the drawer. You're also assuming that preDraw is a suitable time to activate the drawer which is an internal implementation of the drawer layout. A future implementation might not animate properly until after onDraw for example.
Delaying the drawer opening by an arbitrary number of milliseconds is a dangerous way to solve this problem. In the worst case the call to open the drawer could happen after onDestroy if the user navigates away quickly.