Навигационный ящик очень запаздывает - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь открыть Навигационный ящик, но ящик слишком запаздывает.Однако я открываю Google Play Store нормально.Как я могу улучшить это?

Это мой макет:

    <LinearLayout
        android:background="@drawable/hhome1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </FrameLayout>

    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        app:headerLayout="@layout/header"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/drawermunu"
        android:layout_gravity="start">

    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

Это мой код, я думаю, что это вызывает задержку в этой части

    public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

    private DrawerLayout mDrawerlayout;
    private ActionBarDrawerToggle mToggle;
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDrawerlayout = (DrawerLayout) findViewById(R.id.drawer);
    mToggle = new ActionBarDrawerToggle(this,mDrawerlayout,R.string.open,R.string.close);
    mDrawerlayout.addDrawerListener(mToggle);
    mToggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

Я пыталсяупростить это getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFrament()).commit();, но я не знаю, почему это не работает

public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        if (mDrawerlayout.isDrawerOpen(GravityCompat.START)) {
            mDrawerlayout.closeDrawers();
        }
        switch (item.getItemId()){
        case R.id.nav_home:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new HomeFrament()).commit();
            break;
        case R.id.nav_control:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new ControlFrament()).commit();
            break;
        case R.id.nav_settings:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new SettingsFrament()).commit();
            break;
        case R.id.nav_tandh:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new TandHFrament()).commit();
            break;
        case R.id.nav_logout:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new LogoutFrament()).commit();
            break;
    }

}

Есть ли способ избежать этого лага?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я думаю, что проблема одновременно 2 операции работают.1 закрывает ящик, а 2 - фрагмент транзакции.

Если вы проверили Google Play Store или Gmail.Когда вы щелкаете по элементу меню ящика навигации, первое, что нужно сделать, - это удалить видимость содержимого на главном экране, установив альфа на 0. После успешного закрытия ящика выполняется транзакция фрагмента.

Вы настраиваетеActionBarDrawerToggle для прослушивания обратных вызовов onDrawerClosed и onDrawerOpened.

0 голосов
/ 13 июня 2018

попробуйте изменить изображения, которые вы использовали в навигационном ящике (в заголовке)

или один раз удалить фоновое изображение, затем посмотрите:

<LinearLayout
        android:background="@drawable/hhome1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

на

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
...