ActionBar切换ViewPager
2016-05-15 10:16
288 查看
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; } } }
相关文章推荐
- JDBC链接MySql数据库的简单讲解
- 常用Mysql命令
- 分享php多功能图片处理类
- 怎样区分病毒性感冒和细菌性感冒?
- Java数据结构之二叉树的实现
- TF-IDF与余弦相似性的应用
- objective-c - 基础篇 - 数据库网络 - sqlite的链接+增删改查
- MySQL高可用之MHA—其它高可用解决方案和问题
- POJ 2186
- UVa 116 Unidirectional TSP (多段图的最短路 DP)
- 基于 gulp 的前端构建
- android:textIsSelectable
- Android 开源项目浅读-------SwipeMenuListView-重写,第四章,修改适配器
- 65. Valid Number
- 语音识别
- Material Design(一)--概述
- PHP语言 -- Smarty模版基础
- mysql-server 依赖 mysql-server-5.5 解决方案
- 机房合作--状态模式应用
- 成为C++高手之指针与数组