android 开发 实例 下部主导航(1)

1.使用LinearLayout 底部布局+imageView 实现

底部四个主导航页面 布局文件  activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:id="@+id/container"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    tools:context="com.example.tastelibrary.MainActivity"  
    tools:ignore="MergeRootFrame" >  
  
    <FrameLayout  
        android:id="@+id/fl_content"  
        android:layout_width="match_parent"  
        android:layout_height="0dp"  
        android:layout_weight="1" >  
    </FrameLayout>  
  
    <LinearLayout  
        android:id="@+id/ll"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:orientation="horizontal" >  
  
        <LinearLayout  
            android:id="@+id/ll_recipe"  
            android:layout_width="0dp"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:gravity="center"  
            android:orientation="vertical" >  
  
            <ImageView  
                android:id="@+id/image_recipe"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:background="@drawable/recipe_btn_selector" />  
            
        </LinearLayout>  
  
        <LinearLayout  
            android:id="@+id/ll_kitchen"  
            android:layout_width="0dp"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:gravity="center"  
            android:orientation="vertical" >  
  
            <ImageView  
                android:id="@+id/image_kitchen"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:background="@drawable/kitchen_btn_selector" />  
        </LinearLayout>  
  
        <LinearLayout  
            android:id="@+id/ll_find"  
            android:layout_width="0dp"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:gravity="center"  
            android:orientation="vertical" >  
  
              <ImageView  
                android:id="@+id/image_find"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:background="@drawable/find_btn_selector" />  
        </LinearLayout>  
  
        <LinearLayout  
            android:id="@+id/ll_user"  
            android:layout_width="0dp"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:gravity="center"  
            android:orientation="vertical" >  
  
            <ImageView  
                android:id="@+id/image_user"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:background="@drawable/user_btn_selector" />  
        </LinearLayout>  
    </LinearLayout>  
  
</LinearLayout>

MainActivity

package com.example.tastelibrary;  
  
import android.support.v7.app.ActionBarActivity;  
import android.support.v7.app.ActionBar;  
import android.support.v4.app.Fragment;  
import android.support.v4.app.FragmentManager;  
import android.support.v4.app.FragmentTransaction;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.view.ViewGroup;  
import android.widget.ImageView;  
import android.widget.LinearLayout;  
import android.os.Build;  
  
