导航抽屉非常滞后

时间:2018-06-13 13:11:15

标签: java android navigation-drawer

我试图打开导航抽屉,但抽屉太滞后了。不过我打开Goog​​le Play商店很正常。我怎样才能改善这个?

这是我的布局:

    <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 :(得分:0)

  

尝试更改导航抽屉中使用的图像(   报头)

     

或删除背景图片后,请参阅:

<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">

答案 1 :(得分:0)

我认为问题是同时2个操作正在运行。 1是关闭抽屉,2是片段交易。

如果您已经检查了Google Play商店或Gmail。单击导航抽屉菜单项时,首先要做的是通过将alpha设置为0来删除主屏幕中内容的可见性。然后在成功关闭抽屉后完成片段事务。

设置ActionBarDrawerToggle以侦听onDrawerClosed和onDrawerOpened回调。