android imageLoader+AutoScrollViewPager+indicator+屏幕适配

package com.example.demo;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager;

public class MainActivity extends Activity {
	private AutoScrollViewPager bannerBgViewPager;
	private List<Bean> list;
	private int bannserSize = 0;
	private boolean bannerIsScrolling = false;
	private LinearLayout indicator;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		bannerBgViewPager = (AutoScrollViewPager) findViewById(R.id.index_banner_bg_viewpager);
		indicator=(LinearLayout) findViewById(R.id.indicator);
		Bean bean = new Bean();
		bean.setUrl("http://172.16.203.136:8080/test/images/001.png");
		Bean bean2 = new Bean();
		bean2.setUrl("http://172.16.203.136:8080/test/images/002.png");
		Bean bean3 = new Bean();
		bean3.setUrl("http://172.16.203.136:8080/test/images/003.png");
		Bean bean4 = new Bean();
		bean4.setUrl("http://172.16.203.136:8080/test/images/004.png");
		list = new ArrayList<Bean>();
		list.add(bean);
		list.add(bean2);
		list.add(bean3);
		list.add(bean4); 
		show(list);
	}

	private void show(List<Bean> list) {
		bannerBgViewPager.setOffscreenPageLimit(2);
		bannerBgViewPager.setAdapter(new BannerImageAdapter(this, list));
		bannerBgViewPager.setInterval(5000);
		bannerBgViewPager.setScrollDurationFactor(3);
		if (list.size() > 1)
			bannerBgViewPager.startAutoScroll();
		bannerBgViewPager.setCurrentItem(0);
		bannserSize = list.size();
		bannerIsScrolling = true;
		final List<TextView> textViewList = initIndicator(list);
		bannerBgViewPager.setOnPageChangeListener(new OnPageChangeListener() {

			int index = 0;

			@Override
			public void onPageSelected(int arg0) {
				index = arg0 % textViewList.size();
				for (int i = 0; i < textViewList.size(); i++) {
					textViewList.get(i).setBackgroundResource(R.drawable.dot_normal);
				}
				textViewList.get(index).setBackgroundResource(R.drawable.dot_foucs);
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});
	}

	private List<TextView> initIndicator(List<Bean> list) {
		List<TextView> textViewList = null;
		textViewList = new ArrayList<TextView>();
		TextView textView;
		for (int i = 0; i < list.size(); i++) {
			textView = new TextView(this);
			textView.setWidth(this.getScaleValue(18));
			textView.setHeight(this.getScaleValue(6));
			if (0 == i) {
				textView.setBackgroundResource(R.drawable.dot_foucs);
			} else {
				textView.setBackgroundResource(R.drawable.dot_normal);
			}
			indicator.addView(textView);
			textViewList.add(textView);
		}
		return textViewList;
	}

	@SuppressWarnings("deprecation")
	protected int getScaleValue(int originalValue) {
		int value = 0;
		BigDecimal sacle = new BigDecimal(originalValue);
		BigDecimal sacleChange = null;
		switch (this.getWindowManager().getDefaultDisplay().getWidth()) {
		case 320:
			sacleChange = new BigDecimal(Constants.MDPI_SCALE_CHANGE);
			break;
		case 480:
			sacleChange = new BigDecimal(Constants.HDPI_SCALE_CHANGE);
			break;
		case 640:
			sacleChange = new BigDecimal(Constants.HDPI_SCALE_CHANGE);
			break;
		case 720:
			sacleChange = new BigDecimal(Constants.XHDPI_SCALE_CHANGE);
			break;
		case 1080:
			sacleChange = new BigDecimal(Constants.XXHDPI_SCALE_CHANGE);
			break;
		default:
			sacleChange = new BigDecimal(this.getWindowManager()
					.getDefaultDisplay().getWidth() / 320);
		}
		sacle = sacle.multiply(sacleChange).setScale(0, BigDecimal.ROUND_DOWN);
		value = sacle.intValue();
		return value;
	}

}




package com.example.demo;

public class Bean {
	private String url;

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
}



package com.example.demo;

public class Constants {
	public static final float MDPI_SCALE_CHANGE = 1.0f;

	public static final float HDPI_SCALE_CHANGE = 1.5f;

	public static final float XHDPI_SCALE_CHANGE = 2.25f;

	public static final float XXHDPI_SCALE_CHANGE = 3.375f;
}



package com.example.demo;

import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * <b>BannerImageAdapter。</b>
 * <p><b>详细说明:</b></p>
 * <!-- 在此添加详细说明 -->
 * 无。
 * <p><b>修改列表:</b></p>
 * <table width="100%" cellSpacing=1 cellPadding=3 border=1>
 * <tr bgcolor="#CCCCFF"><td>序号</td><td>作者</td><td>修改日期</td><td>修改内容</td></tr>
 * <!-- 在此添加修改列表,参考第一行内容 -->
 * <tr><td>1</td><td>Wancheng</td><td>2014-5-31 上午10:29:21</td><td>建立类型</td></tr>
 * 
 * </table>
 * @version 1.0
 * @author Wancheng
 * @since 1.0
 */
public class BannerImageAdapter
		extends PagerAdapter {

	private Context context;
	private List<Bean> bannerList;
	private ImageLoader imageLoader;
	private DisplayImageOptions options;

	/**
	 * <b>构造方法。</b>  
	 * <p><b>详细说明:</b></p>
	 * <!-- 在此添加详细说明 -->
	 * 无。
	 * @param context
	 * @param bannerList
	 */
	public BannerImageAdapter(Context context, List<Bean> bannerList) {
		this.context = context;
		this.bannerList = bannerList;
		this.imageLoader = ImageLoader.getInstance();
		imageLoader.init(ImageLoaderConfiguration.createDefault(context));
		initImageOptions();
	}

	@Override
	public int getCount() {
		// return null == bannerList ? 0 : bannerList.size();
		return Integer.MAX_VALUE;
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == arg1;
	}

	@Override
	public Object instantiateItem(View parent, final int index) {
		ImageView image = new ImageView(context);
		image.setLayoutParams(new LayoutParams(-1, -1));
		image.setScaleType(ScaleType.CENTER_CROP);
		image.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
			/*	Intent intent = new Intent(context, BannerDetailActivity.class);
				intent.putExtra(BannerDetailActivity.BANNER_ACTIVITY_OBJ, bannerList.get(index % bannerList.size()));
				intent.putExtra(BannerDetailActivity.BANNER_ACTIVITY_LIST, (ArrayList<?>) bannerList);
				((Activity) context).startActivity(intent);*/
			}
		});
		((AutoScrollViewPager) parent).addView(image);
		if (null != bannerList) imageLoader.displayImage(bannerList.get(index % bannerList.size()).getUrl(), image, options);
		return image;
	}

	@Override
	public void destroyItem(View parent, int index, Object currentItem) {
		((AutoScrollViewPager) parent).removeView((ImageView) currentItem);
	}

	/**
	 * @return the bannerList
	 */
	public List<Bean> getList() {
		return bannerList;
	}

	/**
	 * @param bannerList the bannerList to set
	 */
	public void setList(List<Bean> bannerList) {
		this.bannerList = bannerList;
	}

	private void initImageOptions() {
		options = new DisplayImageOptions.Builder().resetViewBeforeLoading(true).delayBeforeLoading(1000).cacheInMemory(true).cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).handler(new Handler()).build();
	}
}






















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值