ActionBar切换ViewPager
ViewPager
自带滑动效果
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
1.action_main.xml
- <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/drawerlayout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
- <strong>
- <android.support.v4.view.ViewPager
- android:id="@+id/vp"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerHorizontal="true"
- android:layout_centerVertical="true" >
- </android.support.v4.view.ViewPager></strong>
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="left"
- android:background="@drawable/bg_tab" />
- </android.support.v4.widget.DrawerLayout>
2.Fragment
- package com.itheima.googleplay.fragment;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- public class HomeFragment extends Fragment {
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- TextView tView = new TextView(getActivity());
- tView.setText("我是home");
- return tView;
- }
- }
3.互相监听
ActionBar 监听 viewpager
viewpager监听Actionbar
1.初始化viewpager
mViewPager = (ViewPager) findViewById(R.id.vp);
2.给viewpager设置Adpater
mViewPager.setAdapter(new MyAdpater(getSupportFragmentManager()));//这里要注意版本问题不然容易报错
- /**
- * viewpager adpater
- */
- class MyAdpater extends FragmentStatePagerAdapter {
- public MyAdpater(FragmentManager fm) {
- super(fm);
- }
- // 每个条目返回的fragment
- @Override
- public Fragment getItem(int arg0) {
- switch (arg0) {
- case 0:
- return new HomeFragment();
- default:
- return new AppFragment();
- }
- }
- // 一共几个条目
- @Override
- public int getCount() {
- return 4;
- }
- }
4.viewpager设置监听
- mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
- @Override
- public void onPageSelected(int position) {
- getActionBar().setSelectedNavigationItem(position);
- }
- });
5.actionbar监听
- 伪代码
- bar.addTab(bar.newTab().setText("标签1")
- .setTabListener(new MyTabListenter()));
- private class MyTabListenter implements TabListener {
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- mViewPager.setCurrentItem(tab.getPosition()); // 监听tab选择哪个按钮位置
- // 然后来控制viewpager
- }
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- }
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- }
- }
//整体代码
- package com.itheima.googleplay;
- import com.itheima.googleplay.fragment.AppFragment;
- import com.itheima.googleplay.fragment.HomeFragment;
- import android.os.Bundle;
- import android.app.ActionBar;
- import android.app.ActionBar.TabListener;
- import android.app.FragmentTransaction;
- import android.app.ActionBar.Tab;
- import android.app.Activity;
- import android.content.Intent;
- import android.support.v4.app.ActionBarDrawerToggle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentStatePagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.support.v4.widget.DrawerLayout;
- import android.support.v4.widget.DrawerLayout.DrawerListener;
- import android.support.v7.widget.SearchView;
- import android.support.v7.widget.SearchView.OnQueryTextListener;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.Toast;
- public class MainActivity extends FragmentActivity {
- private DrawerLayout drawerLayout;
- ActionBarDrawerToggle actionBarDrawerToggle;
- private ViewPager mViewPager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
- mViewPager = (ViewPager) findViewById(R.id.vp);
- // ====================
- mViewPager.setAdapter(new MyAdpater(getSupportFragmentManager()));
- // =====================
- ActionBar bar = getActionBar();
- // bar.setHomeButtonEnabled(true);
- bar.setDisplayHomeAsUpEnabled(true);// 设置home显示“三横”图标
- // 添加tab
- bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- // 添加标签
- bar.addTab(bar.newTab().setText("标签1")
- .setTabListener(new MyTabListenter()));
- bar.addTab(bar.newTab().setText("标签2")
- .setTabListener(new MyTabListenter()));
- bar.addTab(bar.newTab().setText("标签3")
- .setTabListener(new MyTabListenter()));
- bar.addTab(bar.newTab().setText("标签4")
- .setTabListener(new MyTabListenter()));
- // =================================================================
- // 参数1:当前的actionbar 参数2:哪个侧滑需要控制 参数3:按钮图标来控制侧滑
- // 参数4,5:打开关闭抽屉描述
- actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
- R.drawable.ic_drawer_am, R.string.drawer_open,
- R.string.drawer_close);
- // //设置drawer的开关监听
- 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) {
- }
- });
- // 将actionbar与DrawerLayout同步关联
- actionBarDrawerToggle.syncState();
- // ===================viewpager监听============================
- mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
- @Override
- public void onPageSelected(int position) {
- getActionBar().setSelectedNavigationItem(position);
- }
- });
- // ===============================================
- }
- private class MyTabListenter implements TabListener {
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- mViewPager.setCurrentItem(tab.getPosition()); // 监听tab选择哪个按钮位置
- // 然后来控制viewpager
- }
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- }
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- }
- }
- /**
- * 初始化menu
- */
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- // 获取searchview
- SearchView search = (SearchView) menu.findItem(R.id.action_search)
- .getActionView();
- // 设置监听
- search.setOnQueryTextListener(new OnQueryTextListener() {
- // 搜索文本提交的时候
- @Override
- public boolean onQueryTextSubmit(String searchText) {
- // 输入内容的searchText
- Toast.makeText(getApplicationContext(), searchText, 0).show();
- return true;
- }
- // 搜索文本发生变化的时候
- @Override
- public boolean onQueryTextChange(String searchText) {
- Toast.makeText(getApplicationContext(), searchText, 0).show();
- return false;
- }
- });
- return true;
- }
- // 处理搜索点击事件
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == R.id.action_search) {
- Toast.makeText(this, "搜索", 0).show();
- }
- return actionBarDrawerToggle.onOptionsItemSelected(item)
- || super.onOptionsItemSelected(item);
- }
- // 跳转 MainActivity - DetailActivity
- public void click(View view) {
- startActivity(new Intent(getApplicationContext(), DetailActivity.class));
- }
- /**
- * viewpager adpater
- */
- class MyAdpater extends FragmentStatePagerAdapter {
- public MyAdpater(FragmentManager fm) {
- super(fm);
- }
- // 每个条目返回的fragment
- @Override
- public Fragment getItem(int arg0) {
- switch (arg0) {
- case 0:
- return new HomeFragment();
- default:
- return new AppFragment();
- }
- }
- // 一共几个条目
- @Override
- public int getCount() {
- return 4;
- }
- }
- }

浙公网安备 33010602011771号