Android开发——Fragment简单示例(二)制作一个应用菜单导航栏

来源:互联网 发布:淘宝代工酒 编辑:程序博客网 时间:2024/06/01 08:16

  我们用的手机app是不是基本上每个打开来在底部那栏都有一个起着导航作用的菜单?我们的Fragment第二个示例就是做一个这样的导航栏。这个代码量比较大,解释就放在注释中了,不多说,上代码。

想想还是先上图比较合适。

MainActivity.java

package com.example.fragment;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;public class MainActivity extends FragmentActivity implements OnClickListener{private ImageView tuijian;private ImageView daohang;private ImageView faxian;private ImageView wode;private ImageView lixian;FragmentManager fragmentManager;private TuiJianFragment tuiJianFragment;private DaoHangFragment daoHangFragment;private FaXianFragment faXianFragment;private WoDeFragment woDeFragment;private LiXianGuanKanFragment liXianGuanKanFragment;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tuijian=(ImageView)findViewById(R.id.tuijian);daohang=(ImageView)findViewById(R.id.daohang);faxian=(ImageView)findViewById(R.id.faxian);wode=(ImageView)findViewById(R.id.wode);lixian=(ImageView)findViewById(R.id.lixian);fragmentManager=getSupportFragmentManager();tuijian.setOnClickListener(this);daohang.setOnClickListener(this);faxian.setOnClickListener(this);wode.setOnClickListener(this);lixian.setOnClickListener(this);defaultClick();//设置默认}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubclearClick();switch (v.getId()) {case R.id.tuijian:tuijian.setImageResource(R.drawable.tuijian2);selectFragment(0);break;case R.id.daohang:daohang.setImageResource(R.drawable.daohang2);selectFragment(1);break;case R.id.faxian:faxian.setImageResource(R.drawable.faxian2);selectFragment(2);break;case R.id.wode:wode.setImageResource(R.drawable.wode2);selectFragment(3);break;case R.id.lixian:lixian.setImageResource(R.drawable.lixian2);selectFragment(4);break;default:break;}}private void selectFragment(int index) {// TODO Auto-generated method stub//开启事物FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();//清除上一个Fragment//removeFragment(fragmentTransaction);//hiddenFragment(fragmentTransaction);/* * 我们通过判断就不用每一次新建Fragment */switch (index) {case 0:/*tuiJianFragment=new TuiJianFragment();fragmentTransaction.add(R.id.fl, tuiJianFragment);*/if (tuiJianFragment==null) {tuiJianFragment=new TuiJianFragment();}fragmentTransaction.replace(R.id.fl, tuiJianFragment);break;case 1:/*daoHangFragment=new DaoHangFragment();fragmentTransaction.add(R.id.fl, daoHangFragment);*/if (daoHangFragment==null) {daoHangFragment=new DaoHangFragment();}fragmentTransaction.replace(R.id.fl, daoHangFragment);break;case 2:/*faXianFragment=new FaXianFragment();fragmentTransaction.add(R.id.fl, faXianFragment);*/if (faXianFragment==null) {faXianFragment=new FaXianFragment();}fragmentTransaction.replace(R.id.fl, faXianFragment);break;case 3:/*woDeFragment=new WoDeFragment();fragmentTransaction.add(R.id.fl, woDeFragment);*/if (woDeFragment==null) {woDeFragment=new WoDeFragment();}fragmentTransaction.replace(R.id.fl, woDeFragment);break;case 4:/*liXianGuanKanFragment=new LiXianGuanKanFragment();fragmentTransaction.add(R.id.fl, liXianGuanKanFragment);*/if (liXianGuanKanFragment==null) {liXianGuanKanFragment=new LiXianGuanKanFragment();}fragmentTransaction.replace(R.id.fl, liXianGuanKanFragment);break;default:break;}fragmentTransaction.commit();}//隐藏Fragmentprivate void hiddenFragment(FragmentTransaction fragmentTransaction) {// TODO Auto-generated method stubif (tuiJianFragment!=null) {fragmentTransaction.hide(tuiJianFragment);}if (daoHangFragment!=null) {fragmentTransaction.hide(daoHangFragment);}if (faXianFragment!=null) {fragmentTransaction.hide(faXianFragment);}if (woDeFragment!=null) {fragmentTransaction.hide(woDeFragment);}if (liXianGuanKanFragment!=null) {fragmentTransaction.hide(liXianGuanKanFragment);}}//清除上一次fragmentprivate void removeFragment(FragmentTransaction fragmentTransaction) {// TODO Auto-generated method stubif (tuiJianFragment!=null) {fragmentTransaction.remove(tuiJianFragment);}if (daoHangFragment!=null) {fragmentTransaction.remove(daoHangFragment);}if (faXianFragment!=null) {fragmentTransaction.remove(faXianFragment);}if (woDeFragment!=null) {fragmentTransaction.remove(woDeFragment);}if (liXianGuanKanFragment!=null) {fragmentTransaction.remove(liXianGuanKanFragment);}}//默认进入private void defaultClick() {// TODO Auto-generated method stubtuijian.setImageResource(R.drawable.tuijian2);selectFragment(0);}//清除点击事件private void clearClick() {// TODO Auto-generated method stubtuijian.setImageResource(R.drawable.tuijian1);daohang.setImageResource(R.drawable.daohang1);faxian.setImageResource(R.drawable.faxian1);wode.setImageResource(R.drawable.wode1);lixian.setImageResource(R.drawable.lixian1);}}
TuiJianActivity.java

//这是推荐的Fragment,其他四个和这个类似,就不多写了。

package com.example.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class TuiJianFragment extends Fragment{@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view=inflater.inflate(R.layout.tuijian, container,false);return view;}}
activity_main.xml

<LinearLayout 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"    android:orientation="vertical"    android:background="#FFFFFF"    tools:context="com.example.fragment.MainActivity" >    <FrameLayout         android:id="@+id/fl"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#DCDCDC"        android:layout_weight="1"/>    <View        android:layout_width="match_parent"        android:layout_height="0.8dp"        android:layout_marginLeft="15dp"        android:layout_marginRight="15dp"        android:background="#ECECEC" />    <LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#FFFFFF">        <ImageView             android:id="@+id/tuijian"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:src="@drawable/tuijian1"/>        <ImageView             android:id="@+id/daohang"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/daohang1"/>        <ImageView             android:id="@+id/faxian"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/faxian1"/>        <ImageView             android:id="@+id/wode"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/wode1"/>        <ImageView             android:id="@+id/lixian"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/lixian1"/>    </LinearLayout></LinearLayout>
tuijian.xml

//这个也只写一个,其他的照着搬。

<?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:orientation="vertical" >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="推荐"        android:textSize="80dp"/></RelativeLayout>
是不是觉得我们离一个真正的App越来越近了呢?

0 0
原创粉丝点击