Android UIデザイン画面下部のメニューバーアニメーション切り替えActivity

32190 ワード

最終効果は下図のように、メニューをクリックするとActivityが切り替わり、アニメーション効果があります.朝起きてからこれを研究しています.これまでシステムで提供されたいくつかのコントロールを直接使っていたので、写真の背景やネストレイアウトなどをしたことがありません.今日は初めてで、経験がなく、午前中にやっとできました.簡単に考えを紹介します.LinearLayoutを使ってネストし、3つの部分に分けて、第1の部分は上部のタイトルバーで、第2の部分は内容で、第3の部分は下部のメニューです.ネット上のコードを参考に、順風満帆で済ませたが、シミュレータテストで問題が発生(開発時はI 9000)、シミュレータの画面はHVGAでメニューバーが見えない.この問題は長い間悩んでいたが、ネット上では役に立つ答えが見つからず(dipを使うと言って、pxを使わないで、私は最初からdipを使っていた)、最後に自分で考えて問題を解決した.解決方法も簡単だ.parent、そしてメニューlayout_marginTopは負の値を取ります.main.xml:
 version="1.0" encoding="utf-8"?>
 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">
	 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">
		 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"/>
	>
	 xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="fill_parent"
		android:layout_height="fill_parent">
				 android:layout_width="wrap_content"
			android:gravity="center" android:textSize="20dip"
			android:layout_gravity="center" android:text="@string/home" android:layout_height="fill_parent"/>
	>
	 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">
		 layout="@layout/foot" />
	>
>
foot.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 version="1.0" encoding="utf-8"?>
 xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	 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"
		>
		 android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			android:background="@drawable/tab_home"
			android:id="@+id/hometv"			
			 />
	>
	 android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	 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">
		 android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_channel" android:id="@+id/channeltv" />
	>
	 android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	 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" >
		 android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_fav" android:id="@+id/favtv" />
	>
	 android:layout_width="wrap_content"
			android:layout_height="wrap_content"  android:src="@drawable/line" />
	 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">
		 android:layout_width="wrap_content"
			android:layout_height="50dip"
			android:gravity="center" android:paddingTop="29dip"
			 android:background="@drawable/tab_search" android:id="@+id/searchtv"/>
	>
>

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:
1
2
3
4
5
6
7
8
9
10
11
 xmlns:android="http://schemas.android.com/apk/res/android">
     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" />
>

他のいくつかのactivityコードは貼らないで、どうせ内容はすべて同じで、下にコードのパッケージがあってみんなの参考にします.BottomMenu (275)
 
 
http://www.pocketdigi.com/20110225/186.html