主界面布局改版:
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 项目概述 智能门锁控制APP是一款基于... MenuFragment.java提供用户界面和功能,允许用户进行设备管理、设备选择、用户查询、记录查询、解锁和设置临时密码等操作。 MyViewMod
3. **创建Fragment**:为每个菜单项创建一个对应的`Fragment`类,例如`MenuFragment1`、`MenuFragment2`等。每个`Fragment`都有自己的布局文件和逻辑处理。 4. **设置Adapter**:创建一个`FragmentStateAdapter`...
import mobi.cangol.mobile.uiframe.demo.fragment.MenuFragment; import mobi.cangol.mobile.uiframe.demo.fragment.MenuFragment2; import android.annotation.SuppressLint; import android.os.Bundle;...
- `MenuFragment/MenuActivity`: 存放菜单项的布局,可以是单独的Fragment或Activity。 - `MenuAdapter`: 可选,用于填充菜单列表的适配器,如果菜单项是列表形式。 - `Animations`: 包含菜单滑动动画的相关类。 ...
- `MenuFragment.java`:Fragment类,展示各个功能模块的内容。 - `strings.xml`:定义菜单项的文字描述。 - `menu.xml`:定义顶部菜单栏的菜单项。 通过分析和理解这个示例,开发者可以学习到如何在自己的应用中...
- **MenuFragment**:每个菜单项对应的Fragment类,根据需求实现各自的业务逻辑和界面布局。 - **PagerAdapter**:自定义的Adapter,继承自`FragmentStatePagerAdapter`,为ViewPager提供Fragment列表。 4. **...
fragmentManager.beginTransaction().replace(R.id.menu_frame, menuFragment).commit(); ``` 这里,`R.id.menu_frame`是菜单布局中用于承载Fragment的容器。 5. **处理菜单点击事件** 在Fragment中,可以通过...
3. `MenuFragment.java` - 侧边栏的Fragment,包含菜单项和点击事件处理。 4. `content_main.xml` - 主内容区域的布局文件。 5. `menu.xml` - 侧边栏的布局文件,定义菜单项。 6. `styles.xml` - 应用的主题和样式...
2. **MenuFragment.java** - 如果菜单是以碎片(Fragment)的形式存在,那么这个文件可能是菜单的实现。 3. **悬浮按钮(FloatingActionButton)相关的XML布局文件** - 可能在`res/layout`目录下,用于定义浮动菜单...
在线订餐应用可能包括`MainActivity`、`OrderActivity`、`MenuFragment`等,用于处理用户操作和展示界面。 5. **数据存储**:应用可能使用SQLite数据库存储用户的订单信息、餐厅菜单等。对应的数据库操作类可以在...
2. **NavigationFragment/MenuFragment**: 抽屉视图的内容通常放在一个Fragment中,这样可以在不重新加载主活动的情况下切换不同的内容。`NavigationView`是一个方便的组件,可以直接与`DrawerLayout`配合使用,提供...
- `MenuFragment`:侧边菜单的Fragment,通常用于显示菜单项。 - `ContentFragment`:主要内容区域的Fragment,与菜单相对应。 - XML布局文件:定义了界面元素的布局和样式。 3. **SlidingMenu的实现** - 使用`...
- `MenuFragment`或`OptionsMenu`:定义并显示透明菜单的类。 - `Drawable`或`Shape`资源:用于创建菜单的背景效果,实现透明或半透明。 - `AndroidManifest.xml`:配置文件,声明应用的权限、启动活动等信息。 ...
- MenuFragment:展示3级菜单的Fragment。 - MenuAdapter:实现了ExpandableListAdapter,负责菜单项的显示和交互。 - MenuGroupItem和MenuItem:表示菜单的组和子项的数据模型。 - AnimationUtils:包含了动画效果...
2. **MenuFragment.java**:菜单Fragment,包含了菜单项的UI和逻辑。 3. **MenuLayout.xml**:菜单布局文件,定义了菜单的结构和样式。 4. **GestureDetectorCompat**的使用:在Java代码中,用于识别滑动手势。 5. *...
- **MenuFragment**: 侧滑菜单的Fragment,包含菜单项和相应的点击事件处理。 - **ContentFragment**: 主界面的Fragment,显示应用的主要内容。 - **SlidingMenu类**: 实现滑动菜单的核心逻辑,包括触摸事件处理、...
在提供的`MenuFragment`文件中,我们可能会看到具体的菜单布局和相关逻辑。这个Fragment可能是侧滑菜单内容的承载者,通过工具类的初始化方法与主视图交互,实现侧滑效果。通过对这个Fragment的代码分析,我们可以...
先上一张图,看懂这张图后,才可以看下面的内容。 这张图的意思就是什么东西里面又包含了什么东西的意思,代码...第三步:新建一个fragment,取名为MenuFragment,它会自动生成MenuFragment.java和menu_fragemnt.xml