栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

本文为大家分享了Android Studio实现滑动菜单Tab效果的具体代码,供大家参考,具体内容如下

描述:

        之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的;

        最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发;

        APP已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来。 

效果图:

        可以手动滑动菜单

        也可以通过点击头部菜单进行切换

 

具体实现的代码:

前台代码(activity_main.xml):




  

    
    

    
    
  

  

主界面代码(MainActivity.java):

package com.hyl.acccountbookdemo;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity implements View.onClickListener {
  private TextView item_detail, item_category_report;
  private ViewPager vp;
  private oneFragment oneFragment;
  private TwoFragment twoFragment;
  private List mFragmentList = new ArrayList();
  private FragmentAdapter mFragmentAdapter;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initViews();

    mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList);
    vp.setOffscreenPageLimit(2);//ViewPager的缓存为2帧
    vp.setAdapter(mFragmentAdapter);
    vp.setCurrentItem(0);//初始设置ViewPager选中第一帧
    item_detail.setTextColor(Color.parseColor("#1ba0e1"));

    //ViewPager的监听事件
    vp.setonPageChangeListener(new ViewPager.onPageChangeListener() {
      @Override
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

      }

      @Override
      public void onPageSelected(int position) {
 
 changeTextColor(position);
      }

      @Override
      public void onPageScrollStateChanged(int state) {
 
      }
    });
  }

  
  private void initViews() {
    item_detail = (TextView) findViewById(R.id.item_detail);
    item_category_report = (TextView) findViewById(R.id.item_category_report);

    item_detail.setonClickListener(this);
    item_category_report.setonClickListener(this);

    vp = (ViewPager) findViewById(R.id.mainViewPager);
    oneFragment = new oneFragment();
    twoFragment = new TwoFragment();
    //给FragmentList添加数据
    mFragmentList.add(oneFragment);
    mFragmentList.add(twoFragment);
  }

  
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.item_detail:
 vp.setCurrentItem(0, true);
 break;
      case R.id.item_category_report:
 vp.setCurrentItem(1, true);
 break;
    }
  }

  public class FragmentAdapter extends FragmentPagerAdapter {

    List fragmentList = new ArrayList();

    public FragmentAdapter(FragmentManager fm, List fragmentList) {
      super(fm);
      this.fragmentList = fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
      return fragmentList.get(position);
    }

    @Override
    public int getCount() {
      return fragmentList.size();
    }

  }

  
  private void changeTextColor(int position) {
    if (position == 0) {
      item_detail.setTextColor(Color.parseColor("#1ba0e1"));
      item_category_report.setTextColor(Color.parseColor("#000000"));
    } else if (position == 1) {
      item_category_report.setTextColor(Color.parseColor("#1ba0e1"));
      item_detail.setTextColor(Color.parseColor("#000000"));
    }
  }
}

需要多少个Fragment,便创建多少个,这里只举例写一个,其它相同

建立Fragment(fragment_one.xml):




  

Fragment界面代码(OneFragment.java):

package com.hyl.acccountbookdemo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class oneFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_one, container, false);
  }
}

strings.xml:

明细
类别报表

colors.xml:

#000000

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/155454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号