What we will do ?
-> We will prepare a navigation drawer with a list. The list activity will display a toast on the other fragment.
What we need ?
- Emulator with Android 4 and above
- v5 Updated SDK.
Step 1 : Make a new Android application. Click on File->New->Android Application Project.
Step 2 : Give a name to your Application as NavigateDemo and package name as com.mia.navigatedemo
Then click Next continuously and at last click Finish.
Step 3 : Click on File->Import.
Step 4 : Then choose Android->Existing Android Code into Workspace
Step 5 : Click on Browse and go to the location shown below in adt folder.
adt-bundle-windows-x86-20140702\sdk\extras\android\support\v7\appcompat
Note - This location may vary from machine to machine.
Step 6 : Right click on NavigateDemo from Project Explorer and select Properties.
Select Android from left side. Click on Add and add appcombat_v7 as shown below.
Step 7 : Open activity_main.xml from res->layout folder in NavigateDemo. Copy the code below in it.
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/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start"< android:choiceMode="singleChoice" android:divider="#666" android:dividerHeight="1dp" android:background="#333" android:paddingLeft="15sp" android:paddingRight="15sp" /> </android.support.v4.widget.DrawerLayout>
Step 8 : Create a new xml file under layout and name it as drawer_listview_item.xml
drawer_listview_item.xml
strings.xml
<?xml version="1.0" encoding="utf-8"?> <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:textColor="#fff" android:textSize="20sp" android:gravity="center_vertical" android:paddingStart="14.5sp" android:paddingEnd="14.5sp" android:minHeight="35sp" />Step 9 : Under strings.xml from res->values add the code shown below.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">App</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string-array name="items"> <item>Item 1</item> <item>Item 2</item> <item>Item 3</item> <item>Item 4</item> <item>Item 5</item> <item>Item 6</item> </string-array> <string name="drawer_open">Open navigation drawer</string> <string name="drawer_close">Close navigation drawer</string> </resources>
Step 10 : Open MainActivity.java from src->com.mia.navigatedemo and add the code below.
MainActivity.java
package com.mia.navigatedemo;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.Configuration;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private String[] drawerListViewItems;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private ActionBarDrawerToggle actionBarDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// get list items from strings.xml
drawerListViewItems = getResources().getStringArray(R.array.items);
// get ListView defined in activity_main.xml
drawerListView = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
drawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_listview_item, drawerListViewItems));
// App Icon
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// create ActionBarDrawerToggle
actionBarDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);
//Set actionBarDrawerToggle as the DrawerListener
drawerLayout.setDrawerListener(actionBarDrawerToggle);
//enable and show "up" arrow
getActionBar().setDisplayHomeAsUpEnabled(true);
// just styling option
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
drawerListView.setOnItemClickListener(new DrawerItemClickListener());
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
actionBarDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
actionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// call ActionBarDrawerToggle.onOptionsItemSelected(), if it returns true
// then it has handled the app icon touch event
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, ((TextView)view).getText(), Toast.LENGTH_LONG).show();
drawerLayout.closeDrawer(drawerListView);
}
}
}
Step 11 : Change the minSdkVersion in NavigateDemoManifest.xml
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="21" />
Step 12 : Run the Application. Choose emulator of version 4 or above
Explanation of the code :
Explanation from activity_main.xml:
- We have defined a FrameLayout and a ListView inside Drawer layout. The FrameLayout is from the right side and listview for left side.
- This is to define element of a list. We have considered a TextView here. You can experiment to add an icon before it, also a sub-item for the list.
- The explanation of the code is mentioned in the comments.
Stay Tuned with Made In Android
















No comments:
Post a Comment