我使用以下库创建了应用程序抽屉: http://developer.android.com/training/implementing-navigation/nav-drawer.html
我想在打开应用程序时显示带有动画的抽屉导航。 我该怎么做?
最佳答案
预绘制监听器,也就是安全通道
这是预绘制监听器示例。它会尽快开始动画,这可能有点太快了。您可能希望将此与第二个显示的可运行文件结合起来。我不会将两者结合起来,只会分开显示。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Building NavDrawer logic here. Just a method call would be best.
...
ViewTreeObserver vto = drawer.getViewTreeObserver();
if (vto != null) vto.addOnPreDrawListener(new ShouldShowListener(drawer));
}
private static class ShouldShowListener implements OnPreDrawListener {
private final DrawerLayout drawerLayout;
private ShouldShowListener(DrawerLayout drawerLayout) {
this.drawerLayout= drawerLayout;
}
@Override
public boolean onPreDraw() {
if (view != null) {
ViewTreeObserver vto = view.getViewTreeObserver();
if (vto != null) {
vto.removeOnPreDrawListener(this);
}
}
drawerLayout.openDrawer(Gravity.LEFT);
return true;
}
}
PostDelay Runnable,又名生活危险
// Delay is in milliseconds
static final int DRAWER_DELAY = 200;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Building NavDrawer logic here. Just a method call would be best.
...
new Handler().postDelayed(openDrawerRunnable(), DRAWER_DELAY);
}
private Runnable openDrawerRunnable() {
return new Runnable() {
@Override
public void run() {
drawerLayout.openDrawer(Gravity.LEFT);
}
}
}
警告
如果他们第一次在应用程序启动时轮换BOOM!阅读这篇博文了解更多信息http://corner.squareup.com/2013/12/android-main-thread-2.html .最好的办法是使用预绘制监听器或在 onPause 中删除您的可运行文件。
关于android - 我可以以编程方式打开带有动画的抽屉布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070831/