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
分享到:
相关推荐
在Android应用开发中,"基于PopWindow的底部菜单栏"是一种常见的交互设计,它允许用户在界面底部弹出一个窗口来展示菜单选项,通常用于替代或扩展底部导航栏的功能。这种设计可以提供更加灵活的用户体验,例如在某些...
实现Android底部菜单的基本步骤如下: 1. **布局设计**:在XML布局文件中创建`BottomNavigationView`组件。在`res/layout/activity_main.xml`中添加以下代码: ```xml <com.google.android.material.bottom...
本项目以"android底部菜单+标题"为主题,展示了如何自定义实现这样一个组件。 首先,底部导航菜单在Android中的实现通常基于`BottomNavigationView`,这是一个官方提供的UI组件,位于`...
在Android平台上,菜单是应用程序交互的重要组成部分,它们提供了一种优雅的方式来展示用户可执行的操作。本文将深入探讨Android中的各种菜单类型,包括上下文菜单(Context Menu)、选项菜单(Options Menu)以及它们的...
要实现“仿微信Android底部菜单”,首先我们需要理解Android的布局系统。在Android中,可以使用XML布局文件来定义界面元素的位置和样式。对于底部导航菜单,我们可以使用`BottomNavigationView`组件,它是Android ...
本示例项目“基于Android的导航菜单横向左右滑动并和下方的控件实现联动”就是一个很好的实例,它展示了如何在Android应用中实现这种高级的UI交互效果。 首先,这个项目的重点在于导航菜单的设计。导航菜单通常是...
本教程将深入探讨如何在Android应用中实现一个基于Fragment的底部动画菜单,并实现导航和各种酷炫的动画效果。 首先,我们需要了解Fragment的基本用法。Fragment是Activity的一部分,有自己的生命周期,可以在不...
"基于android平台计算机视频教育管理系统的设计与实现" 本文主要介绍了基于Android平台计算机视频教育管理系统的设计与实现。该系统旨在为计算机专业学生提供一个视频教育管理平台,收集、整理、分享计算机视频课程...
在Android应用开发中,设计一个类似QQ底部菜单的界面是一种常见的需求,它可以提供多页面间的切换,提升用户体验。本文将详细解析如何实现这样的功能,并基于给出的四个压缩包文件(tab_fragment_00-master.zip、...
【标题】"仿微信底部菜单"是一个Android应用开发项目,其目标是实现类似微信聊天界面底部的导航菜单。微信的底部菜单通常包含“聊天”、“发现”、“通讯录”、“我”等几个主要功能模块,方便用户在不同功能之间...
【标题】"手拉手带你实现基于Uniapp和uView,根据权限动态的修改底部菜单tabbar",这个标题揭示了我们即将探讨的核心技术点,那就是如何在使用Uniapp和uView框架开发移动应用时,根据用户权限动态调整底部菜单...
首先,uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,就能运行在iOS、Android、H5、微信小程序等多个平台。在uni-app中,底部导航通常由`<navigator>`组件来实现,但默认样式可能无法满足所有...
"基于Android平台的“传统文化”APP设计" 本文主要介绍基于Android平台的“传统文化”APP设计,旨在让用户在网络上进行传统文化的学习,并将传统文化与现代的流行元素相结合,使之能够符合大众的口味,让其能够源远...
### 基于Android手机通讯录的设计与实现 #### 一、研究背景与现状 随着3G技术的广泛应用,智能手机的处理能力和网络速度有了显著提高,这为开发更复杂的应用程序提供了可能。Android作为一款开源的操作系统,由...
本文主要介绍了基于Android平台设计与实现的一款大学生综合素质测评APP。该应用旨在为高校提供一种高效、公正的大学生综合素质评价方法,以适应高等教育扩招带来的数据管理和处理需求的增长,以及社会对大学生综合...
其次,TabHostBottom库的实现基于Android的TabHost组件。TabHost是Android SDK中用于创建多标签界面的组件,允许在一个Activity中展示多个Fragments或Views。TabHostBottom通过优化TabHost,使其更适应底部菜单的...
总结起来,基于QT的底部导航栏利用QML的强大功能,通过声明式编程实现,提供了高效且灵活的用户界面设计。通过理解QML的基本组件和信号绑定机制,开发者可以轻松地构建出类似微信那样的多页面底部导航功能,提高应用...
`Node.js-BottomNavygation`项目是针对Android平台的一个自定义底部导航控件,它可能是对原生Android `BottomNavigationView`的一个扩展或优化,旨在提供更加灵活和定制化的功能。 `BottomNavigationView`是Android...
本项目标题为"仿微信底部菜单,可滑动",这意味着我们将讨论如何使用Android原生组件来实现类似微信APP中的这种功能。在描述中提到,该实现是基于`ViewPager`,这是一种非常实用的控件,用于展示可滑动的页面集合。 ...