我试图打开导航抽屉,但抽屉太滞后了。不过我打开Google 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;
}
}
有没有办法避免这种滞后?
答案 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回调。