`

Android UI设计 layout布局 屏幕底部的菜单栏 动画切换Activity

 
阅读更多

最终效果如下图,点击菜单会切换Activity,有动画效果。



 

从早上起床就研究这个东西,因为之前一直都直接用系统提供的几个控件,从来没搞过图片背景、嵌套布局什么的,今天是第一次,没什么经验,花了一个上午才搞 定。
简单介绍一下思路,使用LinearLayout嵌套,分三部分,第一部分是顶部的标题栏,第二部分是内容,第三部分是底部菜单。参考网上的代码,一路顺 风顺水搞定,但在模拟器测试时出了问题(开发时用I9000),模拟器的屏幕是HVGA的,在上面运行看不到菜单栏。这个问题困扰了很久,网上也搜不出有 用的答案(说是用dip,不用px,我开始就是用dip的),最后还是自己冥思苦想解决了问题,解决方法也很简单,就是让内容fill_parent,然 后菜单layout_marginTop取个负值。
main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:gravity="clip_horizontal"
	android:layout_height="fill_parent" android:id="@+id/toplayout">
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="horizontal" android:layout_width="fill_parent"
		android:layout_height="30dip" android:background="@drawable/header"
		android:gravity="center">
		<TextView android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:id="@+id/toptv"
			android:gravity="center" android:textSize="20dip"
			android:layout_gravity="center" android:text="@string/home"/>
	</LinearLayout>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="fill_parent"
		android:layout_height="fill_parent">
				<TextView android:layout_width="wrap_content"
			android:gravity="center" android:textSize="20dip"
			android:layout_gravity="center" android:text="@string/home" android:layout_height="fill_parent"/>
	</LinearLayout>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="fill_parent" android:layout_marginTop="-50dip"
		android:layout_height="50dip" android:gravity="bottom" android:background="@drawable/header">
		<include layout="@layout/foot" />
	</LinearLayout>
</LinearLayout>

 

foot.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="80dip"
		android:layout_height="80dip" android:id="@+id/home"
		android:gravity="center_horizontal"
		>
		<TextView android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			android:background="@drawable/tab_home"
			android:id="@+id/hometv"			
			 />
	</LinearLayout>
	<ImageView android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="80dip"
		android:layout_height="wrap_content" android:gravity="center_horizontal"
		android:id="@+id/channel">
		<TextView android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_channel" android:id="@+id/channeltv" />
	</LinearLayout>
	<ImageView android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="80dip" android:id="@+id/fav"
		android:layout_height="wrap_content" android:gravity="center_horizontal" >
		<TextView android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_fav" android:id="@+id/favtv" />
	</LinearLayout>
	<ImageView android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="80dip" android:id="@+id/search"
		android:layout_height="wrap_content" android:gravity="center_horizontal">
		<TextView android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_search" android:id="@+id/searchtv"/>
	</LinearLayout>
</LinearLayout>

 

main.java:

package com.BottomMenu;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.LinearLayout;
import android.widget.TextView;
 
public class main extends Activity {
	private LinearLayout home, channel, fav, search;
	TextView toptv;
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);
		Init();
	}
	public void Init(){
        Animation anim = AnimationUtils.loadAnimation(this,R.anim.scale);
        findViewById(R.id.toplayout).startAnimation(anim);
        //这两行是启动activity的动画效果
		home = (LinearLayout) findViewById(R.id.home);
		TextView hometv=(TextView)home.findViewById(R.id.hometv);
		hometv.setBackgroundResource(R.drawable.tab_home_select);
		home.setBackgroundResource(R.drawable.tab_two_highlight);
		toptv=(TextView)findViewById(R.id.toptv);
 
		channel = (LinearLayout) findViewById(R.id.channel);
		channel.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.setClass(main.this, channel.class);
				main.this.startActivity(intent);
			}
		});
 
		fav = (LinearLayout) findViewById(R.id.fav);
		fav.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.setClass(main.this, fav.class);
				main.this.startActivity(intent);
			}
		});
 
		search = (LinearLayout) findViewById(R.id.search);
		search.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.setClass(main.this, search.class);
				main.this.startActivity(intent);
			}
		});
	};
}

 

动画效果scale.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:interpolator="@android:anim/decelerate_interpolator"
        android:fromXScale="0.0" 
        android:toXScale="1.0" 
        android:fromYScale="0.0"
        android:toYScale="1.0" 
        android:pivotX="50%" 
        android:pivotY="50%"
        android:fillAfter="true" 
        android:duration="300" />
</set>

 

其他几个activity代码就不贴了,反正内容都一样,下面有代码打包供大家参考。 BottomMenu

  • 大小: 15.2 KB
0
2
分享到:
评论

相关推荐

    android底部菜单栏

    在Android应用开发中,底部菜单栏(Bottom Navigation Bar)是一种常见的UI设计元素,它提供了一种方便用户在应用的主要功能之间快速切换的方式。通常,底部菜单栏包含3到5个图标,每个图标代表一个主要的功能区域。...

    Android-BottomNavigation仿照闲鱼的底部菜单栏可以自定义数目大小

    在Android应用开发中,BottomNavigationView是一种常见的导航组件,它位于屏幕底部,通常包含几个固定选项,用户可以通过点击这些选项在不同的页面间切换。本项目"Android-BottomNavigation"旨在模仿闲鱼App的底部...

    Android Studio 底部自定义菜单

    总结起来,Android Studio中的底部自定义菜单设计涉及到了Android UI组件、菜单资源管理、事件监听、数据模型以及视图更新等多个方面。通过熟练掌握这些知识点,开发者能够构建出功能丰富且用户体验优秀的Android...

    UIMainDemo_实现屏幕底部的菜单栏效果.rar

    在UI设计中,屏幕底部的菜单栏是一种常见的交互元素,它为用户提供了一种直观且便捷的方式来访问主要功能或页面。本示例"UIMainDemo"着重于如何在应用程序中实现这种屏幕底部的菜单栏效果。这个压缩包包含了实现这一...

    Android 仿微信底部菜单栏 + 显示未读消息数量

    在Android应用开发中,微信的底部菜单栏是一个常见的设计元素,它为用户提供了一种直观的导航方式。这个项目是关于如何在自己的Android应用中实现一个类似微信的底部菜单栏,并且能够显示未读消息的数量。下面我们将...

    底部栏菜单布局

    在Android开发中,底部...总的来说,实现底部栏菜单布局不仅涉及Android UI设计,还涵盖了事件监听、界面跳转等多个方面。通过合理地设计和编码,可以构建出类似携程旅行这样的应用主界面,为用户提供便捷的操作体验。

    Android 底部菜单

    在处理底部菜单的点击事件时,我们通常会配合使用Fragment进行页面切换,因为它们允许在不重新加载整个Activity的情况下改变屏幕内容。使用FragmentManager和FragmentTransaction,可以轻松地在底部菜单选项之间切换...

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

    底部导航菜单(Bottom Navigation)是Android设计规范中推荐的一种用户交互模式,用于在3到5个主要功能之间进行切换。本教程将深入探讨如何在Android应用中实现一个基于Fragment的底部动画菜单,并实现导航和各种...

    底部菜单栏实现源码

    总的来说,Android的底部菜单栏实现涉及了UI组件的使用、菜单资源的配置、点击事件的监听以及可能的业务逻辑处理。通过深入研究提供的源码,开发者可以提高对Android应用界面设计和交互实现的理解。

    Android底部导航栏切换TestFragment

    在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的UI设计,它允许用户在应用的多个主功能之间快速切换。"Android底部导航栏切换TestFragment"的实践旨在实现一个与QQ应用类似的导航功能,结合...

    android 主界面 底部菜单 DEMO

    在Android应用中,`Fragment`是可重用的UI组件,它们可以单独添加到Activity中,也可以随着底部菜单的切换而替换。在这个DEMO中,当用户点击底部菜单的不同选项时,可能对应着不同的Fragment进行显示。 3. **菜单...

    android 底部导航栏

    在Android应用开发中,底部导航栏(Bottom Navigation Bar)是一种常见的界面设计元素,它提供了一种用户友好的方式来在多个主要功能之间切换。通常,它位于屏幕底部,包含3到5个图标,每个图标代表一个不同的页面或...

    Yc_ui_fragment_qzone, Fragment PopupWindow仿QQ空间最新版底部菜单栏.zip

    5. **布局设计**:在项目中,开发者可能使用了XML布局文件来定义界面元素的位置和样式,如使用`android:layout_gravity`属性控制PopupWindow的位置,使用`FrameLayout`或`LinearLayout`来组织Fragment的布局。...

    底部切换标签(方式二)Activity+Fragment

    在Android应用开发中,底部切换标签是常见的UI设计模式,为用户提供流畅的多页面导航体验。本教程将探讨如何通过Activity结合FragmentTabHost实现这一功能,即“底部切换标签(方式二)Activity+Fragment”。我们将...

    Android-不用写布局几句代码就可以实现底部菜单Fragment切换

    在Android应用开发中,底部导航菜单(Bottom Navigation)是一种常见的用户界面设计,它允许用户在三个到五个主要功能之间快速切换。本示例"Android-不用写布局几句代码就可以实现底部菜单Fragment切换"展示了如何...

    Android实现底部切换标签

    在Android应用开发中,底部导航栏(Bottom Navigation)是一种常见的用户界面设计,它允许用户在多个顶级操作之间轻松切换。本教程将详细讲解如何在Android项目中实现底部切换标签,以及如何利用Fragment来管理不同...

    仿微信底部导航栏

    总结,仿微信底部导航栏的实现涉及UI设计、事件监听和页面切换等多个方面。通过封装工具类,可以提高代码复用性和项目维护性。在Android中,我们可以使用`BottomNavigationView`结合`FragmentManager`来实现;在iOS...

    仿微信底部和顶部菜单栏

    在Android应用开发中,创建一个类似微信的底部和顶部菜单栏是常见的需求,这不仅可以提供良好的用户界面(UI)设计,还能确保用户能够方便地访问主要功能。微信的菜单栏设计已经成为移动应用的一种典范,因此许多...

    Fragment实现底部菜单切换

    在Android应用设计中,底部导航栏(Bottom Navigation)是一种常见的UI模式,它提供了对主要功能的快速访问。 首先,我们需要理解Fragment的基本概念。Fragment可以看作是Activity的一部分,有自己的生命周期和UI。...

    点击手机底部的标签时 切换相对应的内容界面

    2. **BottomNavigationView**:这是Android Design Support Library中的一个底部导航栏组件,它提供了在多个主要操作之间切换的便捷方式。与TabLayout类似,每个菜单项对应一个`Fragment`,点击不同的菜单项会触发`...

Global site tag (gtag.js) - Google Analytics