Android 开发Fragment类似微信主页切换
来源:互联网 发布:罗技 知乎 编辑:程序博客网 时间:2024/05/18 01:12
Fragment(碎片)
Fragment可以实现在一个Activity下显示多个视图,类似于微信首页底部栏切换。
一、在需要用到Fragment视图中的Activity
public class NewsActivity extends FragmentActivity implements OnClickListener { // 底部菜单3个Linearlayout private LinearLayout message; private LinearLayout fair; private LinearLayout question; // 3个Fragment private Fragment first_f; private Fragment two_f; private Fragment three_f; private FragmentManager manager; private FragmentTransaction transaction; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_news); initView(); // 初始化控件 initEvent();// 初始化按钮事件 // 初始化并设置当前Fragment initFragment(0); } private void initFragment(int index) { // 由于是引用了V4包下的Fragment,所以这里的管理器要用getSupportFragmentManager获取 FragmentManager fragmentManager = getSupportFragmentManager(); // 开启事务 FragmentTransaction transaction = fragmentManager.beginTransaction(); // 隐藏所有Fragment hideFragment(transaction); switch (index) { case 0: if (first_f == null) { first_f = new NewsOne(); //NewsOne是fragment视图1 transaction.add(R.id.fl_content, first_f); } else { transaction.show(first_f); } break; case 1: if (two_f == null) { two_f = new NewsTwo(); //NewsTwo是fragment视图2 transaction.add(R.id.fl_content, two_f); } else { transaction.show(two_f); } break; case 2: if (three_f == null) { three_f = new NewsThree(); //Newsthree是fragment视图3 transaction.add(R.id.fl_content, three_f); } else { transaction.show(three_f); } break; default: break; } // 提交事务 transaction.commit(); } //隐藏Fragment private void hideFragment(FragmentTransaction transaction) { if (first_f != null) { transaction.hide(first_f); } if (two_f != null) { transaction.hide(two_f); } if (three_f != null) { transaction.hide(three_f); } } private void initEvent() { // 设置按钮监听 message.setOnClickListener(this); fair.setOnClickListener(this); question.setOnClickListener(this); } private void initView() { // 底部菜单4个ImageView this.message = (LinearLayout) findViewById(R.id.message); this.fair = (LinearLayout) findViewById(R.id.fair); this.question = (LinearLayout) findViewById(R.id.question); } @Override public void onClick(View v) { // 在每次点击后将所有的底部按钮(ImageView,TextView)颜色改为灰色,然后根据点击着色 restartButton(); // ImageView和TetxView置为绿色,页面随之跳转 switch (v.getId()) { case R.id.message: message.setBackgroundResource(R.drawable.msg_after_bg); initFragment(0); break; case R.id.fair: fair.setBackgroundResource(R.drawable.msg_after_bg); initFragment(1); break; case R.id.question: question.setBackgroundResource(R.drawable.msg_after_bg); initFragment(2); break; default: break; } } private void restartButton() { // ImageView置为灰色 message.setBackgroundResource(R.drawable.msg_before_bg); fair.setBackgroundResource(R.drawable.msg_before_bg); question.setBackgroundResource(R.drawable.msg_before_bg); }}
二、对应的Fragment视图NewsOne、NewsTwo、NewsThree在对应的Fragment中:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_news_three, container, false); return view; }
阅读全文
1 0
- Android 开发Fragment类似微信主页切换
- 使用Fragment 写 微信类似的页面切换
- viewpager+fragment,类似微信
- android 实现类似微信滑动切换界面
- tab微信主页切换1
- Android 微信主页面
- 用Fragment实现类似微信效果
- android开发类似微信列表向左滑动按钮操作
- Android实现类似微信的延迟加载的Fragment——LazyFragment
- Android实现类似微信的延迟加载的Fragment——LazyFragment
- Android实现类似微信的延迟加载的Fragment——LazyFragment
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- android ViewPager加Fragment实现导航加左右滑动(类似QQ、微信)
- Android实现类似微信的延迟加载的Fragment——LazyFragment
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- 用Fragment实现微信Tab切换
- Android 模仿微信主页面
- 快速开发android应用4-使用viewpager+fragment构建主页
- java 面试题----Integer的“==”比较
- 《effective modern c++》笔记之c++类型推导(1)
- Android 事件分发和 View 的滑动冲突
- springboot+javamail的简单使用
- jni.h头文件详解(二)
- Android 开发Fragment类似微信主页切换
- 使用Python开发SQLite代理服务器
- Android 分析android.view.WindowLeaked错误
- 国际化NSLocalizedString(续)
- 使用mybatis实现数据访问
- Android视频硬解稳定性问题探讨和处理
- PAT (Advanced Level) Practise 1082 Read Number in Chinese (25)
- JNI线程
- JZOJ1322. 硬币游戏