package com.example.viewpage;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
@SuppressLint({ "ParserError", "WrongViewCast", "ResourceAsColor" })public class MainActivity extends Activity {
// VIewPaer控件
private ViewPager vp;
// VIewPager的数据源
private MyPagerAdapter myAdapter;
// 为VIewPager保存VIew界面的集合
private List<View> vessel = new ArrayList<View>();
private Map<String,List<UserInfo>> listData = new HashMap<String,List<UserInfo>>();
private List<String> dataListKey = new ArrayList<String>();
// 代表第一个和第2个界面
private View view1, view2;
// 动画图片
private ImageView cursor;
// 第2个窗体的ListVIew控件
private ListView list,list1;
private int offset = 0;// 动画图片偏移量
private int currIndex = 0;// 当前页卡编号
private int bmpW;// 动画图片宽度
// ListView的数据集
private static List<UserInfo> userInfos;
// listView右边的导航选项卡
private MySideBar myView;
// ListView数据源
private static MyUserInfoAdapter adapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitImageView();
init();
}/**
* 初始化控件和绑定事件
*/
public void init() {
dataListKey.add("1");
dataListKey.add("2");
dataListKey.add("3");
dataListKey.add("4");
dataListKey.add("5");
dataListKey.add("6");
dataListKey.add("7");
dataListKey.add("8");for (int i = 0; i < dataListKey.size(); i++) {
view1 = this.getLayoutInflater().inflate(R.layout.layout1, null);
list1 = (ListView) view1.findViewById(R.id.LV);
userInfos =getUserInfos();
adapter = new MyUserInfoAdapter(MainActivity.this, userInfos);
list1.setAdapter(adapter);
vessel.add(view1);
}
Log.e("viewpager", vessel.size()+"");
vp = (ViewPager) findViewById(R.id.viewpagerLayout);
myAdapter = new MyPagerAdapter();
vp.setAdapter(myAdapter);
// 设置起始默认的值为0
vp.setCurrentItem(0);
vp.setOnPageChangeListener(new MyOnPageChangeListener());
}/*
* 初始化滑动条
*/private void InitImageView() {
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();// 获取图片宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;// 获取分辨率宽度
System.out.println("bmpw:" + bmpW + "screenW:" + screenW);
offset = (screenW / 3 - bmpW) / 2;// 计算偏移量
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
System.out.println("offset:" + offset);}
// 适配器
class MyPagerAdapter extends PagerAdapter {
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(vessel.get(arg1));
}public void finishUpdate(View arg0) {
}
public int getCount() {
return vessel.size();
}public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(vessel.get(arg1), 0);
return vessel.get(arg1);
}public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
}public void restoreState(Parcelable arg0, ClassLoader arg1) {
}public Parcelable saveState() {
return null;
}@Override
public void startUpdate(View arg0) {
}
}/**
* 页卡切换监听
*/
public class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量
@Override
public void onPageSelected(int arg0) {
Animation animation = null;
switch (arg0) {
case 0:
if (currIndex == 1) {
animation = new TranslateAnimation(one, 0, 0, 0);
}/*
* else if (currIndex == 2) { animation = new
* TranslateAnimation(two, 0, 0, 0); }
*/
break;
case 1:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, one, 0, 0);} /*
* else if (currIndex == 2) { animation = new
* TranslateAnimation(two, one, 0, 0); }
*/
break;
/*
* case 2: if (currIndex == 0) { animation = new
* TranslateAnimation(offset, two, 0, 0); } else if (currIndex == 1)
* { animation = new TranslateAnimation(one, two, 0, 0); } break;
*/
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}@Override
public void onPageScrollStateChanged(int arg0) {
}
}
/**
* 初始化加载listVIew所需要的数据 并进行排序和匹配
*/
private List<UserInfo> getUserInfos() {List<UserInfo> userInfos = new ArrayList<UserInfo>();
userInfos.add(new UserInfo("唐僧", "18765432345"));
userInfos.add(new UserInfo("猪师弟", "18765432345"));
userInfos.add(new UserInfo("阿呆", "18765432345"));
userInfos.add(new UserInfo("8899", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
userInfos.add(new UserInfo("孙悟空", "18765432345"));
return userInfos;
}}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewpagerLayout"
android:layout_width="wrap_content"
android:layout_height="318dp"
android:background="@drawable/default_bg"
android:layout_weight="0.01" >
</android.support.v4.view.ViewPager></LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#88ffffff"
android:orientation="vertical" ><ListView
android:id="@+id/LV"
android:layout_width="fill_parent"
android:layout_height="fill_parent" /></LinearLayout>
viewpager动态加载listView数据