笔者之前已经写过了关于viewpager的demo,但是之前是通过将Activity转化为view,然后放入viewpager实现的,具体操作中有时候还是不如fragment方便。

之前的viewpager demo的地址:http://blog.csdn.net/double2hao/article/details/50183567


主要实现的功能与之前的一样:(源码在文章结尾)

1、滑动的同时改变标题栏

2、点击标题栏的同时滑动

3、点击fragment中的button能有toast提示


效果:

android viewpager+fragment做主界面(超容易理解的demo!)_第1张图片  android viewpager+fragment做主界面(超容易理解的demo!)_第2张图片


主要实现过程:

1、设置好4个fragment,让他们关联其布局文件。

2、为viewpager设置FragmentPagerAdapter。在其中放入每个item中的fragment以及总共的item的个数。

3、为viewpgaer绑定时间监听器,设置在item变化的时候会调用的方法,也就是在滑动的时候会发生的事件。(在demo中item改变时会改变底部button中的字体的颜色)

4、为底部button实现点击事件,事实上就是在点击之后改变viewpgaer中的item,一行解决。

5、为fragment中的button设置toast的点击效果。


主要文件:

android viewpager+fragment做主界面(超容易理解的demo!)_第3张图片



MainActiviy

package com.example.viewpager_fragment;import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.Button;public class MainActivity extends FragmentActivity        implements View.OnClickListener {    private ViewPager viewPager;    private Button one;    private Button two;    private Button three;    private Button four;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化ViewPager        InitViewPager();        //初始化布局        InitView();    }    private void InitViewPager() {        //获取ViewPager        //创建一个FragmentPagerAdapter对象,该对象负责为ViewPager提供多个Fragment        viewPager = (ViewPager) findViewById(R.id.pager);        FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(                getSupportFragmentManager()) {            //获取第position位置的Fragment            @Override            public Fragment getItem(int position) {                Fragment fragment = null;                switch (position) {                    case 0:                        fragment = new OneFragment();                        break;                    case 1:                        fragment = new TwoFragment();                        break;                    case 2:                        fragment = new ThreeFragment();                        break;                    case 3:                        fragment = new FourFragment();                        break;                }                return fragment;            }            //该方法的返回值i表明该Adapter总共包括多少个Fragment            @Override            public int getCount() {                return 4;            }        };        //为ViewPager组件设置FragmentPagerAdapter        viewPager.setAdapter(pagerAdapter);        //为viewpager组件绑定时间监听器        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {            //当ViewPager显示的Fragment发生改变时激发该方法            @Override            public void onPageSelected(int position) {                switch (position) {                    //如果是点击的第一个button,那么就让第一个button的字体变为蓝色                    //其他的button的字体的颜色变为黑色                    case 0:                        one.setTextColor(Color.BLUE);                        two.setTextColor(Color.BLACK);                        three.setTextColor(Color.BLACK);                        four.setTextColor(Color.BLACK);                        break;                    case 1:                        one.setTextColor(Color.BLACK);                        two.setTextColor(Color.BLUE);                        three.setTextColor(Color.BLACK);                        four.setTextColor(Color.BLACK);                        break;                    case 2:                        one.setTextColor(Color.BLACK);                        two.setTextColor(Color.BLACK);                        three.setTextColor(Color.BLUE);                        four.setTextColor(Color.BLACK);                        break;                    case 3:                        one.setTextColor(Color.BLACK);                        two.setTextColor(Color.BLACK);                        three.setTextColor(Color.BLACK);                        four.setTextColor(Color.BLUE);                        break;                }                super.onPageSelected(position);            }        });    }    private void InitView() {        one = (Button) findViewById(R.id.bt_one);        two = (Button) findViewById(R.id.bt_two);        three = (Button) findViewById(R.id.bt_three);        four = (Button) findViewById(R.id.bt_four);        //设置点击监听        one.setOnClickListener(this);        two.setOnClickListener(this);        three.setOnClickListener(this);        four.setOnClickListener(this);        //将button中字体的颜色先按照点击第一个button的效果初始化        one.setTextColor(Color.BLUE);        two.setTextColor(Color.BLACK);        three.setTextColor(Color.BLACK);        four.setTextColor(Color.BLACK);    }    //点击主界面上面的button后,将viewpager中的fragment跳转到对应的item    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.bt_one:                viewPager.setCurrentItem(0);                break;            case R.id.bt_two:                viewPager.setCurrentItem(1);                break;            case R.id.bt_three:                viewPager.setCurrentItem(2);                break;            case R.id.bt_four:                viewPager.setCurrentItem(3);                break;        }    }}


OneFragment:(由于4个fragment的布局都一样,在此就只放上第一个了)

package com.example.viewpager_fragment;/** * Created by 佳佳 on 2015/12/31. */import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.Toast;public class OneFragment extends Fragment {    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @Override    @Nullable    public View onCreateView(LayoutInflater inflater,                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View rootView = inflater.inflate(R.layout.one, container, false);//关联布局文件        //设置在OneFragment中的点击效果        Button bt_frg_one = (Button) rootView.findViewById(R.id.bt_frg_one);        bt_frg_one.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(getActivity().getApplicationContext(), "这是第一页按钮的点击效果", Toast.LENGTH_SHORT).show();            }        });        return rootView;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);    }}


activity_main:

<?xml version="1.0" encoding="utf-8"?>                


one:

<?xml version="1.0" encoding="utf-8"?>    



最后附上源码地址:http://download.csdn.net/detail/double2hao/9387550





更多相关文章

  1. Android之TabLayout布局的使用
  2. Android Studio App设置线性布局LinerLayout控件垂直/水平方向排
  3. Android小項目之---ListView实现论坛管理效果
  4. Android5.0之后 VectorDrawable实现超炫酷动画效果
  5. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Ite
  6. 【Android】Android中两种常用布局(LinearLayout和RelativeLayout
  7. Android 实现答题器功能(通过手势实现翻页效果)

随机推荐

  1. android内存机制
  2. Android(安卓)核心分析 之八------Androi
  3. [Android官方API阅读]___
  4. 周记:Class4
  5. Android: Android(安卓)3.0 SDK发布,速度
  6. Android之SharedPreferences用法
  7. SQLite 锁机制与事务简介
  8. ListView透明背景点击设置
  9. Android(安卓)自定义圆角按钮
  10. Android如何引用其他工程