0

i am new to android ,i using default navigation drawer in studio 1.4 ,my problem is when i change nav_header_main.xml file my navigavtion drawer was not moving smothly,after changing that xml i got warning in logo cat MAIN THREAD DOING SO MUCH OF WORK ,any one please help how to improve my navigation drawer performance and how to get smooth scrolling any one please help me.

when i use profile pic in nav_header_main.xml i am facing this problem without prfile pic it will scroll smooth here my error

 Skipped 42 frames!  The application may be doing too much work on its main thread.

MainActivity.class

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

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

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_camara) {
        // Handle the camera action
    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

}

nav_header_main.xml

android:layout_width="match_parent"
android:layout_height="190dp"
android:background="@drawable/bghdpi"
android:orientation="vertical"
>

<ImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/flag"

    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Comp. Sci. Tutorials"
    android:textSize="14sp"
    android:textColor="#FFF"
    android:textStyle="bold"
    android:gravity="center"
    android:paddingBottom="4dp"
    android:id="@+id/username"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_above="@+id/email"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="user@host.com"
    android:id="@+id/email"
    android:gravity="center"
    android:layout_marginBottom="8dp"
    android:textSize="14sp"
    android:textColor="#fff"
    android:layout_alignParentBottom="true"
    android:layout_alignLeft="@+id/username"
    android:layout_alignStart="@+id/username"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

chanti
  • 601
  • 2
  • 8
  • 17

1 Answers1

0

In your main thread start a new thread and let that do all the work. Main should only initialize your app, not perform any other logic.

SubliemeSiem
  • 1,129
  • 17
  • 25