关闭

Android开发——用viewpage和fragment实现菜单栏

标签: android开发
175人阅读 评论(0) 收藏 举报
分类:

  我们之前也做过一种菜单栏,也是用fragment实现的,不过之前我们实现的方式和现在还是有区别的,之前我们Android开发——Fragment简单示例(二)制作一个应用菜单导航栏 是用线性布局做的,我们现在用viewpage实现,具体用哪一种那就看需求吧。


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.book.activity.MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/main_vp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <RadioGroup
        android:id="@+id/main_rg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="10dp"
        android:gravity="center_vertical"
        android:orientation="horizontal" 
        android:background="#cdcdcd">

        <RadioButton
            android:id="@+id/main_rb_addBook"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:gravity="center"
            android:button="@null"
            android:text="添加图书" 
            android:textColor="#FF0000"/>

        <RadioButton
            android:id="@+id/main_rb_deleteBook"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:gravity="center"
            android:button="@null"
            android:text="删除图书" />

        <RadioButton
            android:id="@+id/main_rb_changeBook"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:gravity="center"
            android:button="@null"
            android:text="修改图书" />

        <RadioButton
            android:id="@+id/main_rb_queryBook"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:gravity="center"
            android:button="@null"
            android:text="查询图书" />
    </RadioGroup>

</RelativeLayout>

fragment_change.xml(其他的几个和这个一样)

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改图书" />

</LinearLayout>

MainActivity.java

package com.book.activity;

import java.util.ArrayList;
import java.util.List;

import com.book.adapter.MainVpAdapter;
import com.book.fragment.AddFragment;
import com.book.fragment.ChangeFragment;
import com.book.fragment.DeleteFragment;
import com.book.fragment.QueryFragment;
import com.briup.bookManager.R;
import com.briup.bookManager.R.id;
import com.briup.bookManager.R.layout;
import com.briup.bookManager.R.menu;

import android.app.Activity;
import android.graphics.Color;
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.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends FragmentActivity {
	private ViewPager mVp_show;;
	private RadioGroup mRg_showRb;
	private RadioButton mRb_addBook, mRb_deleteBook, mRb_changeBook,
			mRb_queryBook;
	private Fragment mAddFragment, mDeleteFragment, mChangeFragment,
			mQueryFragment;
	private List<Fragment> mFragments;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 设置界面不显示
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);

		initView();
		initData();
		initAdapter();
		initListener();
	}

	private void initListener() {
		// TODO Auto-generated method stub
		mVp_show.addOnPageChangeListener(new OnPageChangeListener() {

			// 界面滑动状态改变监听
			@Override
			public void onPageScrollStateChanged(int arg0) {
				// TODO Auto-generated method stub

			}

			// 界面滑动监听
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {

			}

			// 当界面被选中被选中时监听
			@Override
			public void onPageSelected(int arg0) {
				switch (arg0) {
				case 0:
					mRb_addBook.setChecked(true);

					break;
				case 1:
					mRb_deleteBook.setChecked(true);
					break;
				case 2:
					mRb_changeBook.setChecked(true);
					break;
				case 3:
					mRb_queryBook.setChecked(true);
					break;
				default:
					break;
				}
			}
		});
		mRg_showRb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			// 当RadioGroup中radiobutton改变时触发事件
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				// jdk1.7后可以string
				switch (checkedId) {
				case R.id.main_rb_addBook:
					mVp_show.setCurrentItem(0);// 设置当前item
					reflash();
					mRb_addBook.setTextColor(Color.parseColor("#FF0000"));
					/*mRb_deleteBook.setTextColor(Color.parseColor("#000000"));
					mRb_changeBook.setTextColor(Color.parseColor("#000000"));
					mRb_queryBook.setTextColor(Color.parseColor("#000000"));*/
					break;
				case R.id.main_rb_deleteBook:
					mVp_show.setCurrentItem(1);
					reflash();
					//mRb_addBook.setTextColor(Color.parseColor("#000000"));
					mRb_deleteBook.setTextColor(Color.parseColor("#FF0000"));
					/*mRb_changeBook.setTextColor(Color.parseColor("#000000"));
					mRb_queryBook.setTextColor(Color.parseColor("#000000"));*/
					break;
				case R.id.main_rb_changeBook:
					mVp_show.setCurrentItem(2);
					reflash();
					/*mRb_addBook.setTextColor(Color.parseColor("#000000"));
					mRb_deleteBook.setTextColor(Color.parseColor("#000000"));*/
					mRb_changeBook.setTextColor(Color.parseColor("#FF0000"));
					/*mRb_queryBook.setTextColor(Color.parseColor("#000000"));*/
					break;
				case R.id.main_rb_queryBook:
					mVp_show.setCurrentItem(3);
					reflash();
					/*mRb_addBook.setTextColor(Color.parseColor("#000000"));
					mRb_deleteBook.setTextColor(Color.parseColor("#000000"));
					mRb_changeBook.setTextColor(Color.parseColor("#000000"));*/
					mRb_queryBook.setTextColor(Color.parseColor("#FF0000"));
					break;
				default:
					break;
				}
			}

			private void reflash() {
				mRb_addBook.setTextColor(Color.parseColor("#000000"));
				mRb_deleteBook.setTextColor(Color.parseColor("#000000"));
				mRb_changeBook.setTextColor(Color.parseColor("#000000"));
				mRb_queryBook.setTextColor(Color.parseColor("#000000"));
			}
			
		});
	}

	private void initAdapter() {
		mVp_show.setAdapter(new MainVpAdapter(getSupportFragmentManager(),
				mFragments));
	}

	private void initData() {
		mAddFragment = new AddFragment();
		mDeleteFragment = new DeleteFragment();
		mChangeFragment = new ChangeFragment();
		mQueryFragment = new QueryFragment();
		mFragments = new ArrayList<Fragment>();
		mFragments.add(mAddFragment);
		mFragments.add(mDeleteFragment);
		mFragments.add(mChangeFragment);
		mFragments.add(mQueryFragment);

	}

	private void initView() {
		mVp_show = (ViewPager) findViewById(R.id.main_vp);
		mRg_showRb = (RadioGroup) findViewById(R.id.main_rg);
		mRb_addBook = (RadioButton) findViewById(R.id.main_rb_addBook);
		mRb_deleteBook = (RadioButton) findViewById(R.id.main_rb_deleteBook);
		mRb_changeBook = (RadioButton) findViewById(R.id.main_rb_changeBook);
		mRb_queryBook = (RadioButton) findViewById(R.id.main_rb_queryBook);
	}

}


