自定义一个view
1 public class AdView extends RelativeLayout { 2 3 4 private List<String> urls; 5 private ViewPager pager; 6 private int currentItem = 0; 7 private Context mContext; 8 private LinearLayout group; 9 private ImageView[] pointImages; //指示pointer 10 private ImageView pointImage; 11 12 13 public AdView(Context context, AttributeSet attrs) { 14 super(context, attrs); 15 // TODO Auto-generated constructor stub 16 this.mContext=context; 17 LayoutInflater.from(context).inflate(R.layout.activity_ad_item,this); 18 pager = (ViewPager) findViewById(R.id.ad_item_viewpager); 19 20 } 21 public void initAdView(List<String> urls,onAdItemClickListener adItemClickListener) { 22 this.urls = urls; 23 group=(LinearLayout) findViewById(R.id.point_lay); 24 group.removeAllViews(); 25 pointImages=new ImageView[urls.size()]; 26 for(int i=0;i<urls.size();i++){ 27 pointImage=new ImageView(mContext); 28 pointImage.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 29 pointImage.setPadding(10, 0, 10, 0); 30 pointImages[i]=pointImage; 31 if(i==0){ 32 pointImages[0].setBackgroundResource(R.drawable.check_box_checked); 33 }else{ 34 pointImages[i].setBackgroundResource(R.drawable.check_box_normal); 35 } 36 group.addView(pointImages[i]); 37 } 38 pager.setAdapter(new AdAdapter(adItemClickListener)); 39 pager.setOffscreenPageLimit(1); 40 pager.setCurrentItem(0); 41 startAdNext(); 42 43 pager.setOnTouchListener(new OnTouchListener() { 44 45 @Override 46 public boolean onTouch(View v, MotionEvent event) { 47 // TODO Auto-generated method stub 48 switch (event.getAction()) { 49 case MotionEvent.ACTION_DOWN: 50 stopAdNext(); 51 52 break; 53 case MotionEvent.ACTION_UP: 54 startAdNext(); 55 break; 56 } 57 58 return false; 59 } 60 }); 61 pager.setOnPageChangeListener(new OnPageChangeListener() { 62 63 @Override 64 public void onPageSelected(int index) { 65 // TODO Auto-generated method stub 66 currentItem=index; 67 pointImages[index].setBackgroundResource(R.drawable.check_box_checked); 68 for(int i=0;i<pointImages.length;i++){ 69 70 if(index!=i){ 71 pointImages[i].setBackgroundResource(R.drawable.check_box_normal); 72 } 73 } 74 } 75 76 @Override 77 public void onPageScrolled(int arg0, float arg1, int arg2) { 78 // TODO Auto-generated method stub 79 80 } 81 82 @Override 83 public void onPageScrollStateChanged(int state) { 84 // TODO Auto-generated method stub 85 //System.out.println("===onPageScrollStateChanged===="+arg0); 86 /* 87 * SCROLL_STATE_IDLE: pager处于空闲状态 SCROLL_STATE_DRAGGING: pager处于正在拖拽中 88 * SCROLL_STATE_SETTLING: pager正在自动沉降,相当于松手后,pager恢复到一个完整pager的过程 89 */ 90 if(state==ViewPager.SCROLL_STATE_IDLE){//未拖动页面 91 startAdNext(); 92 } 93 } 94 }); 95 96 } 97 98 Handler handler=new Handler(); 99 100 private void startAdNext(){ 101 102 103 handler.postDelayed(run, 3000); 104 105 } 106 public void stopAdNext(){ 107 handler.removeCallbacks(run); 108 } 109 110 private Runnable run=new Runnable() { 111 112 @Override 113 public void run() { 114 // TODO Auto-generated method stub 115 if(++currentItem==urls.size()){ 116 currentItem=0; 117 } 118 pager.setCurrentItem(currentItem); 119 } 120 }; 121 public interface onAdItemClickListener { 122 123 public void onImageClick(int position, View v); 124 125 } 126 private onAdItemClickListener onadItemClickListener; 127 128 class AdAdapter extends PagerAdapter { 129 130 public AdAdapter(onAdItemClickListener adItemClickListener) { 131 // TODO Auto-generated constructor stub 132 onadItemClickListener=adItemClickListener; 133 } 134 135 @Override 136 public int getCount() { 137 // TODO Auto-generated method stub 138 return urls.size(); 139 } 140 141 @Override 142 public boolean isViewFromObject(View arg0, Object arg1) { 143 // TODO Auto-generated method stub 144 return arg0 == arg1; 145 } 146 147 @Override 148 public void destroyItem(ViewGroup container, int position, Object object) { 149 // TODO Auto-generated method stub 150 container.removeView((View) object); 151 } 152 153 154 @Override 155 public Object instantiateItem(ViewGroup container, final int position) { 156 // TODO Auto-generated method stub 157 ImageView image = new ImageView(getContext()); 158 image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 159 LayoutParams.MATCH_PARENT)); 160 image.setScaleType(ScaleType.FIT_XY); 161 image.setOnClickListener(new OnClickListener() { 162 163 @Override 164 public void onClick(View v) { 165 // TODO Auto-generated method stub 166 onadItemClickListener.onImageClick(position,v); 167 } 168 }); 169 ImageLoader.getInstance().displayImage(urls.get(position), image); 170 171 container.addView(image); 172 return image; 173 } 174 175 } 176 }
在activity中初始化即可
1 adView.initAdView(data,new onAdItemClickListener() { 2 3 @Override 4 public void onImageClick(int position, View v) { 5 // TODO Auto-generated method stub 6 Toast.makeText(getBaseContext(), "---"+position, 0).show(); 7 } 8 });
初始化ImagerLoader
1 private void initImageLoader() { 2 DisplayImageOptions options = new DisplayImageOptions.Builder() 3 .resetViewBeforeLoading(true) 4 .cacheInMemory(true)//by patrick,to avoid image flicker in listview when item reused.it is tested that it will not cost much memory use 5 .cacheOnDisk(true) 6 .imageScaleType(ImageScaleType.EXACTLY) 7 .bitmapConfig(Bitmap.Config.RGB_565) 8 .considerExifParams(true) 9 .displayer(new SimpleBitmapDisplayer()) 10 .build(); 11 12 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) 13 .threadPoolSize(5) // default 14 .threadPriority(Thread.NORM_PRIORITY - 1) // default 15 .tasksProcessingOrder(QueueProcessingType.LIFO) // default 16 .denyCacheImageMultipleSizesInMemory() 17 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) 18 .memoryCacheSize(2 * 1024 * 1024) 19 .memoryCacheSizePercentage(13) // default 20 21 .imageDownloader(new BaseImageDownloader(this)) // default 22 .imageDecoder(new BaseImageDecoder(true)) // default 23 .defaultDisplayImageOptions(options) // default 24 .build(); 25 26 ImageLoader.getInstance().init(config); 27 }

浙公网安备 33010602011771号