public class MainActivity extends ActionBarActivity  implements OnClickListener{  
     private LinearLayout ll_recipe;    
        private LinearLayout ll_kitchen;    
        private LinearLayout ll_find;    
        private LinearLayout ll_user;    
        private ImageView image_home;    
        private ImageView image_friends;    
        private ImageView image_message;    
        private ImageView image_more;    
        //Fragment管理器    
        private FragmentManager fm = this.getSupportFragmentManager();    
        private FragmentTransaction ft;    
        private RecipeFragment fragmentPage1;    
        private FindFragment fragmentPage2;    
        private KitchenFragment fragmentPage3;    
        private UserFragment fragmentPage4;    
        ActionBar myActionBar;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
      myActionBar=getSupportActionBar();  
        initView();    
        //开始事务(每次改变Fragment管理器之后都要提交)    
        ft = fm.beginTransaction();    
        home();    
        //提交事务    
        ft.commit();   
  
    }  
    private void initView(){    
        ll_recipe = (LinearLayout)findViewById(R.id.ll_recipe);    
        ll_kitchen = (LinearLayout)findViewById(R.id.ll_kitchen);    
        ll_find = (LinearLayout)findViewById(R.id.ll_find);    
        ll_user = (LinearLayout)findViewById(R.id.ll_user);    
            
        image_home = (ImageView)findViewById(R.id.image_recipe);    
        image_friends = (ImageView)findViewById(R.id.image_kitchen);    
        image_message = (ImageView)findViewById(R.id.image_find);    
        image_more = (ImageView)findViewById(R.id.image_user);    
            
        ll_recipe.setOnClickListener(this);    
        ll_kitchen.setOnClickListener(this);    
        ll_find.setOnClickListener(this);    
        ll_user.setOnClickListener(this);    
        ll_recipe.setSelected(true);    
        image_home.setSelected(true);    
            
    }    
  
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
          
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.main, menu);  
        return true;  
    }  
  
    @Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
        int id = item.getItemId();  
        if (id == R.id.action_settings) {  
            return true;  
        }  
        return super.onOptionsItemSelected(item);  
    }  
  
  
    @Override  
    public void onClick(View v) {  
         //每次点击时都需要重新开始事务    
        ft = fm.beginTransaction();    
        //把显示的Fragment隐藏    
        setSelected();    
        switch (v.getId()) {    
        case R.id.ll_recipe:    
            ll_recipe.setSelected(true);    
            image_home.setSelected(true);    
            home();    
            break;    
        case R.id.ll_kitchen:    
            ll_kitchen.setSelected(true);    
            image_friends.setSelected(true);    
            friend();    
                
            break;    
        case R.id.ll_find:    
            ll_find.setSelected(true);    
            image_message.setSelected(true);    
            message();    
            break;    
        case R.id.ll_user:    
            ll_user.setSelected(true);    
            image_more.setSelected(true);    
            more();    
            break;    
        }    
        ft.commit();    
    }  
    /** 
     * 设置每个按钮是否被选中 
     */  
    private void setSelected(){    
        ll_recipe.setSelected(false);    
        ll_kitchen.setSelected(false);    
        ll_find.setSelected(false);    
        ll_user.setSelected(false);    
        image_home.setSelected(false);    
        image_friends.setSelected(false);    
        image_message.setSelected(false);    
        image_more.setSelected(false);    
        if(fragmentPage1 != null){    
            //隐藏Fragment    
            ft.hide(fragmentPage1);    
        }    
        if(fragmentPage2 != null){    
            ft.hide(fragmentPage2);    
        }    
        if(fragmentPage3 != null){    
            ft.hide(fragmentPage3);    
        }    
        if(fragmentPage4 != null){    
            ft.hide(fragmentPage4);    
        }    
    }    
    private void home(){    
        if(fragmentPage1 == null){    
            fragmentPage1 = new RecipeFragment();    
            /*添加到Fragment管理器中  
            这里如果用replace,  
            当每次调用时都会把前一个Fragment给干掉,  
            这样就导致了每一次都要创建、销毁,  
            数据就很难保存,用add就不存在这样的问题了,  
            当Fragment存在时候就让它显示,不存在时就创建,  
            这样的话数据就不需要自己保存了,  
            因为第一次创建的时候就已经保存了,  
            只要不销毁一直都将存在*/    
            ft.add(R.id.fl_content, fragmentPage1);    
        }else{    
            //显示Fragment    
            ft.show(fragmentPage1);    
        }    
    }    
    private void friend(){    
        if(fragmentPage2 == null){    
            fragmentPage2 = new FindFragment();    
            ft.add(R.id.fl_content, fragmentPage2);    
        }else{    
            ft.show(fragmentPage2);    
        }    
            
    }    
    private void message(){    
        if(fragmentPage3 == null){    
            fragmentPage3 = new KitchenFragment();    
            ft.add(R.id.fl_content, fragmentPage3);    
        }else{    
            ft.show(fragmentPage3);    
        }    
            
    }    
    private void more(){    
        if(fragmentPage4 == null){    
            fragmentPage4 = new UserFragment();    
            ft.add(R.id.fl_content, fragmentPage4);    
        }else{    
            ft.show(fragmentPage4);    
        }    
            
    }    
}
时间: 2024-10-05 11:56:47

android 开发 实例 下部主导航(1)的相关文章

Android开发实例之多点触控程序

智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲解多点触控程序的实现. 首先来了解一下Android中多点触控的原理. Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouch技术,对于网页缩放.手势操作上有更好

Android开发实例之miniTwitter登录界面的实现

