导航抽屉非常滞后
Navigation Drawer very lag
我正在尝试打开导航抽屉,但抽屉太滞后了。不过我开Googleplay商店是正常的。我该如何改进?
这是我的布局:
<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;
}
}
有没有办法避免这种延迟?
try to change the images which you used in navigation drawer (in
header)
or once remove background image then see :
<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">
我认为问题是同时有 2 个操作在工作。 1是关闭抽屉,2是片段事务。
如果您检查了 google Play 商店或 Gmail。当您单击导航抽屉菜单项时,首先起作用的是通过将 alpha 设置为 0 来移除主屏幕中内容的可见性。然后在成功关闭抽屉后完成片段事务。
您将 ActionBarDrawerToggle 设置为监听 onDrawerClosed 和 onDrawerOpened 回调。
我正在尝试打开导航抽屉,但抽屉太滞后了。不过我开Googleplay商店是正常的。我该如何改进?
这是我的布局:
<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;
}
}
有没有办法避免这种延迟?
try to change the images which you used in navigation drawer (in header)
or once remove background image then see :
<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">
我认为问题是同时有 2 个操作在工作。 1是关闭抽屉,2是片段事务。
如果您检查了 google Play 商店或 Gmail。当您单击导航抽屉菜单项时,首先起作用的是通过将 alpha 设置为 0 来移除主屏幕中内容的可见性。然后在成功关闭抽屉后完成片段事务。
您将 ActionBarDrawerToggle 设置为监听 onDrawerClosed 和 onDrawerOpened 回调。