- 浏览: 600145 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
Fragment,FragmentManager和FragmentTransaction
Fragment类
Fragment布局文件
Fragment类
package com.example.mainframework02.fragment; import android.annotation.SuppressLint; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @SuppressLint("NewApi") public class MainTab01 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(com.example.mainframework02.R.layout.main_tab_01, container, false); } }
Fragment布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/id_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </FrameLayout> <include layout="@layout/bottom_bar"/> </LinearLayout>
package com.example.mainframework02.fragment; import android.annotation.SuppressLint; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.LinearLayout; import com.example.mainframework02.R; public class FragmentMainActivity extends Activity implements OnClickListener { // 声明四个Fragment private MainTab02 mTab02; private MainTab01 mTab01; private MainTab03 mTab03; private MainTab04 mTab04; /** * 底部四个按钮 */ private LinearLayout mTabBtnWeixin; private LinearLayout mTabBtnFrd; private LinearLayout mTabBtnAddress; private LinearLayout mTabBtnSettings; /** * 用于对Fragment进行管理 */ private FragmentManager fragmentManager; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); initViews(); fragmentManager = getFragmentManager(); // 初始化时加载第一个 setTabSelection(0); } // 初始化页面组件信息 private void initViews() { mTabBtnWeixin = (LinearLayout) findViewById(R.id.id_tab_bottom_weixin); mTabBtnFrd = (LinearLayout) findViewById(R.id.id_tab_bottom_friend); mTabBtnAddress = (LinearLayout) findViewById(R.id.id_tab_bottom_contact); mTabBtnSettings = (LinearLayout) findViewById(R.id.id_tab_bottom_setting); mTabBtnWeixin.setOnClickListener(this); mTabBtnFrd.setOnClickListener(this); mTabBtnAddress.setOnClickListener(this); mTabBtnSettings.setOnClickListener(this); } //点击时加载对应的Fragment @Override public void onClick(View v) { switch (v.getId()) { case R.id.id_tab_bottom_weixin: setTabSelection(0); break; case R.id.id_tab_bottom_friend: setTabSelection(1); break; case R.id.id_tab_bottom_contact: setTabSelection(2); break; case R.id.id_tab_bottom_setting: setTabSelection(3); break; default: break; } } /** * 根据传入的index参数来设置选中的tab页。 * */ @SuppressLint("NewApi") private void setTabSelection(int index) { // 重置按钮 resetBtn(); // 开启一个Fragment事务 FragmentTransaction transaction = fragmentManager.beginTransaction(); // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况 hideFragments(transaction); switch (index) { case 0: // 当点击了消息tab时,改变控件的图片和文字颜色 ((ImageButton) mTabBtnWeixin .findViewById(R.id.btn_tab_bottom_weixin)) .setImageResource(R.drawable.tab_weixin_pressed); if (mTab01 == null) { // 如果MessageFragment为空,则创建一个并添加到界面上 mTab01 = new MainTab01(); transaction.add(R.id.id_content, mTab01); } else { // 如果MessageFragment不为空,则直接将它显示出来 transaction.show(mTab01); } break; case 1: // 当点击了消息tab时,改变控件的图片和文字颜色 ((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend)) .setImageResource(R.drawable.tab_find_frd_pressed); if (mTab02 == null) { // 如果MessageFragment为空,则创建一个并添加到界面上 mTab02 = new MainTab02(); transaction.add(R.id.id_content, mTab02); } else { // 如果MessageFragment不为空,则直接将它显示出来 transaction.show(mTab02); } break; case 2: // 当点击了动态tab时,改变控件的图片和文字颜色 ((ImageButton) mTabBtnAddress .findViewById(R.id.btn_tab_bottom_contact)) .setImageResource(R.drawable.tab_address_pressed); if (mTab03 == null) { // 如果NewsFragment为空,则创建一个并添加到界面上 mTab03 = new MainTab03(); transaction.add(R.id.id_content, mTab03); } else { // 如果NewsFragment不为空,则直接将它显示出来 transaction.show(mTab03); } break; case 3: // 当点击了设置tab时,改变控件的图片和文字颜色 ((ImageButton) mTabBtnSettings .findViewById(R.id.btn_tab_bottom_setting)) .setImageResource(R.drawable.tab_settings_pressed); if (mTab04 == null) { // 如果SettingFragment为空,则创建一个并添加到界面上 mTab04 = new MainTab04(); transaction.add(R.id.id_content, mTab04); } else { // 如果SettingFragment不为空,则直接将它显示出来 transaction.show(mTab04); } break; } transaction.commit(); } /** * 清除掉所有的选中状态。 */ private void resetBtn() { ((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin)) .setImageResource(R.drawable.tab_weixin_normal); ((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend)) .setImageResource(R.drawable.tab_find_frd_normal); ((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact)) .setImageResource(R.drawable.tab_address_normal); ((ImageButton) mTabBtnSettings .findViewById(R.id.btn_tab_bottom_setting)) .setImageResource(R.drawable.tab_settings_normal); } /** * 将所有的Fragment都置为隐藏状态。 * * @param transaction * 用于对Fragment执行操作的事务 */ @SuppressLint("NewApi") private void hideFragments(FragmentTransaction transaction) { if (mTab01 != null) { transaction.hide(mTab01); } if (mTab02 != null) { transaction.hide(mTab02); } if (mTab03 != null) { transaction.hide(mTab03); } if (mTab04 != null) { transaction.hide(mTab04); } } }
- MainFramework02.rar (1.5 MB)
- 下载次数: 5
发表评论
文章已被作者锁定,不允许评论。
-
android BaseActivity与BaseFragment的封装
2016-05-19 15:06 10401 概述 多模块Activity+多Fragment 是开发 ... -
android ScrollView常用属性
2016-05-09 09:17 729android:scrollbars 设置滚动条显示。none ... -
android RecyclerView使用及详解
2016-05-04 10:35 29251.前言 话说RecyclerView已经面市很久,也在很多 ... -
android DialogFragment 创建对话框(官方推荐)
2016-04-29 14:22 9281、 概述 DialogFragment在android 3. ... -
android Intent Flags及Task相关属性
2016-04-26 09:15 644task是一个具有栈结构的容器,可以放置多个Activity实 ... -
android SQLite具体实例应用详解(SQLiteOpenHelper)
2016-04-18 19:24 841上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们 ... -
android SQLite3常用命令&语法
2016-04-18 19:01 646sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常 ... -
android View绘制相关问题总结
2016-03-28 19:27 7071.View的绘制流程分几步 ... -
android Handler Looper MessageQueue机制的原理
2016-03-22 21:09 791andriod提供了Handler和Looper来满足线程间的 ... -
android Bitmap,BitmapFactory类图像处理
2016-03-16 16:28 2394BitMap代表一张位图,扩展名可以是.bmp或者.dib。 ... -
android 三类菜单(Option) (Context) (SubMenu)学习
2016-03-14 15:23 950在Android系统中,菜单可以分为三类:选项菜单(Optio ... -
android Sqlite数据库对象模型ORMLite框架学习
2016-03-11 15:24 731在Android项目中或多或少的都会使用数据库,为了提高我们的 ... -
android AsyncTask<参数,进度值类型,返回类型>学习
2016-03-10 14:45 1206AsyncTask和Handler对比 1 ... -
android 远程图片获取和本地缓存
2016-03-10 14:32 804概述 对于客户端——服 ... -
android onSaveInstanceState和onRestoreInstanceState学习
2016-03-10 10:08 827Android中的activity通过onSaveInst ... -
android Fragment生命周期和回退栈学习以及Fragment之间通信
2016-03-10 09:31 1555会涉及到Fragment如何产生,什么是Fragment,Fr ... -
android LruCache内存缓存学习(重写sizeOf方法)
2016-03-09 19:25 1090什么是缓存? 缓存技术原理就是把用户访问的所有对象看作一个全 ... -
android ListView中的convertView缓存及使用
2016-03-09 19:12 1738一、复用convertView 首先讲下ListView的原 ... -
android 从资源角度谈Android代码内存优化
2016-03-09 18:54 742开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么 ... -
android startActivityForResult和setResult详情及Demo
2016-03-09 08:56 1074startActivityForResult与startAct ...
相关推荐
在标题“Android Fragment底部点击切换标签以及左右滑动切换”中,我们讨论的是如何在应用底部通过标签栏实现Fragment的切换,并结合ViewPager进行滑动切换。 首先,让我们深入理解Fragment。Fragment可以独立存在...
"Android实现底部切换标签,切换Fragment"这个主题涉及了如何在Android应用中创建一个底部导航栏,并通过点击标签来切换不同的Fragment。下面将详细解释这一过程。 首先,我们需要在布局文件中添加一个Bottom...
Android 实现点击按钮切换不同的 Fragment 布局是 Android 应用程序中常见的一种交互方式,通过点击按钮可以切换到不同的 Fragment 布局,从而实现不同的功能。下面将详细介绍 Android 实现点击按钮切换不同的 ...
为了响应用户的点击事件并切换Fragment,我们需要在Activity中添加逻辑。首先,为BottomNavigationView设置一个NavigationItemSelectedListener,然后根据点击的菜单项ID动态替换对应的Fragment。以下是一个简单的...
Android使用Fragment实现底部tab选型卡切换的功能,是目前主流APP的主要布局方法,兼容较新的android版本,是android中的Tabhost的改进,主要改善和解决了MainActivity.java和activity_main中的代码冗余和运行慢的...
在本案例中,我们将探讨如何使用`Fragment`来实现在底部菜单栏切换不同内容的功能,类似于QQ空间的应用。 首先,让我们理解`Fragment`的基本概念。`Fragment`是Activity的一部分,它可以有自己的视图层次结构、生命...
"Android底部按钮变换状态切换页面"这一主题聚焦于如何实现当用户点击底部导航栏按钮时,相应地切换显示不同的内容页面。下面将详细介绍这个过程,以及涉及到的相关技术知识点。 首先,我们需要理解Android的布局...
本教程将深入探讨如何在Android应用中使用Fragment,以及如何进行嵌套使用,特别是在创建底部菜单和顶部菜单的场景下,类似微信和QQ的分页菜单设计。 1. **Fragment的基本使用**: - 创建Fragment:通过继承...
在Android应用开发中,底部菜单栏(Bottom Navigation Bar)是一种常见的UI设计,它允许用户在应用的几个主要功能之间快速切换。本教程将详细介绍如何在Android项目中集成使用Fragment和Fragment + ViewPager的底部...
综上所述,Android底部切换标签的实现涉及到Activity与Fragment的协作、BottomNavigationView的使用以及可能的自定义扩展。通过熟练掌握这些知识点,你可以创建出符合用户习惯且具有良好用户体验的Android应用。
Android ViewPager+Fragment超高仿微信主界面(带底部图标切换动画)Android ViewPager+Fragment超高仿微信主界面(带底部图标切换动画)Android ViewPager+Fragment超高仿微信主界面(带底部图标切换动画)
4. **EventBus 或 LiveData**:为了在底部导航栏的各个Fragment之间进行通信,我们可以使用事件总线库如EventBus,或者Android架构组件提供的LiveData。这些工具可以帮助我们传递数据,使得不同Fragment能根据用户...
在Android开发中,Tab底部切换是一种常见的用户界面设计,它允许用户通过点击底部的标签来在不同的内容页面之间切换。这种设计模式提高了应用的可导航性,使得用户能轻松访问应用的主要功能。以下是对"android Tab...
综上所述,为了实现“Android ViewPager实现圆点导航左右滑动和Fragment页面切换”的功能,你需要创建一个自定义`PagerAdapter`,用`Fragment`填充`ViewPager`,并实现`OnPageChangeListener`来跟踪页面的滑动。...
Fragment的管理是一项关键任务,特别是在处理屏幕旋转、内存紧张等场景时,如何有效地切换Fragment并避免不必要的销毁与重建至关重要。标题"android fragment切换防止destroy"正是针对这一问题展开讨论。 在Android...
在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的用户界面元素,用于在多个主要功能之间切换。本文将详细解析如何实现“底部导航栏凸出点击”效果,参考了博客《Android 底部导航栏凸出点击》...
总结,实现Android底部Fragment Tab凸出效果需要对Fragment、BottomNavigationView有深入的理解,并能够进行自定义布局和事件处理。这不仅可以提升应用的视觉效果,还能优化用户体验。通过学习和实践这个Demo,...
在Android应用开发中,底部状态栏切换是一种常见的交互设计,用于在不同的内容区域之间进行导航。以下是两种常见的实现方式的详细说明: 1. **TabLayout + Fragment + ViewPager 实现** 这种方法通常用于创建多...
本文将深入探讨如何使用Fragment配合底部菜单,通过show()和hide()方法来切换Fragment并保持其状态。 首先,让我们理解Fragment的基本概念。Fragment是一个可以包含UI组件的部分,它可以独立于Activity存在,也可以...
在Android应用开发中,设计一个用户友好的底部菜单是至关重要的,它可以帮助用户轻松地在应用的不同功能之间切换。本文将详细介绍如何使用RadioButton结合Fragment来实现这样一个底部菜单,这是一种高效且灵活的方法...