这是xml文件中的关键部分
<android.support.v4.view.ViewPager
android:id="@+id/vPager"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_weight="1.0"
android:flipInterval="30"
android:persistentDrawingCache="animation" />
这是java文件中的关键部分
package com.example.ghdf;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Display;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
public class MainHaoDF extends Activity {
public static MainHaoDF instance = null;
private ViewPager viewPager;// 页卡内容
private ImageView mTabImg;// 动画图片
private ImageView mTab1, mTab2, mTab3;
private ImageView imgView1, imgView2, imgView3;
private List<View> views;// Tab页面列表
private int offset = 0;// 动画图片偏移量
private int currIndex = 0;// 当前页卡编号
private View view1, view2, view3;// 各个页卡
private int one;
private int two;
private boolean menu_display = false;
private PopupWindow menuWindow;
private LayoutInflater inflater;
private View layout;
private LinearLayout mClose;
private LinearLayout mCloseBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_main);
InitTextView();
InitViewPager();
}
private void InitViewPager() {
viewPager = (ViewPager) findViewById(R.id.vPager);
views = new ArrayList<View>();
LayoutInflater inflater = getLayoutInflater();
view1 = inflater.inflate(R.layout.user_service_layout, null);
view2 = inflater.inflate(R.layout.user_subscribe_layout, null);
view3 = inflater.inflate(R.layout.user_install_layout, null);
views.add(view1);
views.add(view2);
views.add(view3);
viewPager.setAdapter(new MyViewPagerAdapter(views));
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
/**
* 初始化头标
*/
private void InitTextView() {
imgView1 = (ImageView) findViewById(R.id.message_image);
imgView2 = (ImageView) findViewById(R.id.news_image);
imgView3 = (ImageView) findViewById(R.id.setting_image);
mTabImg = (ImageView) findViewById(R.id.message_image);
imgView1.setOnClickListener(new MyOnClickListener(0));
imgView2.setOnClickListener(new MyOnClickListener(1));
imgView3.setOnClickListener(new MyOnClickListener(2));
Display currDisplay = getWindowManager().getDefaultDisplay();// 获取屏幕当前分辨率
int displayWidth = currDisplay.getWidth();
int displayHeight = currDisplay.getHeight();
one = displayWidth / 3; // 设置水平动画平移大小
two = one * 2;
}
/**
*
* 头标点击监听 3
*/
private class MyOnClickListener implements OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
public void onClick(View v) {
viewPager.setCurrentItem(index);
}
}
public class MyViewPagerAdapter extends PagerAdapter {
private List<View> mListViews;
public MyViewPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mListViews.get(position), 0);
return mListViews.get(position);
}
@Override
public int getCount() {
return mListViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
public class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2;// 页卡1 -> 页卡2 偏移量
int two = one * 2;// 页卡1 -> 页卡3 偏移量
int three = one * 3;
public void onPageScrollStateChanged(int arg0) {
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageSelected(int arg0) {
Animation animation = new TranslateAnimation(one * currIndex, one
* arg0, 0, 0);
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(300);
/**
* Animation animation = null; switch (arg0) { case 0:
* mTab1.setImageDrawable(getResources().getDrawable(
* R.drawable.message_selected)); if (currIndex == 1) { animation =
* new TranslateAnimation(one, 0, 0, 0);
* mTab2.setImageDrawable(getResources().getDrawable(
* R.drawable.news_unselected)); } else if (currIndex == 2) {
* animation = new TranslateAnimation(two, 0, 0, 0);
* mTab3.setImageDrawable(getResources().getDrawable(
* R.drawable.setting_unselected)); } break; case 1:
* mTab2.setImageDrawable(getResources().getDrawable(
* R.drawable.message_unselected)); if (currIndex == 0) { animation
* = new TranslateAnimation(zero, one, 0, 0);
* mTab1.setImageDrawable(getResources().getDrawable(
* R.drawable.news_selected)); } else if (currIndex == 2) {
* animation = new TranslateAnimation(two, one, 0, 0);
* mTab3.setImageDrawable(getResources().getDrawable(
* R.drawable.setting_selected)); } break; case 2:
* mTab3.setImageDrawable(getResources().getDrawable(
* R.drawable.message_unselected)); if (currIndex == 0) { animation
* = new TranslateAnimation(zero, two, 0, 0);
* mTab1.setImageDrawable(getResources().getDrawable(
* R.drawable.news_unselected)); } else if (currIndex == 1) {
* animation = new TranslateAnimation(one, two, 0, 0);
* mTab2.setImageDrawable(getResources().getDrawable(
* R.drawable.setting_selected)); } break; } currIndex = arg0;
* animation.setFillAfter(true);// True:图片停在动画结束位置
* animation.setDuration(150); mTabImg.startAnimation(animation);
*/
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 获取
// back键
if (menu_display) { // 如果 Menu已经打开 ,先关闭Menu
menuWindow.dismiss();
menu_display = false;
} else {
Intent intent = new Intent();
intent.setClass(MainHaoDF.this, Exit.class);
startActivity(intent);
}
}
else if (keyCode == KeyEvent.KEYCODE_MENU) { // 获取 Menu键
if (!menu_display) {
// 获取LayoutInflater实例
inflater = LayoutInflater.from(instance);
// 这里的main布局是在inflate中加入的,以前都是直接this.setContentView()的
// 该方法返回的是一个View的对象,是布局中的根
layout = inflater.inflate(R.layout.main_menu, null);
// 将layout加入到PopupWindow中
menuWindow = new PopupWindow(layout,
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
// 后两个参数是width和height
menuWindow.showAtLocation(findViewById(R.id.usermain),
Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
// 设置layout在PopupWindow中显示的位置
mClose = (LinearLayout) layout
.findViewById(R.id.menu_close);
mCloseBtn = (LinearLayout) layout
.findViewById(R.id.menu_close_btn);
// 下面对每一个Layout进行单击事件的注册
// 比如单击某个MenuItem的时候,他的背景色改变
mCloseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setClass(MainHaoDF.this, Exit.class);
startActivity(intent);
menuWindow.dismiss(); // 响应点击事件之后关闭Menu
}
});
menu_display = true;
} else {
// 如果当前已经为显示状态,则隐藏起来
menuWindow.dismiss();
menu_display = false;
}
return false;
}
return false;
}
public void exit_settings(View v) { // 退出 伪“对话框”,其实是一个activity
Intent intent = new Intent(MainHaoDF.this, ExitFromSettings.class);
startActivity(intent);
}
}
}