原文: http://www.jizhuomi.com/android/example/134.html 本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面. miniTwitter登录界面效果图 先贴上最终要完成的效果图: miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearL

android for vs (二)visual studio android 开发实例

android for vs (一)visual studio android 开发实例 相关 vs 的 android 开发环境安装配置可以看我的前一篇文章 这里使用 vs2010 自带的实例进行开发与调试 一.新建项目 文件 -> 新建 -> 项目,我们选择Blank App(Android)项目,如下图 二.项目目录结构 1)AndroidManifest.xml 项目配置描述文件,项目名.图标.运行程序需要的权限都可以在这里声明 2)Main.axml 界面布局及元素定义文件 3)Ma

Android开发之自定义局部导航菜单

如今,要实现导航功能方案有很多.比如: 1.用3.0+自带的Toolbar + Fragment导航 . 2.用Tabhost实现导航.小弟学浅,就只用过这两种方案实现导航. 但是这两种方案都有一个很明显的弊端:导航的位置太过于固定了.比如Toolbar的就只能在标题栏处(ps:源码修改大神跳过).还有Tabhost,虽然自定义Tabhost比直接继承TabActivity更加灵活,但是却没有选项切换动画(ps:也许是我没发现). ? 有时候,我们仅仅是想在一个画面的一角处,贴上一个导航,用于切

Android开发实例-健康食谱应用(一)

转载请注明出处:http://blog.csdn.net/einarzhang/article/details/44774635 本系列文章的重点是如何使用Android开发一个简单的健康食谱软件.使用了以下相关技术中见例如: 提供GridView和ListView的基本使用 利用universal-image-loader异步载入网络图片 通过HttpClient获取网络http请求数据 滑动分页载入数据 软件所用的全部数据均来源于http://doc.yi18.net/cookwendang

配置好的android开发环境 带实例---Android 开发实例教程一

一.版本说明 JDK:jdk1.7.0_15 ADT:v22.3.0-887826 已经配置好的开发环境(jdk1.7+adt22+api19+eclipse4.2.1)平台,打开即可用,同时workspace已经存在可以直接运行的实例(仿美团.淘宝格式). 真真的方便快捷. 二.下载地址 链接:http://pan.baidu.com/s/1bcy7O 密码:mo8a  好用别忘点赞,方便大家使用 三.配置说明 1.adt-bundle-windows-x86-20131030 解压到D盘根目

Android开发实例-健康食谱应用(二)

转载请注明出处:http://blog.csdn.net/einarzhang/article/details/44806975 本系列文章主要介绍如何利用Android开发一个简单的健康食谱软件.用到的相关技术如下所示: 提供GridView和ListView的基本使用 利用universal-image-loader异步加载网络图片 通过HttpClient获取网络http请求数据 滑动分页加载数据 软件所用的所有数据均来源于http://doc.yi18.net/cookwendang提供

Android开发实例透明效果设置方法

没什么android开发经验的朋友来说,实现透明效果是有一定难度的,我看见麦子学院android开发视频上面讲了三种方法来实现透明效果,这三种方法非常不错,嘿嘿,就抄下来分享给大家. 1.设置alpha View v = findViewById(R.id.content);/到你要设透明背景的layout 的id  v.getBackground().setAlpha(100);//0~255透明度值  2.用ARGB来控制 半透明<Button android:background="

Android开发实例总结

写一个修改密码的界面 1画界面总结: 需要弄清楚什么地方用相对布局,什么地方使用线性布局 希望这过后自己花时间去弄清楚他们内嵌的的所有组件以及组件的属性包括用法. 2逻辑总结: 逻辑描述总是那么几步的,我之前看老师给的例子我是慢慢看懂了一点,但是我总觉得差点什么东西.我欠一个彻底弄清楚,我肯定可以的. 3思想总结: 我认为我可以的.开发安卓,尽管我现在还是刚刚起步,我似乎和它有一种似曾相识的熟悉感.或许这个就是缘分.我不可以放弃Android开发."世界上最忠诚的就是自然界的物,只要你想他,他就