2014-07-21 112 views
2

我想在导航折叠式抽屉上共享演示。我该怎么做?示例导航折叠式抽屉

我遇到过一些真正有害的问题,哪里没有好的信息可用,或者好信息被埋没在恶劣信息的海洋中。

回答

0

您必须下载折叠布局库。

import android.annotation.SuppressLint; 
import android.content.res.Configuration; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.MenuItemCompat; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Spinner; 

import com.ptr.folding.FoldingDrawerLayout; 

public class DemoActivity extends ActionBarActivity { 

    private FoldingDrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 

    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 
    private String[] mAnimalTitles; 

    private ItemSelectedListener mItemSelectedListener; 

    static final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_drawer); 

     mTitle = mDrawerTitle = getTitle(); 
     mAnimalTitles = getResources().getStringArray(R.array.planets_array); 
     mDrawerLayout = (FoldingDrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 

     // mFoldLayout = (FoldingNavigationLayout)findViewById(R.id.fold_view); 
     // mFoldLayout.setBackgroundColor(Color.BLACK); 

     // set a custom shadow that overlays the main content when the drawer 
     // opens 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
     // set up the drawer's list view with items and click listener 
     mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mAnimalTitles)); 
     mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

     mItemSelectedListener = new ItemSelectedListener(); 

     // enable ActionBar app icon to behave as action to toggle nav drawer 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     // ActionBarDrawerToggle ties together the the proper interactions 
     // between the sliding drawer and the action bar app icon 
     mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */ 
     mDrawerLayout, /* DrawerLayout object */ 
     R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
     R.string.drawer_open, /* "open drawer" description for accessibility */ 
     R.string.drawer_close /* "close drawer" description for accessibility */ 
     ) { 

      @SuppressLint("NewApi") 
      public void onDrawerClosed(View view) { 
       getSupportActionBar().setTitle(mTitle); 
       if (IS_HONEYCOMB) { 
        invalidateOptionsMenu(); // creates call to 
        // onPrepareOptionsMenu() 
       } 

      } 

      public void onDrawerSlide(View drawerView, float slideOffset) { 

      } 

      @SuppressLint("NewApi") 
      public void onDrawerOpened(View drawerView) { 
       getSupportActionBar().setTitle(mDrawerTitle); 
       if (IS_HONEYCOMB) { 
        invalidateOptionsMenu(); // creates call to 
        // onPrepareOptionsMenu() 
       } 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     if (savedInstanceState == null) { 
      selectItem(0); 
     } 
    } 


    /* Called whenever we call invalidateOptionsMenu() */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // The action bar home/up action should open or close the drawer. 
     // ActionBarDrawerToggle will take care of this. 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     else { 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    /* The click listner for ListView in the navigation drawer */ 
    private class DrawerItemClickListener implements ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selectItem(position); 
     } 
    } 

    private void selectItem(int position) { 
     // update the main content by replacing fragments 
     Fragment fragment = new AnimalFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(AnimalFragment.ARG_ANIMAL_NUMBER, position); 
     fragment.setArguments(args); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 

     // update selected item and title, then close the drawer 
     mDrawerList.setItemChecked(position, true); 
     setTitle(mAnimalTitles[position]); 
     mDrawerLayout.closeDrawer(mDrawerList); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getSupportActionBar().setTitle(mTitle); 
    } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration config) { 
     super.onConfigurationChanged(config); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(config); 
    } 

    /** 
    * Listens for selection events of the spinner located on the action bar. 
    * Every time a new value is selected, the number of folds in the folding 
    * view is updated and is also restored to a default unfolded state. 
    */ 
    private class ItemSelectedListener implements OnItemSelectedListener { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      int mNumberOfFolds = Integer.parseInt(parent.getItemAtPosition(pos).toString()); 

      mDrawerLayout.getFoldingLayout(mDrawerList).setNumberOfFolds(mNumberOfFolds); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    } 
} 

这里有一个屏幕截图:

enter image description here