Search code examples
androidandroid-layoutandroid-sliding

Create A Slider Menu of ListView in Android


I have to create a slider menu .That when get clicked it opens a list view on the Left Side.On click of the list view item i want to open new activity .How can we do this in a simple .I am beginner so i just want to do this in a simple way.

I have searched on Google i got many examples but i am not able to get the idea how could i do this.

Please help to get a start and achieve this requirement .Thanks


Solution

  • Here is Your Complete Code.

    In the activity_main.xml

    <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" >
    
        <!-- The main content view -->
    
        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <!-- The navigation drawer -->
    
        <ListView
            android:id="@+id/drawer_list"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#111"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp" />
    
    </android.support.v4.widget.DrawerLayout>
    

    Then Create a drawer_list_item.xml

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:attr/activatedBackgroundIndicator"
        android:gravity="center_vertical"
        android:minHeight="?android:attr/listPreferredItemHeightSmall"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:textColor="#fff" />
    

    Then In the Main Activity

    public class MainActivity extends Activity {
    
        // Within which the entire activity is enclosed
        private DrawerLayout mDrawerLayout;
    
        // ListView represents Navigation Drawer
        private ListView mDrawerList;
    
        // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action bar
        private ActionBarDrawerToggle mDrawerToggle;
    
        // Title of the action bar
        private String mTitle = "";
    
        @SuppressLint("NewApi")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mTitle = "TEST";
            getActionBar().setTitle(mTitle);
    
            // Getting reference to the DrawerLayout
            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    
            mDrawerList = (ListView) findViewById(R.id.drawer_list);
    
            // Getting reference to the ActionBarDrawerToggle
            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                    R.drawable.ic_drawer, R.string.drawer_open,
                    R.string.drawer_close) {
    
                /** Called when drawer is closed */
                public void onDrawerClosed(View view) {
                    getActionBar().setTitle(mTitle);
                    invalidateOptionsMenu();
    
                }
    
                /** Called when a drawer is opened */
                public void onDrawerOpened(View drawerView) {
                    getActionBar().setTitle("JAVATECHIG.COM");
                    invalidateOptionsMenu();
                }
    
            };
    
            // Setting DrawerToggle on DrawerLayout
            mDrawerLayout.setDrawerListener(mDrawerToggle);
    
            // Creating an ArrayAdapter to add items to the listview mDrawerList
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
                    R.layout.drawer_list_item, getResources().getStringArray(R.array.menus));
    
            // Setting the adapter on mDrawerList
            mDrawerList.setAdapter(adapter);
    
            // Enabling Home button
            getActionBar().setHomeButtonEnabled(true);
    
            // Enabling Up navigation
            getActionBar().setDisplayHomeAsUpEnabled(true);
    
            // Setting item click listener for the listview mDrawerList
            mDrawerList.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
    
                    // Getting an array of rivers
                    String[] menuItems = getResources().getStringArray(R.array.menus);
    
                    // Currently selected river
                    mTitle = menuItems[position];
    
    
    
    
                    // Closing the drawer
                    mDrawerLayout.closeDrawer(mDrawerList);
    
                }
            });
        }
    
        protected String getUrl(int position) {
            switch (position) {
            case 0:
                return "";
            case 1:
                return "";
            case 2:
                return "";
            case 3:
                return "";
            case 4:
                return "";
            case 5:
                return "";
            case 6:
                return "";
            default:
                return "";
            }
        }
    
        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
            super.onPostCreate(savedInstanceState);
            mDrawerToggle.syncState();
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
        /** Called whenever we call invalidateOptionsMenu() */
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // If the drawer is open, hide action items related to the content view
            boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    
            menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
            return super.onPrepareOptionsMenu(menu);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }
    

    This is best and simple way to create a Slider Menu