package com.cogent.viewpager;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
/**
* 无限滑动,实现动态添加,动态添加第一次加入后,的第一轮滑动,页数显示混乱···。
* */
public class ViewPagerGuideActivity extends Activity {
private ViewPager viewPager;
private ArrayList<View> pageViews;
private ImageView imageView;
private ImageView[] imageViews;
// 鍖呰9婊戝姩鍥剧墖鐨凩inearLayout
private ViewGroup viewPics;
// 鍖呰9灏忓渾鐐圭殑LinearLayout
private ViewGroup viewPoints;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = getLayoutInflater();
pageViews = new ArrayList<View>();
pageViews.add(inflater.inflate(R.layout.page01, null));
pageViews.add(inflater.inflate(R.layout.page02, null));
pageViews.add(inflater.inflate(R.layout.page03, null));
imageViews = new ImageView[pageViews.size()];
viewPics = (ViewGroup) inflater.inflate(R.layout.view_pics, null);
viewPoints = (ViewGroup) viewPics.findViewById(R.id.viewGroup);
viewPager = (ViewPager) viewPics.findViewById(R.id.guidePages);
for (int i = 0; i < pageViews.size(); i++) {
imageView = new ImageView(ViewPagerGuideActivity.this);
imageView.setLayoutParams(new LayoutParams(20, 20));
imageView.setPadding(20, 0, 20, 0);
imageViews[i] = imageView;
if (i == 0) {
imageViews[i]
.setBackgroundResource(R.drawable.page_indicator_focused);
} else {
imageViews[i].setBackgroundResource(R.drawable.page_indicator);
}
viewPoints.addView(imageViews[i]);
}
setContentView(viewPics);
viewPager.setAdapter(new GuidePageAdapter());
viewPager.setOnPageChangeListener(new GuidePageChangeListener());
viewPager.setCurrentItem(Integer.MAX_VALUE/2) ;
}
private int count ;
public void addView(View view){
TextView text = new TextView(this) ;
text.setText(""+count++) ;
pageViews.add(text) ;
}
class GuidePageAdapter extends PagerAdapter {
private ArrayList<Integer> countArray = new ArrayList<Integer>() ;
private int old_c_p = -1 ;
@Override
public void destroyItem(View v, int position, Object arg2) {
System.out.println("destroyItem:" + position );
if(instantiate_cut_p==position%pageViews.size()){
System.out.println("刚生成的界面,避免删除 instantiate_cut_p = "+instantiate_cut_p+" 返回。") ;
return ;
}
System.out.println("成功删除:"+" remove("+position%pageViews.size()+")" );
((ViewPager) v).removeView(pageViews.get(position%pageViews.size()));
countArray.remove(Integer.valueOf(position%pageViews.size())) ;
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
private int oldP = -1;
private int instantiate_cut_p = -1 ;
@Override
public Object instantiateItem(View v, int position) {
System.out
.println("instantiateItem:" + position );
if(countArray.contains(position% pageViews.size())){
System.out.println("还含有这个View,予以删除 删除Integer = "+position% pageViews.size());
((ViewPager) v).removeView(pageViews.get(position % pageViews.size())) ;
instantiate_cut_p = position%pageViews.size() ;
}else{
System.out.println("还没有这个View,添加 add("+position % pageViews.size()+")") ;
countArray.add(position % pageViews.size()) ;
}
System.out.println("添加成功 "+position) ;
((ViewPager) v).addView(pageViews.get(position % pageViews.size()));
return pageViews.get(position % pageViews.size());
}
@Override
public boolean isViewFromObject(View v, Object arg1) {
return v == arg1;
}
@Override
public void startUpdate(View arg0) {
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
}
class GuidePageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < imageViews.length; i++) {
imageViews[position%imageViews.length]
.setBackgroundResource(R.drawable.page_indicator_focused);
if (position != i) {
imageViews[i]
.setBackgroundResource(R.drawable.page_indicator);
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
com.cogent.viewpager.ViewPagerGuideActivity.zip (53个子文件)
com.cogent.viewpager.ViewPagerGuideActivity
bin
classes.dex 227KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
page_indicator_focused.png 1KB
btn_pressed_false.9.png 448B
ic_launcher.png 4KB
title.png 88B
btn_pressed_true.9.png 457B
page_indicator.png 606B
divider_horizontal_line.png 241B
drawable-mdpi
ic_launcher.png 2KB
jarlist.cache 119B
classes
com
cogent
viewpager
BuildConfig.class 349B
R$layout.class 530B
R$id.class 597B
R$drawable.class 791B
R$attr.class 346B
ViewPagerGuideActivity$GuidePageChangeListener.class 1KB
ViewPagerGuideActivity.class 3KB
R.class 545B
R$string.class 484B
ViewPagerGuideActivity$GuidePageAdapter.class 4KB
resources.ap_ 199KB
ViewPagerGuide.apk 296KB
com.cogent.viewpager.ViewPagerGuideActivity.apk 297KB
AndroidManifest.xml 684B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
page_indicator_focused.png 4KB
pic_yibing.jpg 77KB
pic_lindan.jpg 48KB
btn_pressed_false.9.png 287B
ic_launcher.png 4KB
title.png 196B
pic_sunyang.jpg 54KB
btn_pressed_true.9.png 292B
page_indicator.png 3KB
divider_horizontal_line.png 3KB
drawable-xhdpi
drawable
header_btn.xml 304B
values
strings.xml 2KB
drawable-mdpi
ic_launcher.png 3KB
layout
page01.xml 1KB
page03.xml 1KB
view_pics.xml 2KB
page_header.xml 1KB
page02.xml 1KB
assets
gen
com
cogent
viewpager
BuildConfig.java 162B
R.java 2KB
proguard.cfg 1KB
src
com
cogent
viewpager
ViewPagerGuideActivity.java 5KB
.project 850B
.classpath 508B
project.properties 361B
AndroidManifest.xml 684B
libs
android-support-v4.jar 219KB
共 53 条
- 1
tanseadog
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页