android - элемента - при работе с сайтами 24 собственный блок можно добавить так:




Можно ли программно открыть макет ящика с анимацией? (2)

Я создал ящик приложения, используя следующую библиотеку: http://developer.android.com/training/implementing-navigation/nav-drawer.html

Я хочу показать Навигационный ящик с анимацией при открытии приложения. Как я могу это сделать?


Вы можете вызвать openDrawer(int gravity) для DrawerLayout чтобы он открыл ящик с анимацией.


Чтобы оживить открытие ящика, вам нужно позвонить по drawerLayout.openDrawer(Gravity.LEFT) . Ящик не будет анимирован, если вы сделаете вызов слишком рано в жизненном цикле Activity.

Самое простое решение - просто установить флаг в onCreate () и воздействовать на него в onResume ().

Вы хотите удостовериться, что устанавливаете флаг только тогда, когда saveInstanceState имеет значение NULL, указывая, что действие не возобновляется из фона. Вы не хотите выдвигать ящик каждый раз, когда вы меняете ориентацию или переключаете приложения.

public class MainActivity extends ActionBarActivity {
    private DrawerLayout drawerLayout;
    private boolean firstResume = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = (DrawerLayout)findViewById(R.id.drawer);

        if(savedInstanceState == null){
            firstResume = true;
        }
    }

    @Override
    protected void onResume() {
        super.onResume();

        if(firstResume) {
            drawerLayout.openDrawer(Gravity.LEFT);
        }

        firstResume = false;
    }
}

Вы также можете использовать OnPreDrawListener, но я чувствую, что это немного излишне сложно, так как onPreDraw вызывается несколько раз, поэтому вам нужно удалить слушателя после открытия ящика. Вы также предполагаете, что preDraw - подходящее время для активации ящика, который является внутренней реализацией макета ящика. Будущая реализация может не анимироваться должным образом до, например, после onDraw.

Задержка открытия ящика на произвольное количество миллисекунд является опасным способом решения этой проблемы. В худшем случае звонок на открытие ящика может произойти после onDestroy, если пользователь быстро уходит.





navigation-drawer