2017-5-23
MainActivity
public class MainActivity extends AppCompatActivity {@BindView(R.id.toolbar) Toolbar toolbar;@BindView(R.id.tabs) TabLayout tabLayout;@BindView(R.id.appbar) AppBarLayout appbar;@BindView(R.id.viewpager) ViewPager viewPager;@BindView(R.id.fab) FloatingActionButton fab;//浮动操作按钮@BindView(R.id.nav_view) NavigationView navigationView;//@BindView(R.id.drawer_layout) DrawerLayout drawerLayout;//侧滑布局@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);setSupportActionBar(toolbar);getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);getSupportActionBar().setDisplayHomeAsUpEnabled(true);navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {menuItem.setChecked(true);drawerLayout.closeDrawers();return true;}});Adapter adapter = new Adapter(getSupportFragmentManager());adapter.addFragment(new CheeseListFragment(), "白乾涛");adapter.addFragment(new CheeseListFragment(), "包青天");viewPager.setAdapter(adapter);tabLayout.setupWithViewPager(viewPager);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.sample_actions, menu);return true;}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {switch (AppCompatDelegate.getDefaultNightMode()) {case AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM:menu.findItem(R.id.menu_night_mode_system).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_AUTO:menu.findItem(R.id.menu_night_mode_auto).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_YES:menu.findItem(R.id.menu_night_mode_night).setChecked(true);break;case AppCompatDelegate.MODE_NIGHT_NO:menu.findItem(R.id.menu_night_mode_day).setChecked(true);break;}return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case android.R.id.home:drawerLayout.openDrawer(GravityCompat.START);return true;case R.id.menu_night_mode_system:setNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);break;case R.id.menu_night_mode_day:setNightMode(AppCompatDelegate.MODE_NIGHT_NO);break;case R.id.menu_night_mode_night:setNightMode(AppCompatDelegate.MODE_NIGHT_YES);break;case R.id.menu_night_mode_auto:setNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);break;}return super.onOptionsItemSelected(item);}private void setNightMode(@AppCompatDelegate.NightMode int nightMode) {AppCompatDelegate.setDefaultNightMode(nightMode);if (Build.VERSION.SDK_INT >= 11) recreate();}@OnClick(R.id.fab)public void onViewClicked() {Snackbar.make(fab, "Here's a Snackbar", Snackbar.LENGTH_LONG).show();}static class Adapter extends FragmentPagerAdapter {private final List<Fragment> mFragments = new ArrayList<>();private final List<String> mFragmentTitles = new ArrayList<>();public Adapter(FragmentManager fm) {super(fm);}public void addFragment(Fragment fragment, String title) {mFragments.add(fragment);mFragmentTitles.add(title);}@Overridepublic Fragment getItem(int position) {return mFragments.get(position);}@Overridepublic int getCount() {return mFragments.size();}@Overridepublic CharSequence getPageTitle(int position) {return mFragmentTitles.get(position);}}}
MainActivity布局
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><include layout="@layout/include_list_viewpager"/><!--侧滑布局--><android.support.design.widget.NavigationViewandroid:id="@+id/nav_view"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true"app:headerLayout="@layout/nav_header"app:menu="@menu/drawer_view"/></android.support.v4.widget.DrawerLayout>
MainActivity内容区域布局
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main_content"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.AppBarLayoutandroid:id="@+id/appbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:layout_scrollFlags="scroll|enterAlways|snap"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/><android.support.design.widget.TabLayoutandroid:id="@+id/tabs"android:layout_width="match_parent"android:layout_height="wrap_content"/></android.support.design.widget.AppBarLayout><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"/><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="@dimen/fab_margin"android:src="@drawable/ic_done"/></android.support.design.widget.CoordinatorLayout>
Fragment
public class CheeseListFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.fragment_cheese_list, container, false);recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));recyclerView.setAdapter(new MyAdapter(getActivity(), getRandomSublist()));return recyclerView;}private List<String> getRandomSublist() {String[] array = Cheeses.sCheeseStrings;ArrayList<String> list = new ArrayList<String>();while (list.size() < 30) {list.add(array[new Random().nextInt(array.length)]);}return list;}}
Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {private List<String> mList;private Context context;public MyAdapter(Context context, List<String> mList) {this.mList = mList;this.context = context;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.list_item, parent, false));}@Overridepublic void onBindViewHolder(final ViewHolder holder, int position) {holder.mTextView.setText(mList.get(position));holder.ll_item.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context, CheeseDetailActivity.class);intent.putExtra(CheeseDetailActivity.EXTRA_NAME, mList.get(holder.getAdapterPosition()));context.startActivity(intent);}});Glide.with(holder.mImageView.getContext()).load(Cheeses.getRandomCheeseDrawable()).fitCenter().into(holder.mImageView);}@Overridepublic int getItemCount() {return mList.size();}static class ViewHolder extends RecyclerView.ViewHolder {@BindView(R.id.avatar) CircleImageView mImageView;@BindView(R.id.text) TextView mTextView;@BindView(R.id.ll_item) View ll_item;ViewHolder(View view) {super(view);ButterKnife.bind(this, view);}}}
2017-5-23