安卓开发之使用viewpager+fragment实现滚动tab页
闲着。用viewpager+fragment实现了个滚动tab。。轻拍,以后会陆续发先小东西出来。。爱分享,才快乐。demo见附件。。
- package com.example.demo;
- import java.util.ArrayList;
- import java.util.List;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentPagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.TextView;
- public class MainActivity extends FragmentActivity {
- private TextView chatView, address, findView;
- private ViewPager mViewPager;
- private TextView mBottomLine;
- private int screenWidth = 0;
- private int currentIndex = 0;
- private MyPagerAdapter myPagerAdapter;
- private List<Fragment> mFragmentList = new ArrayList<Fragment>();
- private List<String> mTitleList = new ArrayList<String>();
- MyFragment chatFragment;
- MyFragment findFragment;
- MyFragment addressFragment;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initComponents();
- }
- private void initComponents() {
- this.mBottomLine = (TextView) findViewById(R.id.bottom_line);
- this.screenWidth = getWindowManager().getDefaultDisplay().getWidth();
- this.chatView = (TextView) findViewById(R.id.chat_top_info);
- this.findView = (TextView) findViewById(R.id.find_top_info);
- this.address = (TextView) findViewById(R.id.address_top_info);
- TopTabClickListener clickListener = new TopTabClickListener();
- this.chatView.setOnClickListener(clickListener);
- this.findView.setOnClickListener(clickListener);
- this.address.setOnClickListener(clickListener);
- this.mViewPager = (ViewPager)findViewById(R.id.viewPager);
- chatFragment = new MyFragment();
- Bundle b = new Bundle();
- b.putInt("index", 0);
- chatFragment.setArguments(b);
- mFragmentList.add(chatFragment);
- findFragment = new MyFragment();
- b = new Bundle();
- b.putInt("index", 1);
- findFragment.setArguments(b);
- mFragmentList.add(findFragment);
- addressFragment = new MyFragment();
- b = new Bundle();
- b.putInt("index", 2);
- addressFragment.setArguments(b);
- mFragmentList.add(addressFragment);
- myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mFragmentList, mTitleList);
- mViewPager.setAdapter(myPagerAdapter);
- mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
- @Override
- public void onPageSelected(int index) {}
- @Override
- public void onPageScrolled(int index, float arg1, int pixes) {
- if(pixes != 0){
- mBottomLine.layout((int) ((index + arg1) * screenWidth / 3), 0, (int) ((index + 1 + arg1) * screenWidth / 3), mBottomLine.getWidth());
- }
- if (pixes == 0) {
- currentIndex = index;
- changeIndex(currentIndex);
- }
- System.out.println("the state is : " + arg1 + " and index is " + index);
- }
- @Override
- public void onPageScrollStateChanged(int state) {}
- });
- }
- public void onLeftBtnClick(View view){
- this.finish();
- }
- private class TopTabClickListener implements OnClickListener{
- @Override
- public void onClick(View view) {
- if (view.getId() == chatView.getId()) {
- mViewPager.setCurrentItem(0);
- }else if(view.getId() == findView.getId()){
- mViewPager.setCurrentItem(1);
- }else{
- mViewPager.setCurrentItem(2);
- }
- changeIndex(mViewPager.getCurrentItem());
- }
- }
- private void changeIndex(int index){
- if(index == 0){
- chatView.setTextColor(getResources().getColor(R.color.green));
- findView.setTextColor(getResources().getColor(R.color.black));
- address.setTextColor(getResources().getColor(R.color.black));
- }else if(index == 1){
- findView.setTextColor(getResources().getColor(R.color.green));
- chatView.setTextColor(getResources().getColor(R.color.black));
- address.setTextColor(getResources().getColor(R.color.black));
- }else {
- address.setTextColor(getResources().getColor(R.color.green));
- findView.setTextColor(getResources().getColor(R.color.black));
- chatView.setTextColor(getResources().getColor(R.color.black));
- }
- mBottomLine.layout((int) (index * screenWidth / 3), 0, (int) ((index + 1) * screenWidth / 3), mBottomLine.getWidth());
- }
- private class MyPagerAdapter extends FragmentPagerAdapter {
- private List<Fragment> fragmentList;
- private List<String> titleList;
- public MyPagerAdapter(FragmentManager fm, List<Fragment> fragmentList,
- List<String> titleList) {
- super(fm);
- this.fragmentList = fragmentList;
- this.titleList = titleList;
- }
- /**
- * 得到每个页面
- */
- @Override
- public Fragment getItem(int arg0) {
- return (fragmentList == null || fragmentList.size() == 0) ? null
- : fragmentList.get(arg0);
- }
- /**
- * 每个页面的title
- */
- @Override
- public CharSequence getPageTitle(int position) {
- return (titleList.size() > position) ? titleList.get(position) : "";
- }
- @Override
- public int getCount() {
- return fragmentList == null ? 0 : fragmentList.size();
- }
- }
- }
- package com.example.demo;
- 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 MyFragment extends Fragment {
- private int index = 0;
- private LayoutInflater mInflater;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- index = getArguments().getInt("index", 0);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- mInflater = inflater;
- TextView v = (TextView) mInflater.inflate(R.layout.fragment, null);
- v.setText("第" + index);
- return v;
- }
- }
demo.zip (1.4 MB)
安卓开发之使用viewpager+fragment实现滚动tab页的更多相关文章
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...
- 安卓开发_WebView如何在Fragment中使用
之前学习了如何在activity中使用WebView控件来显示网页. 在我的实际开发中,有需要在Fragment中用到WebView控件的,那么就百度学习了一下 其实很简单,但是当然不是和在Activ ...
- 安卓开发_浅谈Fragment之事务添加Fragment对象
我们都知道给一个activity动态添加fragment的时候 有下面几种添加方式 看一下布局文件 <LinearLayout xmlns:android="http://schema ...
- Android Viewpager+Fragment实现滑动标签页
ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...
- ViewPager + Fragment实现滑动标签页
http://blog.csdn.net/lizhenmingdirk/article/details/13631813; tab与frg的区别: http://www.cnblogs.com/tia ...
- 安卓开发笔记——Fragment+ViewPager组件(高仿微信界面)
什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再 ...
- 安卓开发_深入学习ViewPager控件
一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...
- 安卓开发笔记——Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果,但作为学习,还是需要来了解下这个新引入类FragmentTabHost 之前2篇文章的链接: 安 ...
- Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
随机推荐
- MySQL_PHP学习笔记_2015_0923_MySQL如何开启事件
1. 查看事件状态>>>>>>>>>>>>>>>>>>>>>>> ...
- c++类使用
一.C++定义类(注意:结束部分的分号不能省略) class 类名 { public: //公共的行为或属性 private: //公共的行为或属性 }; 注意:类的成员变量在定义时不能进行初始化, ...
- error while loading shared libraries: lib******: cannot open shared object file: No such file or directory
程序编译成功后,运行时错误: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object fi ...
- dom 筛选器
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HP ILO2 使用详细教程
iLO是Intergrated Light-Out的缩写,是惠普特有的远程管理功能,目前最新的版本是iLO2.通过iLO2可以实现硬件级别的服务器远程管理,包括开关机.重启.服务器状态的监控.虚拟KV ...
- Using Boost Libraries in Windows Store and Phone Applications
Using Boost Libraries in Windows Store and Phone Applications RATE THIS Steven Gates 18 Jul 2014 5:3 ...
- DataTrigger的几个用法
1.用在textbox等输入控件上,验证输入是否合法. <Window.Resources> <Style TargetType="TextBox"> &l ...
- win2008 64位 + oracle11G 64位 IIS7.5 配置WEBSERVICE
第一个错误: 安装过程依旧是那样简单,但在配好IIS站点,准备连接数据库的时候出错了,以下是错误提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更 ...
- django admin site (三)
1.自定义模板设置: ModelAdmin. add_form_template Path to a custom template, used by add_view(). ModelAdmin. ...
- Redis初步
Redis目录下文件: redis-server.exe:服务程序 redis-check-dump.exe:本地数据库检查 redis-check-aof.exe:更新日志检查 redis-benc ...