`
龙哥IT
  • 浏览: 254052 次
  • 性别: 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平台的智能门锁控制APP.zip

    基于Android平台的智能门锁控制APP 项目概述 智能门锁控制APP是一款基于... MenuFragment.java提供用户界面和功能,允许用户进行设备管理、设备选择、用户查询、记录查询、解锁和设置临时密码等操作。 MyViewMod

    android顶部横向滑动菜单

    3. **创建Fragment**:为每个菜单项创建一个对应的`Fragment`类,例如`MenuFragment1`、`MenuFragment2`等。每个`Fragment`都有自己的布局文件和逻辑处理。 4. **设置Adapter**:创建一个`FragmentStateAdapter`...

    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;...

    安卓SlidingMenu各种菜单侧滑菜单相关-AndroidResideMenu.zip

    - `MenuFragment/MenuActivity`: 存放菜单项的布局,可以是单独的Fragment或Activity。 - `MenuAdapter`: 可选,用于填充菜单列表的适配器,如果菜单项是列表形式。 - `Animations`: 包含菜单滑动动画的相关类。 ...

    Android仿微信底部菜单栏+顶部菜单栏(附源码)

    - `MenuFragment.java`:Fragment类,展示各个功能模块的内容。 - `strings.xml`:定义菜单项的文字描述。 - `menu.xml`:定义顶部菜单栏的菜单项。 通过分析和理解这个示例,开发者可以学习到如何在自己的应用中...

    Android App 底部导航菜单栏demo_可自由滑动

    - **MenuFragment**:每个菜单项对应的Fragment类,根据需求实现各自的业务逻辑和界面布局。 - **PagerAdapter**:自定义的Adapter,继承自`FragmentStatePagerAdapter`,为ViewPager提供Fragment列表。 4. **...

    仿qq侧滑菜单

    fragmentManager.beginTransaction().replace(R.id.menu_frame, menuFragment).commit(); ``` 这里,`R.id.menu_frame`是菜单布局中用于承载Fragment的容器。 5. **处理菜单点击事件** 在Fragment中,可以通过...

    高仿新浪新闻SlidingMenu

    3. `MenuFragment.java` - 侧边栏的Fragment,包含菜单项和点击事件处理。 4. `content_main.xml` - 主内容区域的布局文件。 5. `menu.xml` - 侧边栏的布局文件,定义菜单项。 6. `styles.xml` - 应用的主题和样式...

    应用源码仿360手机助手首页浮动菜单.zip

    2. **MenuFragment.java** - 如果菜单是以碎片(Fragment)的形式存在,那么这个文件可能是菜单的实现。 3. **悬浮按钮(FloatingActionButton)相关的XML布局文件** - 可能在`res/layout`目录下,用于定义浮动菜单...

    Android应用设计源码-在线订餐项目源码.zip

    在线订餐应用可能包括`MainActivity`、`OrderActivity`、`MenuFragment`等,用于处理用户操作和展示界面。 5. **数据存储**:应用可能使用SQLite数据库存储用户的订单信息、餐厅菜单等。对应的数据库操作类可以在...

    Android 抽屉效果源码.zip源码资源下载

    2. **NavigationFragment/MenuFragment**: 抽屉视图的内容通常放在一个Fragment中,这样可以在不重新加载主活动的情况下切换不同的内容。`NavigationView`是一个方便的组件,可以直接与`DrawerLayout`配合使用,提供...

    Android应用源码之SlidingMenu左右宽度可调节菜单-IT计算机-毕业设计.zip

    - `MenuFragment`:侧边菜单的Fragment,通常用于显示菜单项。 - `ContentFragment`:主要内容区域的Fragment,与菜单相对应。 - XML布局文件:定义了界面元素的布局和样式。 3. **SlidingMenu的实现** - 使用`...

    Android 透明菜单源码.zip项目安卓应用源码下载

    - `MenuFragment`或`OptionsMenu`:定义并显示透明菜单的类。 - `Drawable`或`Shape`资源:用于创建菜单的背景效果,实现透明或半透明。 - `AndroidManifest.xml`:配置文件,声明应用的权限、启动活动等信息。 ...

    android下使用Fragment实现左侧3级菜单+动画效果

    - MenuFragment:展示3级菜单的Fragment。 - MenuAdapter:实现了ExpandableListAdapter,负责菜单项的显示和交互。 - MenuGroupItem和MenuItem:表示菜单的组和子项的数据模型。 - AnimationUtils:包含了动画效果...

    Android应用源码之菜单动画(类似QQ空间)Demo.zip

    2. **MenuFragment.java**:菜单Fragment,包含了菜单项的UI和逻辑。 3. **MenuLayout.xml**:菜单布局文件,定义了菜单的结构和样式。 4. **GestureDetectorCompat**的使用:在Java代码中,用于识别滑动手势。 5. *...

    SlidingMenu

    - **MenuFragment**: 侧滑菜单的Fragment,包含菜单项和相应的点击事件处理。 - **ContentFragment**: 主界面的Fragment,显示应用的主要内容。 - **SlidingMenu类**: 实现滑动菜单的核心逻辑,包括触摸事件处理、...

    史最简单的侧滑

    在提供的`MenuFragment`文件中,我们可能会看到具体的菜单布局和相关逻辑。这个Fragment可能是侧滑菜单内容的承载者,通过工具类的初始化方法与主视图交互,实现侧滑效果。通过对这个Fragment的代码分析,我们可以...

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

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

Global site tag (gtag.js) - Google Analytics