`
龙哥IT
  • 浏览: 238167 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

MenuFragment

 
阅读更多

主界面布局改版:

Fragment替代RadioGroup,之前总是用RadioGroup做主界面的跳转,其实很早就放弃了,已经用Fragment替代了,一直没写,学习时间也没多少,最近闲下来,把自己的知识总结总结,俗话说的好,再好的脑子总是比不上一个烂笔头;

首先上布局文件:tabmenu_layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/progress_bg"
                android:orientation="vertical">

    <FrameLayout
        android:id="@+id/id_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="40dp"/>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/white"
        android:orientation="horizontal"
        android:paddingBottom="3dp"
        android:paddingTop="3dp"
        android:weightSum="1">


        <TextView
            android:id="@+id/start_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/start_layout"
            android:gravity="center"
            android:paddingTop="3dp"
            android:text="主页"
            android:textColor="@color/tab_color_bg"
            android:textSize="14sp"
            />

        <TextView
            android:id="@+id/shop_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/shop_layout"
            android:gravity="center"
            android:paddingTop="3dp"
            android:text="购物车"
            android:textColor="@color/tab_color_bg"
            android:textSize="14sp"/>

        <TextView
            android:id="@+id/order_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/order_layout"
            android:gravity="center"
            android:paddingTop="3dp"
            android:text="订单"
            android:textColor="@color/tab_color_bg"
            android:textSize="14sp"/>

        <TextView
            android:id="@+id/myself_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/myself_layout"
            android:gravity="center"
            android:paddingTop="3dp"
            android:text="我的"
            android:textColor="@color/tab_color_bg"
            android:textSize="14sp"/>
    </LinearLayout>
    </RelativeLayout>

 其中 TextView的字体颜色,是在color.xml文件中存放两种状态颜色值

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/变色颜色" android:state_selected="true"/>
    <item android:color="@color/默认颜色" />
</selector>

 而android:drawableTop是调用Drawable文件夹中的layout文件:

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/变色图" android:state_selected="true"/>
    <item android:drawable="@drawable/默认"/>
</selector>

 

代码文件(算得上是最原始的代码了,没啥框架):

 

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.FragmentTransaction;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MainMenuActivity extends FragmentActivity implements View.OnClickListener {


    @Bind(R.id.id_content)
    FrameLayout mIdContent;
    @Bind(R.id.start_tv)
    TextView mStartTv;
    @Bind(R.id.shop_tv)
    TextView mShopTv;
    @Bind(R.id.order_tv)
    TextView mOrderTv;
    @Bind(R.id.myself_tv)
    TextView mMyselfTv;
    private TextView[] tv;
    private Fragment[] mFragments;

    private int curIndex;

    private StartFragment mStartFragment = new StartFragment();
    private ShopFragment mShopFragment = new ShopFragment();
    private OrderFragment mOrderFragment = new OrderFragment();
    private MyselfFragment mMyselfFragment = new MyselfFragment();
    private FragmentManager mManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabmenu_layout);
        ButterKnife.bind(this);

        Viewinit();

    }

    private void Viewinit() {
        tv = new TextView[]{mStartTv, mShopTv, mOrderTv, mMyselfTv};
        mFragments = new Fragment[]{mStartFragment, mShopFragment, mOrderFragment, mMyselfFragment};
        for (int i = 0; i < tv.length; i++) {
            tv[i].setOnClickListener(this);
        }

        mManager = this.getSupportFragmentManager();
        FragmentTransaction transaction = mManager.beginTransaction();

        for (Fragment fragmnt : mFragments) {
            transaction.add(R.id.id_content, fragmnt).hide(fragmnt);
        }

        transaction.show(mFragments[0]);
        transaction.commit();
        mStartTv.setSelected(true);
    }


    @Override
    public void onClick(View view) {
        int index = 0;
        switch (view.getId()) {
            case R.id.start_tv:
                index = 0;
                break;
            case R.id.shop_tv:
                index = 1;
                break;
            case R.id.order_tv:
                index = 2;
                break;
            case R.id.myself_tv:
                index = 3;
                break;
        }

        if (curIndex != index) {
            tv[index].setSelected(true);
            tv[curIndex].setSelected(false);
            openFragment(mFragments[index], true);
            openFragment(mFragments[curIndex], false);
            curIndex = index;
        }
    }

    private void openFragment(Fragment mfragment, boolean mshow) {
        FragmentTransaction tt = mManager.beginTransaction();
        if (mshow) {
            tt.show(mfragment);
        } else {
            tt.hide(mfragment);
        }
        tt.commit();
    }

}

 其中@Bind是直接使用compile 'com.jakewharton:butterknife:7.0.1'

分享到:
评论

相关推荐

    Android菜单框架Cangol-UIFrame.zip

    import mobi.cangol.mobile.uiframe.demo.fragment.MenuFragment;  import mobi.cangol.mobile.uiframe.demo.fragment.MenuFragment2;  import android.annotation.SuppressLint;  import android.os.Bundle;...

    安卓如何写fragment中的点击事件

    先上一张图,看懂这张图后,才可以看下面的内容。 这张图的意思就是什么东西里面又包含了什么东西的意思,代码...第三步:新建一个fragment,取名为MenuFragment,它会自动生成MenuFragment.java和menu_fragemnt.xml

    基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip

    基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip个人经导师指导并认可通过的高分毕业设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip基于网络的入侵检测系统

    本户型为2层独栋别墅D026-两层-13.14&12.84米-施工图.dwg

    本户型为2层独栋别墅,建筑面积239平方米,占地面积155平米;一层建筑面积155平方米,设有客厅、餐厅、厨房、卧室3间、卫生间1间、杂物间;二层建筑面积84平方米,设有卧室2间、卫生间1间、储藏间、1个大露台。 本户型外观造型别致大方,采光通风良好,色彩明快,整体平面布局紧凑、功能分区合理,房间尺度设计适宜,豪华大气,富有时代气息。

    Java_带有可选web的开源命令行RatioMaster.zip

    Java_带有可选web的开源命令行RatioMaster

    基于MATLAB实现的OFDM经典同步算法之一Park算法仿真,附带Park算法经典文献+代码文档+使用说明文档.rar

    CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的OFDM经典同步算法之一Park算法仿真,附带Park算法经典文献+代码文档+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

    基于MATLAB实现的对机械振动信号用三维能量谱进行分析+使用说明文档.rar

    CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的对机械振动信号用三维能量谱进行分析+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

    grpcio-1.49.0-cp310-cp310-manylinux_2_17_aarch64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于MATLAB实现的组合搜索的完整代码+使用说明文档.zip

    CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的组合搜索的完整代码+使用说明文档.zip 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

    月酝知风之地产行业基本面再度走弱核心城市政策空间打开-21页.pdf.zip

    月酝知风之地产行业基本面再度走弱核心城市政策空间打开-21页.pdf.zip

    大学生毕业答辨ppt免费模板【不要积分】下载可编辑可用(104).zip

    大学生毕业答辨ppt免费模板【不要积分】下载可编辑可用(104).zip

    2G、3G、4G最小站间距计算V1.1.xlsm

    2G、3G、4G最小站间距计算V1.1

    基于MATLAB实现的语音信号通过低通,高通,带通滤波器使其变声+GUI界面+使用说明文档

    CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

    经典微信小游戏 · Android 应用游戏:AJUMP 跳一跳.apk

    经典微信小游戏 · Android 应用游戏:AJUMP 跳一跳.apk

    基于MATLAB实现的simulink卫星姿态控制系统模型+使用说明文档.rar

    CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的simulink卫星姿态控制系统模型+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

    grpcio-1.41.0-cp38-cp38-linux_armv7l.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    小程序项目源码-家政预约小程序.zip

    小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序小程序项目源码-家政预约小程序v

    【4月组队学习-llm-universe笔记】 0基础小白 RAG应用开发实践笔记

    zhipuai_embedding

    grpcio-1.45.0-cp39-cp39-linux_armv7l.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    视频分类C3D源码重构版

    C3D、R3D、R(2+1)D 视频分类源码重构版,仅仅需要修改一个配置文件,不需要进入源码到处修改即可训练自己的数据。

Global site tag (gtag.js) - Google Analytics