ড্রয়ারের ওপেন এবং ক্লোজ ইভেন্ট শুনতে, আপনার DrawerLayout এ setDrawerListener()কল করুন এবং DrawerLayout.DrawerListener এর বাস্তবায়নে এটাকে পাস করুন। এই ইন্টারফেস ড্রয়ার ইভেন্টের জন্য কলব্যাক প্রদান করে যেমন onDrawerOpened()onDrawerClosed()।
কিন্তু যদি আপনার একটিভিটি action bar অন্তর্ভূক্ত করে, তাহলে DrawerLayout.DrawerListener বাস্তবায়নের পরিবর্তে আপনি ActionBarDrawerToggle ক্লাস সম্প্রসারিত করতে পারেন। ActionBarDrawerToggle টি DrawerLayout.DrawerListener বাস্তবায়ন করে, সুতরাং আপনি এখনও ঐ কলব্যাক ওভাররাইড করতে পারেন, কিন্তু এটা একশন বার আইকন এবং নেভিগেশন ড্রয়ারের মধ্যেকার যথাযথ মিথস্ক্রিয়া আচরণকে সহজতরও করে (পরবর্তী অধ্যায়ে আরও আলোচনা করা হবে)।
যেভাবে Navigation Drawer ডিজাইন গাইডে আলোচিত হয়েছে, আপনার সেভাবে একশন বারের কনটেন্ট পরিবর্তন করা উচিত যখন ড্রয়ার দৃশ্যমান হয়, যেমন টাইটেল পরিবর্তন করা এবং একশন আইটেম অপসারণ করা যা প্রধান কনটেন্টে প্রাসঙ্গিক। নিচের কোডটি আপনাকে দেখাবে কীভাবে আপনি ActionBarDrawerToggle ক্লাসের একটি ইনসটেন্স দিয়ে DrawerLayout.DrawerListener কলব্যাক পদ্ধতি ওভাররাইড করার মাধ্যমে এটা করতে পারবেন:
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
/* Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
}
পরবর্তী অধ্যায় ActionBarDrawerToggle কনস্ট্রাক্টর আরগুমেন্ট এবং একশন বার আইকন দিয়ে মিথস্ক্রিয় চালিত করতে এটাকে সেট আপ করতে প্রয়োজনীয় অন্য ধাপগুলোকে নিয়ে আলোচনা করে।