本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1562|回复: 0
打印 上一主题 下一主题

第Ⅱ期Android菜鸟饭团#Android学习#第十八课 活动笔记

[复制链接]
跳转到指定楼层
1#
发表于 2016-1-15 17:26:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiao_ming 于 2016-1-15 17:33 编辑

第Ⅱ期Android菜鸟饭团#Android学习#第十八课 活动笔记
经过以上的学习,我们能为我们的app添加一个抽屉,但是并没有什么用,原因就是我们还没有为它添加监听,并有点击事件。
1.当用户在抽屉列表中选择一个项时,系统在OnItemClickListener的onItemClick方法
在onItemClick方法中做什么取决于你如何实现你的应用程序结构。下面的例子演示选择每一个项都插入一个不同的Fragment到这个主要的文本视图。
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
selectItem(position);
}
}
/** Swaps fragments in the main content view */
private void selectItem(int position) {
// Create a new fragment and specify the planet to show based on position
Fragment fragment = new PlanetFragment();
Bundle args = new Bundle();
args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
fragment.setArguments(args);
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
        
2.监听打开或者关闭事件
        在你的DrawerLayout中调用setDrawerListener去监听抽屉的打开或者关闭事件。你可以实现DrawerLayout.DrawerListener.去达到以上操作的目的。该接口提供了抽屉事件的回调方法。
        然而,如果你的activity包括了action bar ,你可以集成ActionBarDrawerToggle类,而不是实现DrawerLayout.DrawerListener。ActionBarDrawerToggle实现了DrawerLayout.DrawerListener一边你仍然可以重写那些回调方法,但是这样有助于完善操作栏图标和导航抽屉的交互行为。
        正如导航抽屉设置指南中所讨论的,在抽屉是可见状态时,你应该修改action bar的内容,例如改变主要文本上下文的标题或者移除操作项。以下代码向你展示如何在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);
        }
}


每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。
Android菜鸟饭团南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
把你的个人信息和申请理由快快发送到android@chuang1.net,前来加入我们吧

ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表