package com.eyeandroid.viewpager;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import android.R.integer;
import android.app.Activity;
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.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView[] dotImageViews = null;
private int PAGESIZE = 8;
private ViewPager advPager = null;
private AtomicInteger what = new AtomicInteger(0);
List<CourseBean> courseBeans;
private String TAG = "MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
courseBeans = new ArrayList<CourseBean>();
loadData();
initViewPager();
}
private void initViewPager() {
advPager = (ViewPager) findViewById(R.id.adv_pager);
List<View> contentGridViews = new ArrayList<View>();
for (int i = 0; i < courseBeans.size() / PAGESIZE; i++) {
Log.e(TAG, "载入第" + i + "页");
// 其实每一页就是一个gridview
GridView gridView = new GridView(this);
// 分页算法 不懂请自觉补习小学三年级算法
int start = i * PAGESIZE;
int end = i * PAGESIZE + PAGESIZE;
end = end > courseBeans.size() ? courseBeans.size() : end;
gridView.setAdapter(new CourseAdapter(courseBeans.subList(start,
end), this));
gridView.setNumColumns(4);
contentGridViews.add(gridView);
}
dotImageViews = new ImageView[contentGridViews.size()];
initDots();
advPager.setAdapter(new PageAdapter(contentGridViews));
advPager.setOnPageChangeListener(new GuidePageChangeListener());
}
/**
* 获取数据逻辑
*/
private void loadData() {
// 胡乱填写的数据
for (int i = 0; i < 30; i++) {
CourseBean courseBean = new CourseBean(i, i + "这是课程"
+ Math.random());
courseBeans.add(courseBean);
}
}
/**
* 初始化指示器
*/
private void initDots() {
ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);
for (int i = 0; i < dotImageViews.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new LayoutParams(20, 20));
imageView.setPadding(5, 5, 5, 5);
dotImageViews<i> = imageView;
if (i == 0) {
dotImageViews<i>
.setBackgroundResource(R.drawable.banner_dian_focus);
} else {
dotImageViews<i>
.setBackgroundResource(R.drawable.banner_dian_blur);
}
group.addView(dotImageViews<i>);
}
}
/**
* 设置页面指示器
*
*/
private final class GuidePageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
what.getAndSet(arg0);
for (int i = 0; i < dotImageViews.length; i++) {
dotImageViews[arg0]
.setBackgroundResource(R.drawable.banner_dian_focus);
if (arg0 != i) {
dotImageViews<i>
.setBackgroundResource(R.drawable.banner_dian_blur);
}
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
}
}
package
com.eyeandroid.viewpager;
import
android.R.integer;
public
class
CourseBean {
public
int
id;
public
String courseName;
public
CourseBean(
int
id, String courseName) {
super
();
this
.id = id;
this
.courseName = courseName;
}
public
int
getId() {
return
id;
}
public
void
setId(
int
id) {
this
.id = id;
}
public
String getCourseName() {
return
courseName;
}
public
void
setCourseName(String courseName) {
this
.courseName = courseName;
}
}
|
package
com.eyeandroid.viewpager;
import
java.util.List;
import
android.content.Context;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.BaseAdapter;
import
android.widget.TextView;
public
class
CourseAdapter
extends
BaseAdapter {
private
List<CourseBean> courseBeans;
private
Context context;
public
CourseAdapter(List<CourseBean> courseBeans, Context context) {
super
();
this
.courseBeans = courseBeans;
this
.context = context;
}
@Override
public
int
getCount() {
// TODO Auto-generated method stub
return
courseBeans.size();
}
@Override
public
Object getItem(
int
position) {
// TODO Auto-generated method stub
return
courseBeans.get(position);
}
@Override
public
long
getItemId(
int
position) {
// TODO Auto-generated method stub
return
position;
}
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
TextView textView2 =
new
TextView(context);
textView2.setText(courseBeans.get(position).getCourseName());
return
textView2;
}
}
|
package
com.eyeandroid.viewpager;
import
java.util.List;
import
android.os.Parcelable;
import
android.support.v4.view.PagerAdapter;
import
android.support.v4.view.ViewPager;
import
android.view.View;
public
class
PageAdapter
extends
PagerAdapter {
private
List<View> views =
null
;
public
PageAdapter(List<View> views) {
this
.views = views;
}
@Override
public
void
destroyItem(View arg0,
int
arg1, Object arg2) {
((ViewPager) arg0).removeView(views.get(arg1));
}
@Override
public
void
finishUpdate(View arg0) {
}
@Override
public
int
getCount() {
return
views.size();
}
@Override
public
Object instantiateItem(View arg0,
int
arg1) {
((ViewPager) arg0).addView(views.get(arg1),
0
);
return
views.get(arg1);
}
@Override
public
boolean
isViewFromObject(View arg0, Object arg1) {
return
arg0 == arg1;
}
@Override
public
void
restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public
Parcelable saveState() {
return
null
;
}
@Override
public
void
startUpdate(View arg0) {
}
}
|