随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候想网易新闻要显示的内容太多,而且又想在主页面全部显示出来,所以有加了顶部导航栏,但是android这样的移动设备内存是受限的,那么多界面缓存到内存中,很容易导致内存溢出,这个是比较致命的,所以不得不考虑。虽然我在之前也做过网易的顶部导航栏但是哪种方式并不好,就像使用viewpager做一些复杂的界面由于图片占用内存过多,很容易导致内存溢出,学习了今天的内容大家做一下对比相信就有所体会。
先看一下今天要实现的效果:
至于顶部导航的具体要用到的图片和布局大家自己调整。
由于前面已经介绍了底部菜单栏了,所以一些重复性的代码就不贴上来了,最后我也会把下载地址贴上大家有兴趣自行下载。
首先看一些顶部导航栏的布局文件:
[html] view
plain copy
-
xml version="1.0" encoding="utf-8"?>
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:orientation="vertical" >
-
<include layout="@layout/head" />
-
-
<LinearLayout
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content">
-
<RadioGroup
-
android:id="@+id/add_tab_group"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:gravity="center"
-
android:paddingTop="6dp"
-
android:paddingBottom="6dp"
-
android:background="@drawable/big_button_up"
-
android:orientation="horizontal"
-
>
-
-
<RadioButton
-
android:id="@+id/main_tab_addExam"
-
style="@style/MMTabButton1"
-
android:layout_weight="1.0"
-
android:checked="true"
-
android:text="添加考试" />
-
-
<RadioButton
-
android:id="@+id/main_tab_myExam"
-
style="@style/MMTabButton1"
-
android:layout_weight="1.0"
-
-
android:text="我的考试" />
-
-
<RadioButton
-
android:id="@+id/main_tab_message"
-
style="@style/MMTabButton1"
-
android:layout_weight="1.0"
-
android:text="我的通知" />
-
-
<RadioButton
-
android:id="@+id/main_tab_testing"
-
style="@style/MMTabButton1"
-
android:layout_weight="1.0"
-
android:text="测试" />
-
<RadioButton
-
android:id="@+id/main_tab_settings"
-
style="@style/MMTabButton1"
-
android:layout_weight="1.0"
-
android:text="设置" />
-
RadioGroup>
-
-
LinearLayout>
-
-
<LinearLayout
-
android:id="@+id/container"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:layout_weight="1" >
-
LinearLayout>
-
LinearLayout>
具体宽度样式大家可以自己调节,然后看一下核心类:
[html] view
plain copy
-
import android.app.ActivityGroup;
-
import android.app.AlertDialog;
-
import android.app.LocalActivityManager;
-
import android.content.Context;
-
import android.content.DialogInterface;
-
import android.content.Intent;
-
import android.os.Bundle;
-
import android.view.KeyEvent;
-
import android.view.View;
-
import android.view.animation.Animation;
-
import android.view.animation.AnimationUtils;
-
import android.widget.Button;
-
import android.widget.LinearLayout;
-
import android.widget.RadioGroup;
-
import android.widget.TextView;
-
import android.widget.RadioGroup.OnCheckedChangeListener;
-
-
public class AddExamActivity extends ActivityGroup {
-
-
protected Button btn_leftTop, btn_rightTop;
-
protected TextView tv_head;
-
-
private static LocalActivityManager manager;
-
private RadioGroup radioGroup;
-
private static LinearLayout container;
-
public static Context context;
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
// TODO Auto-generated method stub
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.addexam);
-
context=this;
-
initHead();
-
-
manager=getLocalActivityManager();
-
container= (LinearLayout)findViewById(R.id.container);
-
radioGroup=(RadioGroup) this.findViewById(R.id.add_tab_group);
-
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_0",
-
new Intent(context, MyExamActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
-
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
-
@Override
-
public void onCheckedChanged(RadioGroup group, int checkedId) {
-
// TODO Auto-generated method stub
-
switch (checkedId) {
-
case R.id.main_tab_addExam://添加考试
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_0",
-
new Intent(context, MyExamActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
break;
-
case R.id.main_tab_myExam://我的考试
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_1",
-
new Intent(context, MyMessageActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
break;
-
case R.id.main_tab_message://我的通知
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_2",
-
new Intent(context, SettingActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
break;
-
case R.id.main_tab_testing://测试
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_3",
-
new Intent(context, TestingActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
break;
-
case R.id.main_tab_settings://设置
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_4",
-
new Intent(context, MyExamActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
break;
-
default:
-
//tabHost.setCurrentTabByTag("我的考试");
-
break;
-
}
-
}
-
});
-
}
-
public static void changeTo(){
-
Animation slideLeftIn = AnimationUtils.loadAnimation(context, R.anim.slide_bottom_in_no_alpha);
-
-
container.removeAllViews();
-
container.addView(manager.startActivity(
-
"PAGE_4",
-
new Intent(context, MyExamActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
-
.getDecorView());
-
container.startAnimation(slideLeftIn);
-
}
-
protected void initHead() {
-
btn_leftTop = (Button) findViewById(R.id.btn_leftTop);
-
btn_rightTop = (Button) findViewById(R.id.btn_rightTop);
-
tv_head = (TextView) findViewById(R.id.tv_head);
-
-
btn_leftTop.setVisibility(View.INVISIBLE);
-
tv_head.setText("添加考试");
-
}
-
-
@Override
-
public boolean onKeyDown(int keyCode, KeyEvent event) {
-
// TODO Auto-generated method stub
-
-
if (keyCode == KeyEvent.KEYCODE_BACK) {
-
-
AlertDialog.Builder builder = new AlertDialog.Builder(getParent());
-