这是我用于分页的简单 PagerAdapter 和 onCreate() 活动。
public class MPagerAdapter extends PagerAdapter{
List<ViewGroup> pages = null;
public MPagerAdapter(List<ViewGroup> pages){
this.pages = pages;
}
@Override
public Object instantiateItem(ViewGroup collection, int position){
ViewGroup v = pages.get(position);
((ViewPager) collection).addView(v, 0);
return v;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view){
((ViewPager) collection).removeView((View) view);
}
@Override
public int getCount(){
return pages.size();
}
@Override
public boolean isViewFromObject(View view, Object object){
return view.equals(object);
}
@Override
public void finishUpdate(View arg0){
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1){
}
@Override
public Parcelable saveState(){
return null;
}
@Override
public void startUpdate(View arg0){
}
}
这是寻呼机将存在的活动的 onCreate() 。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pager);
getActionBar().setDisplayHomeAsUpEnabled(true);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
amount=Integer.parseInt(message);
Resources res = getResources();
Drawable background = res.getDrawable(R.drawable.page_back1);
BackgroudImage bImage = new BackgroudImage(x, y, background);
List<MyLayout> pages = new ArrayList<MyLayout>();
int a = amount/bImage.mPointsList.size();
for (int i=0; i<=a; i++){
MyLayout page = new MyLayout(getBaseContext(), bImage);
page.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
pages.add(page);
}
MPagerAdapter pagerAdapter = new MPagerAdapter(pages);
ViewPager viewPager = (ViewPager)findViewById(R.id.pager);//new ViewPager(this);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(1);
}
我的自定义布局的 OnLayout() 方法,用作 pagerView 页面的控件
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if (PagerActivity.amount<=points.size()) {
for (int i=0; i<PagerActivity.amount; i++){
ImageView childV = new ImageView(super.getContext());
childV.setBackgroundResource(R.drawable.lesson_frame_closed);
ViewGroup.LayoutParams imageParams = new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
childV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
this.addView(childV, imageParams);
}
PagerActivity.amount=0;
}
if ((float)(bgrImage.getBackground().getIntrinsicWidth())/(float)(bgrImage.getBackground().getIntrinsicHeight())<(float)this.getMeasuredWidth()/(float)this.getMeasuredHeight()) {
scaleFX=(float)this.getMeasuredHeight()/(float)bgrImage.getBackground().getIntrinsicWidth();
scaleFY=(float)this.getMeasuredHeight()/(float)bgrImage.getBackground().getIntrinsicHeight();
} else {
scaleFX=(float)this.getMeasuredWidth()/(float)bgrImage.getBackground().getIntrinsicWidth();
scaleFY=(float)this.getMeasuredWidth()/(float)bgrImage.getBackground().getIntrinsicHeight();
}
for (int i = 0; i < getChildCount(); i++) {
final View childV = getChildAt(i);
if (childV.getVisibility() != View.VISIBLE)
continue;
childV.layout((int)(points.get(i).getOriginX()*scaleFX), (int)(points.get(i).getOriginY()*scaleFY), childV.getWidth(), childV.getHeight());
}
}
不明白为什么 InstantiateItem() 没有被调用。任何有用的想法将不胜感激。