描述:

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

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

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

效果图:

可以手动滑动菜单

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

         

源码:

https://github.com/AnneHan/slidingMenu

具体实现的代码:

前台代码(activity_main.xml):

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="1dp"
android:background="@android:color/white"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp"> <!--detail Tab-->
<TextView
android:id="@+id/item_detail"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=""
android:gravity="center_horizontal|center_vertical"
android:text="@string/detail_tab"
android:textColor="@color/main_tab_text_color"
android:textSize="20dp"/> <!--category report Tab-->
<TextView
android:id="@+id/item_category_report"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=""
android:gravity="center_horizontal|center_vertical"
android:text="@string/category_report_tab"
android:textColor="@color/main_tab_text_color"
android:textSize="20dp"/>
</LinearLayout> <android.support.v4.view.ViewPager
android:id="@+id/mainViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=""/>
</LinearLayout>

主界面代码(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; /**
* @programName: MainActivity.java
* @programFunction: Recording of income and expenditure
* @createDate: 2018/09/25
* @author: AnneHan
* @version:
* xx. yyyy/mm/dd ver author comments
* 01. 2018/09/25 1.00 AnneHan New Create
*/
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<Fragment> mFragmentList = new ArrayList<Fragment>();
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) {
/*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
arg0==1的时辰默示正在滑动,
arg0==2的时辰默示滑动完毕了,
arg0==0的时辰默示什么都没做。*/
}
});
} /**
* 初始化布局View
*/
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);
} /**
* 点击头部Text 动态修改ViewPager的内容
*/
@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<Fragment> fragmentList = new ArrayList<Fragment>(); public FragmentAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.fragmentList = fragmentList;
} @Override
public Fragment getItem(int position) {
return fragmentList.get(position);
} @Override
public int getCount() {
return fragmentList.size();
} } /**
* 由ViewPager的滑动修改头部导航Text的颜色
* @param position
*/
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):

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/detail_tab"
android:textSize="25sp"/> </LinearLayout>

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; /**
* @programName: OneFragment.java
* @programFunction:
* @createDate: 2018/09/25
* @author: AnneHan
* @version:
* xx. yyyy/mm/dd ver author comments
* 01. 2018/09/25 1.00 AnneHan New Create
*/
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:

<string name="detail_tab">明细</string>
<string name="category_report_tab">类别报表</string>

colors.xml:

<color name="main_tab_text_color">#000000</color>

Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版的更多相关文章

  1. Android之实现ViewPager+Fragment左右滑动

    近期看新闻发现新闻的页面是能够左右滑动的.于是自己就好奇起来了,之前做过ViewPager展示图片,在想怎么载入页面呢?研究了一下.发现就是加入了Fragment,废话不多说,揭秘奥秘的时候到了. 使 ...

  2. Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?

    DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...

  3. Android:使用ViewPager实现左右滑动切换图片(图上有点点)

    在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...

  4. Android:使用ViewPager实现左右滑动切换图片 (简单版)

    ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...

  5. fragment做成选项卡,tab效果。 fragment+RadioGroup

    fragment做成选项卡,tab效果. fragment+RadioGroup from://http://blog.csdn.net/zimo2013/article/details/122393 ...

  6. Android Viewpager+Fragment实现滑动标签页

    ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...

  7. Android ViewPager + Fragment实现滑动页面

    效果: PagerData类: package com.cloud.viewpagerdemo; import java.io.Serializable; class PagerData implem ...

  8. ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager

    思路:新建一个Activity,且这个Activity要继承FragementActivity,在Activity的布局文件中放入了一个viewPager,为了效果好看,还做了个导航,使得ViewPa ...

  9. android 中的 ViewPager+ Fragment

    android的Viewpager 的各种经常的用法,朋友问我要过,所以就稍微总结一下, ViewPager + Fragment 经常用到  代码是从   actionbarsherlock 中提取 ...

随机推荐

  1. Java学习笔记43(打印流、IO流工具类简单介绍)

    打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...

  2. LabVIEW(十):数组和簇

    一.数组 1.创建数组 (1).前面板右键>“数组.矩阵与簇”>数组. (2).前面板右键>(选择要添加的数组数据类型,比如创建数值数组)数值>将“数值输入控件”拖入数组中. ...

  3. C#6.0语言规范(二) 词法结构

    程式 AC#程序由一个或多个源文件组成,正式称为编译单元(编译单元).源文件是Unicode字符的有序序列.源文件通常与文件系统中的文件一一对应,但不需要此对应关系.为了获得最大的可移植性,建议使用U ...

  4. PHP利用Session实现上传进度

    实现文件上传进度条基本是依靠JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能. PHP手册对于session上传进度是这么介绍的: 当 session.upload_ ...

  5. oracle对sum出来的数字进行非空补0处理

    oracle在使用函数计算式会遇到这样的情况:例如sum函数 如果计算的sum值为null,则用0替代 方法1(便于理解): select when sum(c.num) is null then   ...

  6. 详谈再论JAVA获取本机IP地址

    首先,你如果搜索“JAVA获取本机IP地址”,基本上搜到的资料全是无用的.比如这篇:http://www.cnblogs.com/zrui-xyu/p/5039551.html实际上的代码在复杂环境下 ...

  7. 关于springboot aop 俩次调用的问题 aop多次调用

    由于我在springboot 启动类中 给我的切面类进行了赋值  即@Bean 然而我在切面类中加了@Component 导致 springboot 注入了俩个 bean  所以导致 aop 多次执行 ...

  8. Linux学习笔记之二————Linux系统的文件和目录

    一.Windows和Linux文件系统区别 1.在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符: 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:  ...

  9. MongoDB使用优化

    一.监控 mongodb可以通过profile来监控数据,进行优化. 查看当前是否开启profile功能用命令:db.getProfilingLevel()返回level等级,值为0|1|2,分别代表 ...

  10. MySQL 进阶之索引

    一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么什么样的数据结构可以作为索引呢? B-tree是最常用的用于索引的数据结构.因为它们是时间复杂度低, 查找.删除.插 ...