您的位置:首页 > 移动开发 > Android开发

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: