package me.xiaopan.android.examples.activity.widget; import java.util.Locale; import me.xiaopan.android.examples.MyBaseFragmentActivity; import me.xiaopan.android.examples.R; import me.xiaopan.android.examples.adapter.StringAdapter; import android.app.Fragment; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; import android.widget.ListView; /** * 滑动抽屉 */ public class DrawerLayoutActivity extends MyBaseFragmentActivity { private DrawerLayout drawerLayout; private ListView leftListView; private int position = -1; @Override public void onInitLayout(Bundle savedInstanceState) { setContentView(R.layout.activity_drawer_layout); drawerLayout = (DrawerLayout) findViewById(R.id.drawer); leftListView = (ListView) findViewById(android.R.id.list); } @Override public void onInitListener(Bundle savedInstanceState) { leftListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } }); drawerLayout.setDrawerListener(new DrawerListener() { @Override public void onDrawerStateChanged(int arg0) { } @Override public void onDrawerSlide(View arg0, float arg1) { } @Override public void onDrawerOpened(View arg0) { } @Override public void onDrawerClosed(View arg0) { if(arg0 == leftListView){ if(position != -1){ update(position); position = -1; } } } }); } @Override public void onInitData(Bundle savedInstanceState) { drawerLayout.setDrawerShadow(R.drawable.shape_drawer_shaow_down_left, Gravity.START); drawerLayout.setDrawerShadow(R.drawable.shape_drawer_shaow_down_right, Gravity.END); leftListView.setAdapter(new StringAdapter(getBaseContext(), getStringArray(R.array.planets_array))); update(0); } private void selectItem(int position) { this.position = position; drawerLayout.closeDrawer(leftListView); } private void update(int position){ Fragment fragment = new PlanetFragment(); Bundle args = new Bundle(); args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); fragment.setArguments(args); getFragmentManager().beginTransaction().replace(R.id.frame_content, fragment).commit(); leftListView.setItemChecked(position, true); } public static class PlanetFragment extends Fragment { public static final String ARG_PLANET_NUMBER = "planet_number"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_planet, container, false); int i = getArguments().getInt(ARG_PLANET_NUMBER); String planet = getResources().getStringArray(R.array.planets_array)[i]; int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()), "drawable", getActivity().getPackageName()); ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId); getActivity().setTitle(planet); return rootView; } } }