ChangeFragment.java(其他几个类似)

package com.book.fragment;

import com.briup.bookManager.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ChangeFragment extends Fragment{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view=inflater.inflate(R.layout.fragment_change, container,false);
		return view;
	}
}
然后基本上就实现了,我们就可以在每个fragment里面写东西了。

0
0
查看评论

Android-底部菜单实现(Fragment+ViewPage)

1.回顾   上篇已经了解过基本的思路 ,和推荐的使用Fragment+ViewPage实现 Android底部菜单tab 2.实现   (1)业务实现   (2)Adpater实现   (3)布局实现 3.效果图 4. 布局实现 &#...
  • LABLENET
  • LABLENET
  • 2015-09-18 10:02
  • 1965

使用ViewPage+Fragment模仿微信界面

实现效果: 左右滑动可切换界面,点击也可以实现 界面与碎片: 主界面: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=&...
  • BIHUA0918
  • BIHUA0918
  • 2017-06-15 15:09
  • 171

Android-底部菜单Tabs 三种实现方式(ViewPager,Fragment,ViewPage+Fragment)

1.回顾     在写文章来记录自己的学习的时候,没有录制 gif 效果图,感觉整个人都不好了,还好 通过摸索可以在ubuntu 下 制作gif 动态图 ,从而可以分享给大家了; 2.重点   (1)ViewPage 实现 底部菜单 tab  ...
  • LABLENET
  • LABLENET
  • 2015-09-18 09:15
  • 2587

使用ViewPager+Fragment实现选项卡切换效果

显示效果: 实现过程: 1.创建3个选项卡中的内容,即三个Fragment。 这里仅贴出其中一个: Tab2: [java] view plaincopy package com.example.viewpagerdemo3; &...
  • u013776390
  • u013776390
  • 2015-01-28 18:39
  • 620

底部菜单栏之Fragment+FragmentHost实现

一、实现效果图 二、项目工程结构   三、详细代码编写   1、主tab布局界面,main_tab_layout: [html] view plain&#...
  • zhouboyu
  • zhouboyu
  • 2016-05-08 02:56
  • 2097

Android中ViewPage+Fragment的预加载的取消

在最近的项目中,用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方。例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加...
  • qq_21036939
  • qq_21036939
  • 2016-01-27 11:18
  • 1804

Android记录6--ViewPage+Fragment的使用例子

Android记录6--ViewPage+Fragment的使用例子 2013年9月6日 Fragment学习 Fragment这个东西,我到现在才接触到,之前没有用到过,关于Fragment这个东西在官方文档已经介绍了非常清楚了,我还特地转载了官方API的中文翻译,在这我就不浪费口舌了。简单来...
  • wwj_748
  • wwj_748
  • 2013-09-06 15:42
  • 36610

Fragment+ViewPage一步步实现底部导航栏。

首先说下这个demo的结构吧! 1 . 用到了Fragment+ViewPager 2 . 底部用了单选按钮实现的。 再来看下代码的具体实现: 1.新建一个project的,名字自己随意。 2.编写activity_main.xml &amp;lt;LinearLayout...
  • qq_35152260
  • qq_35152260
  • 2017-03-19 16:08
  • 1327

viewpage+fragment的生命周期问题

最近想通过viewpager+fragment来实现类似于手机淘宝里面我的订单功能: 在这里面,我每次点击相关viewpager的导航时,实现如下功能: 1:显示一个progressDialog。 2:从网络上加载最新数据,加载完成后关闭progressDialog,显示数据或者先(显示没有相关数...
  • adfghjkl
  • adfghjkl
  • 2015-08-06 10:52
  • 1610

android viewpager+fragment与利用viewpager滑动分页小技巧

public class LcVpFragment extends Fragment{ @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method st...
  • aojiancc2
  • aojiancc2
  • 2014-10-23 22:58
  • 1571
    个人资料
    • 访问:47426次
    • 积分:1741
    • 等级:
    • 排名:千里之外
    • 原创:125篇
    • 转载:35篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论