package com.bdyjy.custom.view; import java.util.ArrayList; import android.annotation.SuppressLint; import android.content.Context; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView; import com.bdyjy.R; import com.loopj.android.image.SmartImageView; public class ImageShow extends LinearLayout{ /** * 上下文 */ private Context mContext; /** * 图片轮播视图 */ private ViewPager mAdvPager = null; /** * 滚动图片视图适配 */ private ImageCycleAdapter mAdvAdapter; /** * 图片轮播指示器控件 */ private ViewGroup mGroup; private TextView viewGroup2; /** * 图片轮播指示个图 */ private ImageView mImageView = null; private TextView mTitleView = null; /** * 滚动图片指示视图列表 */ private ImageView[] mImageViews = null; private TextView[] mTitleViews = null; /** * 图片滚动当前图片下标 */ private boolean isStop; /** * 游标是圆形还是长条,要是设置�?0是长条,要是1就是圆形 默认是圆�? */ public int stype = 1; /** * @param context */ public ImageShow(Context context) { super(context); } /** * @param context * @param attrs */ @SuppressLint("Recycle") public ImageShow(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; LayoutInflater.from(context).inflate(R.layout.ad_cycle_view, this); mAdvPager = (ViewPager) findViewById(R.id.adv_pager); mAdvPager.setOnPageChangeListener(new GuidePageChangeListener()); // 滚动图片右下指示器视 mGroup = (ViewGroup) findViewById(R.id.viewGroup); viewGroup2 = (TextView) findViewById(R.id.viewGroup2); } /** * 装填图片数据 * * @param imageUrlList * @param imageCycleViewListener */ public void setImageResources(ArrayList<String> imageUrlList, ArrayList<String> imageTitle, ImageCycleViewListener imageCycleViewListener, int stype,int conrentItem) { this.stype = stype; // 清除 mGroup.removeAllViews(); // viewGroup2.removeAllViews(); // 图片广告数量 final int imageCount = imageUrlList.size(); mImageViews = new ImageView[imageCount]; mTitleViews = new TextView[imageCount]; for (int i = 0; i < imageCount; i++) { mImageView = new ImageView(mContext); mTitleView = new TextView(mContext); LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.leftMargin = 30; mImageView.setScaleType(ScaleType.CENTER_CROP); mImageView.setLayoutParams(params); mImageViews[i] = mImageView; mTitleViews[i] = mTitleView; // mTitleViews[i] = mTitleView; if (i == 0) { if (this.stype == 1) mImageViews[i] .setBackgroundResource(R.drawable.banner_dian_focus); else mImageViews[i] .setBackgroundResource(R.drawable.cicle_banner_dian_focus); } else { if (this.stype == 1) mImageViews[i] .setBackgroundResource(R.drawable.banner_dian_blur); else mImageViews[i] .setBackgroundResource(R.drawable.cicle_banner_dian_blur); } mGroup.addView(mImageViews[i]); // viewGroup2.addView(mTitleViews[i]); } mAdvAdapter = new ImageCycleAdapter(mContext, imageUrlList, imageTitle, imageCycleViewListener); mAdvPager.setAdapter(mAdvAdapter); mAdvPager.setCurrentItem(conrentItem); } /** * 轮播图片监听 * * @author minking */ private final class GuidePageChangeListener implements OnPageChangeListener { @Override public void onPageScrollStateChanged(int state) { //if (state == ViewPager.SCROLL_STATE_IDLE) //startImageTimerTask(); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int index) { index = index % mImageViews.length; // 设置当前显示的图�? // 设置图片滚动指示器背 if (stype == 1) mImageViews[index] .setBackgroundResource(R.drawable.banner_dian_focus); else mImageViews[index] .setBackgroundResource(R.drawable.cicle_banner_dian_focus); for (int i = 0; i < mImageViews.length; i++) { if (index != i) { if (stype == 1) mImageViews[i] .setBackgroundResource(R.drawable.banner_dian_blur); else mImageViews[i] .setBackgroundResource(R.drawable.cicle_banner_dian_blur); } } } } private class ImageCycleAdapter extends PagerAdapter { /** * 图片视图缓存列表 */ private ArrayList<SmartImageView> mImageViewCacheList; /** * 图片资源列表 */ private ArrayList<String> mAdList = new ArrayList<String>(); private ArrayList<String> mATitle = new ArrayList<String>(); /** * 广告图片点击监听 */ private ImageCycleViewListener mImageCycleViewListener; private Context mContext; public ImageCycleAdapter(Context context, ArrayList<String> adList, ArrayList<String> title, ImageCycleViewListener imageCycleViewListener) { this.mContext = context; this.mAdList = adList; this.mATitle = title; mImageCycleViewListener = imageCycleViewListener; mImageViewCacheList = new ArrayList<SmartImageView>(); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object obj) { return view == obj; } @Override public Object instantiateItem(ViewGroup container, final int position) { String imageUrl = mAdList.get(position % mAdList.size()); String title = mATitle.get(position % mATitle.size()); Log.i("imageUrl", imageUrl + title); viewGroup2.setText(title); SmartImageView imageView = null; if (mImageViewCacheList.isEmpty()) { imageView = new SmartImageView(mContext); imageView.setLayoutParams(new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); // 之前设置图片点击监听写在了这里�?�是错误�? // test imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { imageView = mImageViewCacheList.remove(0); } // 设置图片点击监听 imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mImageCycleViewListener.onImageClick( position % mAdList.size(), v); } }); imageView.setTag(imageUrl); container.addView(imageView); imageView.setImageUrl(imageUrl); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { SmartImageView view = (SmartImageView) object; mAdvPager.removeView(view); mImageViewCacheList.add(view); } } /** * 轮播控件的监听事�? * * @author minking */ public static interface ImageCycleViewListener { /** * 单击图片事件 * * @param position * @param imageView */ public void onImageClick(int position, View imageView); } }