欢迎转载,转载请注明出处
这里我就不啰里巴嗦了,这个写法是我昨天看到的,感觉非常有用,这里给大家分享下:
直接上源码:
首先是主布局:
代码语言:javascript复制
这里我们可以看到,我引用了:"@layout/include_list_viewpager" 和 "@menu/drawer_view" 两个文件,第一个是主活动布局,第二个是侧拉框栏目,现在给出他们的实现,首先是主活动(我这里给空的,你们根据自己需要添加控件):
代码语言:javascript复制
然后是侧拉框的栏目:
代码语言:javascript复制
ok,那现在来看主活动,用 Runnable 绑定侧拉框各项,再用 Handle 实时监听,关于 Constants 是一个由于放字符串(可理解为 id )的静态类:
代码语言:javascript复制public class MainActivity extends AppCompatActivity {
private NavigationView navigationView;
private Map navigationMap = new HashMap();
private Handler navDrawerRunnable = new Handler();
private Runnable runnable;
private DrawerLayout mDrawerLayout;
private Runnable navigateLibrary = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Library",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigatePlaylist = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Playlist",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateFolder = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Folder",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateQueue = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Queue",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateAlbum = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Album",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateArtist = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Artist",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateLyrics = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Lyrics",Toast.LENGTH_SHORT).show();
}
};
private Runnable navigateNowplaying = new Runnable() {
public void run() {
Toast.makeText(MainActivity.this,"Nowplaying",Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navigationMap.put(Constants.NAVIGATE_LIBRARY, navigateLibrary);
navigationMap.put(Constants.NAVIGATE_PLAYLIST, navigatePlaylist);
navigationMap.put(Constants.NAVIGATE_QUEUE, navigateQueue);
navigationMap.put(Constants.NAVIGATE_NOWPLAYING, navigateNowplaying);
navigationMap.put(Constants.NAVIGATE_ALBUM, navigateAlbum);
navigationMap.put(Constants.NAVIGATE_ARTIST, navigateArtist);
navigationMap.put(Constants.NAVIGATE_LYRICS, navigateLyrics);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.nav_view);
View header = navigationView.inflateHeaderView(R.layout.nav_header);
navDrawerRunnable.postDelayed(new Runnable() {
@Override
public void run() {
setupDrawerContent(navigationView);
}
}, 700);
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
updatePosition(menuItem);
return true;
}
});
}
private void updatePosition(final MenuItem menuItem) {
runnable = null;
switch (menuItem.getItemId()) {
case R.id.nav_library:
runnable = navigateLibrary;
break;
case R.id.nav_playlists:
runnable = navigatePlaylist;
break;
case R.id.nav_folders:
runnable = navigateFolder;
break;
case R.id.nav_nowplaying:
break;
case R.id.nav_queue:
runnable = navigateQueue;
break;
case R.id.nav_settings:
runnable = navigateAlbum;
break;
case R.id.nav_about:
runnable = navigateArtist;
break;
case R.id.nav_donate:
runnable = navigateLyrics;
break;
}
if (runnable != null) {
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
runnable.run();
}
}, 350);
}
}
}
ok,顺便来一波 Constants 类:
代码语言:javascript复制public class Constants {
public static final String NAVIGATE_LIBRARY = "navigate_library";
public static final String NAVIGATE_PLAYLIST = "navigate_playlist";
public static final String NAVIGATE_QUEUE = "navigate_queue";
public static final String NAVIGATE_ALBUM = "navigate_album";
public static final String NAVIGATE_ARTIST = "navigate_artist";
public static final String NAVIGATE_NOWPLAYING = "navigate_nowplaying";
public static final String NAVIGATE_LYRICS = "navigate_lyrics";
}
这里可能需要一些依赖比如:NavigationView 需要添加:
代码语言:javascript复制implementation 'com.android.support:design:28.0.0'
其他依赖我救不一一给出了,大家根据需要自行百度 ~
【如果本文对您有帮助,欢迎关注我获得跟多资讯】