android imageLoader+AutoScrollViewPager+indicator+屏幕适配
2015-01-26 17:26
567 查看
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(); } }
相关文章推荐
- Android PullToRefreshScrollView、AutoHeightListView、AutoScrollViewPager的使用
- android自定义控件-AutoScrollViewpager(无限滚动轮播控件)
- android自定义适配屏幕的ImageView
- android自定义适配屏幕的ImageView
- AutoScrollViewPager与PageIndicator无限循环混合使用
- 初学Android之viewPager+imageLoader+图片圆角(类似qq头像)+xListView+DrawLayout
- Android Auto Scroll ViewPager (Smooth)
- android-auto-scroll-view-pager (无限广告轮播图)
- Android Auto Scroll ViewPager (Smooth)
- autoscrollviewpager + indicator 无限滚动
- Android 之 AutoScrollViewPager
- Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题
- android-auto-scroll-view-pager-master的使用
- android-auto-scroll-view-pager
- Android中如何在ViewPager中使动态创建的ImageView铺满屏幕
- Android Auto Scroll ViewPager (Smooth)
- Android-ViewPagerIndicator框架使用——TitlePageIndicator
- Android之分頁效果-ViewPager、Indicator、Fragment
- Github-Client(ANDROID)开源之旅(三) ------ 巧用ViewPagerIndicator
- Android-ViewPagerIndicator框架使用——LinePageIndicator