package com.novoda.activitytalkbackinvestigation; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.annotation.LayoutRes; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; public abstract class ProHaxDrawerActivity extends AppCompatActivity { private static final String EXTRA_INTERNAL_NAV = BuildConfig.APPLICATION_ID + "EXTRA_INTERNAL_NAV"; private DrawerLayout drawerLayout; @Override public void setContentView(@LayoutRes int layoutResID) { super.setContentView(R.layout.drawer_layout); ViewGroup contentView = (ViewGroup) findViewById(R.id.content_frame); getLayoutInflater().inflate(layoutResID, contentView); setupDrawer(); if (getIntent().getExtras() != null && getIntent().getExtras().containsKey(EXTRA_INTERNAL_NAV)) { drawerLayout.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); drawerLayout.openDrawer(GravityCompat.START); } } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (drawerLayout.isDrawerOpen(GravityCompat.START)) { new Handler(getMainLooper()).postDelayed(new Runnable() { @Override public void run() { drawerLayout.closeDrawer(GravityCompat.START); drawerLayout.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } }, 1000); } } private void setupDrawer() { ListView listView = (ListView) findViewById(R.id.left_drawer); listView.setAdapter(createDrawerAdapter(this)); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); listView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { startActivity(createIntentForItem(position, ProHaxDrawerActivity.this)); overridePendingTransition(0, 0); new Handler(getMainLooper()).postDelayed(new Runnable() { @Override public void run() { drawerLayout.closeDrawer(GravityCompat.START); } }, 500); } } ); ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close); drawerLayout.setDrawerListener(drawerToggle); } private static ListAdapter createDrawerAdapter(Context context) { return new ArrayAdapter<>( context, android.R.layout.simple_list_item_1, new String[]{"Earth", "Saturn"} ); } private static Intent createIntentForItem(int itemPosition, Context context) { Intent intent; if (itemPosition == 0) { intent = new Intent(context, EarthActivity.class); } else { intent = new Intent(context, SaturnActivity.class); } intent.putExtra(EXTRA_INTERNAL_NAV, true); return intent; } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawers(); } else { super.onBackPressed(); } } }