`
从百草园到三味书屋
  • 浏览: 52274 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于android平台底部菜单实现

 
阅读更多
android,我发现几乎80%的应用程序,尤其是工具软件、管理软件等。都是一排底部菜单,然后切换来切换去,搞几个页面。这篇文章,是我接触android平台开发的第一篇移动方面的博客。很久了,都没有写的博客,因为自己结束了一段可笑的感情经历,终于解脱了。
我从不说废话,直接上代码。
[list]
  • 配置文件
  • <?xml version="1.0" encoding="utf-8"?>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
    
            <include layout="@layout/activity_title" />
    
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="0.0dip"
                android:layout_weight="1.0" />
    
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.0"
                android:visibility="gone" />
    
            <RadioGroup
                android:id="@+id/main_radio"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
    
                <RadioButton
                    android:id="@+id/radio_btn0"
                    style="@style/main_tab_bottom"
                    android:checked="true"
                    android:drawableTop="@drawable/drawable_home"
                    android:selectAllOnFocus="false"
                    android:tag="radio_btn0"
                    android:text="@string/btn0" />
    
                <RadioButton
                    android:id="@+id/radio_btn1"
                    style="@style/main_tab_bottom"
                    android:drawableTop="@drawable/drawable_news"
                    android:tag="radio_btn1"
                    android:text="@string/btn1" />
    
                <RadioButton
                    android:id="@+id/radio_btn2"
                    style="@style/main_tab_bottom"
                    android:drawableTop="@drawable/drawable_notice"
                    android:tag="radio_btn2"
                    android:text="@string/btn2" />
    
                <RadioButton
                    android:id="@+id/radio_btn3"
                    style="@style/main_tab_bottom"
                    android:drawableTop="@drawable/drawable_topic"
                    android:tag="radio_btn3"
                    android:text="@string/btn3" />
    
                <RadioButton
                    android:id="@+id/radio_btn4"
                    style="@style/main_tab_bottom"
                    android:drawableTop="@drawable/drawable_exit"
                    android:tag="radio_btn4"
                    android:text="@string/btn4" />
            </RadioGroup>
        </LinearLayout>
    
    </TabHost>
    
  • activity
  • package com.example.test;
    
    import android.app.AlertDialog;
    import android.app.TabActivity;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    import android.widget.TabHost;
    import android.widget.TextView;
    
    @SuppressWarnings("deprecation")
    public class MainActivity extends TabActivity implements OnCheckedChangeListener{
    
    	private TabHost mHost = null;
    	private RadioGroup radioGroup = null;
    	private RadioButton currentRadioBtn = null;
    	private RadioButton previousRadioBtn = null;
    	private TextView currentTitle = null;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		previousRadioBtn = (RadioButton)findViewById(R.id.radio_btn0);
    		mHost = this.getTabHost();
    
    		mHost.addTab(mHost.newTabSpec("ONE").setIndicator("ONE").setContent(new Intent(this,OneActivity.class)));
    		mHost.addTab(mHost.newTabSpec("TWO").setIndicator("TWO").setContent(new Intent(this,TwoActivity.class)));
    		mHost.addTab(mHost.newTabSpec("THREE").setIndicator("THREE").setContent(new Intent(this,ThreeActivity.class)));
    		mHost.addTab(mHost.newTabSpec("FOUR").setIndicator("FOUR").setContent(new Intent(this,FourActivity.class)));
    		mHost.addTab(mHost.newTabSpec("FIVE").setIndicator("FIVE").setContent(new Intent(this,FiveActivity.class)));
    		radioGroup = (RadioGroup) findViewById(R.id.main_radio);   
    		radioGroup.setOnCheckedChangeListener(this);   
    		this.getWindow().setBackgroundDrawable(this.getResources().getDrawable(R.drawable.backColor));
    	}
    
    	@Override  
    	public void onCheckedChanged(RadioGroup group, final int checkedId) {   
    		currentRadioBtn = (RadioButton)findViewById(checkedId);
    		 currentTitle = (TextView)findViewById(R.id.title);
    		switch(checkedId){   
    		case R.id.radio_btn0:   
    			mHost.setCurrentTabByTag("ONE");   
    			currentTitle.setText(R.string.btn0);
    			break;   
    		case R.id.radio_btn1:   
    			mHost.setCurrentTabByTag("TWO");
    			currentTitle.setText(R.string.btn1);
    			break;   
    		case R.id.radio_btn2:   
    			mHost.setCurrentTabByTag("THREE");   
    			currentTitle.setText(R.string.btn2);
    			break;   
    		case R.id.radio_btn3:   
    			mHost.setCurrentTabByTag("FOUR");   
    			currentTitle.setText(R.string.btn3);
    			break;   
    		case R.id.radio_btn4:   
    			AlertDialog.Builder builder = new AlertDialog.Builder(this);
    			builder.setMessage(R.string.confirmExit).setCancelable(false).setPositiveButton("确定", new DialogInterface.OnClickListener() {
    				@Override
    				public void onClick(DialogInterface dialog, int which) {
    					MainActivity.this.finish();
    				}
    			}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
    				@Override
    				public void onClick(DialogInterface dialog, int which) {
    					if(previousRadioBtn!=null){
    						previousRadioBtn.setChecked(true);
    					}
    					dialog.cancel();
    				}
    			});
    			builder.create().show();
    			break;   
    		}
    		if(checkedId!=R.id.radio_btn4){
    			previousRadioBtn = (RadioButton)findViewById(checkedId);
    		}
    	}   
    }
    
    
  • 效果图
  • [img]



    [/img]
    [/list]
    • 大小: 71.3 KB
    分享到:
    评论

    相关推荐

      基于PopWindow底部菜单栏

      在Android应用开发中,"基于PopWindow的底部菜单栏"是一种常见的交互设计,它允许用户在界面底部弹出一个窗口来展示菜单选项,通常用于替代或扩展底部导航栏的功能。这种设计可以提供更加灵活的用户体验,例如在某些...

      android仿新浪微薄底部菜单

      实现Android底部菜单的基本步骤如下: 1. **布局设计**:在XML布局文件中创建`BottomNavigationView`组件。在`res/layout/activity_main.xml`中添加以下代码: ```xml &lt;com.google.android.material.bottom...

      android底部菜单+标题

      本项目以"android底部菜单+标题"为主题,展示了如何自定义实现这样一个组件。 首先,底部导航菜单在Android中的实现通常基于`BottomNavigationView`,这是一个官方提供的UI组件,位于`...

      android平台下各种菜单的实现

      在Android平台上,菜单是应用程序交互的重要组成部分,它们提供了一种优雅的方式来展示用户可执行的操作。本文将深入探讨Android中的各种菜单类型,包括上下文菜单(Context Menu)、选项菜单(Options Menu)以及它们的...

      仿微信android底部菜单 移动开发.zip

      要实现“仿微信Android底部菜单”,首先我们需要理解Android的布局系统。在Android中,可以使用XML布局文件来定义界面元素的位置和样式。对于底部导航菜单,我们可以使用`BottomNavigationView`组件,它是Android ...

      基于Android的导航菜单横向左右滑动并和下方的控件实现联动.zip

      本示例项目“基于Android的导航菜单横向左右滑动并和下方的控件实现联动”就是一个很好的实例,它展示了如何在Android应用中实现这种高级的UI交互效果。 首先,这个项目的重点在于导航菜单的设计。导航菜单通常是...

      android fragment 底部动画菜单 导航动画

      本教程将深入探讨如何在Android应用中实现一个基于Fragment的底部动画菜单,并实现导航和各种酷炫的动画效果。 首先,我们需要了解Fragment的基本用法。Fragment是Activity的一部分,有自己的生命周期,可以在不...

      基于android平台计算机视频教育管理系统的设计与实现.pdf

      "基于android平台计算机视频教育管理系统的设计与实现" 本文主要介绍了基于Android平台计算机视频教育管理系统的设计与实现。该系统旨在为计算机专业学生提供一个视频教育管理平台,收集、整理、分享计算机视频课程...

      仿qq底部菜单实现方式

      在Android应用开发中,设计一个类似QQ底部菜单的界面是一种常见的需求,它可以提供多页面间的切换,提升用户体验。本文将详细解析如何实现这样的功能,并基于给出的四个压缩包文件(tab_fragment_00-master.zip、...

      仿微信底部菜单

      【标题】"仿微信底部菜单"是一个Android应用开发项目,其目标是实现类似微信聊天界面底部的导航菜单。微信的底部菜单通常包含“聊天”、“发现”、“通讯录”、“我”等几个主要功能模块,方便用户在不同功能之间...

      手拉手带你实现基于Uniapp和uView,根据权限动态的修改底部菜单tabbar

      【标题】"手拉手带你实现基于Uniapp和uView,根据权限动态的修改底部菜单tabbar",这个标题揭示了我们即将探讨的核心技术点,那就是如何在使用Uniapp和uView框架开发移动应用时,根据用户权限动态调整底部菜单...

      uni-app-小程序自定义底部菜单样式示例

      首先,uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,就能运行在iOS、Android、H5、微信小程序等多个平台。在uni-app中,底部导航通常由`&lt;navigator&gt;`组件来实现,但默认样式可能无法满足所有...

      基于Android平台的“传统文化”APP设计.pdf

      "基于Android平台的“传统文化”APP设计" 本文主要介绍基于Android平台的“传统文化”APP设计,旨在让用户在网络上进行传统文化的学习,并将传统文化与现代的流行元素相结合,使之能够符合大众的口味,让其能够源远...

      基于android手机通讯录的设计与实现毕业论文

      ### 基于Android手机通讯录的设计与实现 #### 一、研究背景与现状 随着3G技术的广泛应用,智能手机的处理能力和网络速度有了显著提高,这为开发更复杂的应用程序提供了可能。Android作为一款开源的操作系统,由...

      基于Android的大学生综合素质测评APP的设计与实现.pdf

      本文主要介绍了基于Android平台设计与实现的一款大学生综合素质测评APP。该应用旨在为高校提供一种高效、公正的大学生综合素质评价方法,以适应高等教育扩招带来的数据管理和处理需求的增长,以及社会对大学生综合...

      TabHostBottom(底部选项卡),底部菜单

      其次,TabHostBottom库的实现基于Android的TabHost组件。TabHost是Android SDK中用于创建多标签界面的组件,允许在一个Activity中展示多个Fragments或Views。TabHostBottom通过优化TabHost,使其更适应底部菜单的...

      基于QT的底部导航栏

      总结起来,基于QT的底部导航栏利用QML的强大功能,通过声明式编程实现,提供了高效且灵活的用户界面设计。通过理解QML的基本组件和信号绑定机制,开发者可以轻松地构建出类似微信那样的多页面底部导航功能,提高应用...

      Node.js-BottomNavygation-基于Android底部导航视图的底部导航控件

      `Node.js-BottomNavygation`项目是针对Android平台的一个自定义底部导航控件,它可能是对原生Android `BottomNavigationView`的一个扩展或优化,旨在提供更加灵活和定制化的功能。 `BottomNavigationView`是Android...

      仿微信底部菜单,可滑动

      本项目标题为"仿微信底部菜单,可滑动",这意味着我们将讨论如何使用Android原生组件来实现类似微信APP中的这种功能。在描述中提到,该实现是基于`ViewPager`,这是一种非常实用的控件,用于展示可滑动的页面集合。 ...

    Global site tag (gtag.js) - Google Analytics