public class SlideShowAdView extends FrameLayout {
//轮播图图片数量
private static int IMAGE_COUNT = 3;
//自动轮播的时间间隔
private final static int TIME_INTERVAL = 5;
//自动轮播启用开关
private final static boolean isAutoPlay = false;
//自定义轮播图的资源ID
private List imageAd;
//放轮播图片的ImageView 的list
private List imageViewsList;
//放圆点的View的list
private List dotViewsList;
private ViewPager viewPager;
private DisplayImageOptions options;
private Context context;
//当前轮播页
private int currentItem = 0;
//定时任务
private ScheduledExecutorService scheduledExecutorService;
//Handler
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
viewPager.setCurrentItem(currentItem);
}
};
private void initNeedUtil()
{
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.jky_jzsbd)
// 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.jky_jzsbd)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.jky_jzsbd)
// 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true)
// 设置下载的图片是否缓存在内存中
.cacheOnDisc(true)
// 设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.NONE)
.bitmapConfig(Bitmap.Config.RGB_565)// 防止内存溢出的,图片太多就这这个。还有其他设置
// .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context).threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)// 缓存大小
.discCacheSize(50 * 1024 * 1024)// 存储卡缓存大小
.discCacheFileCount(100)// 文件数量
.tasksProcessingOrder(QueueProcessingType.LIFO).build();
ImageLoader.getInstance().init(config);// 创建配置过得DisplayImageOption对象
}
public SlideShowAdView(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
this.context=context;
initNeedUtil();
}
public SlideShowAdView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
// TODO Auto-generated constructor stub
this.context=context;
initNeedUtil();
}
public SlideShowAdView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
this.context=context;
initNeedUtil();
initData(context);
}
private void startPlay(){
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleAtFixedRate(new SlideShowTask(), 1, 4, TimeUnit.SECONDS);
}
private void stopPlay(){
scheduledExecutorService.shutdown();
}
private void initData(Context context){
imageViewsList = new ArrayList();
dotViewsList = new ArrayList();
try {
// 开一条子线程加载网络数据
Runnable runnable = new Runnable() {
public void run() {
try {
imageAd=new ProductUtils().GetIndexAdInfo();
// 发送消息,并把jsonArray结合对象传递过去