1.MainActivity类
@Override
public void handleMessage(Message msg) {
viewPager.setCurrentItem(page);
}
private int page;
private ViewPager viewPager;
private List imageList;
private LinearLayout linear;
private int oldPositon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得控件
viewPager = (ViewPager) findViewById(R.id.viewPager);
imageList = Arrays.asList("http://cdn.duitang.com/uploads/blog/201308/18/20130818150526_Ru2Bk.thumb.600_0.png",
"http://www.bkill.com/u/info_img/2012-09/02/2012083116140522302.jpg",
"http://www.it165.net/uploadfile/2011/1218/20111218070928328.jpg");
//加载图片到ViewPager上
initView();
//自动轮播
autoplay();
}
private void autoplay() {
new Thread(){
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//增加图片下标玛
page++;
//发送空消息
handler.sendEmptyMessage(0);
}
}
}.start();
}
//加载图片的方法
public void initView(){
viewPager.setAdapter(new MyPagerAdapter());
linear = (LinearLayout)findViewById(R.id.linear);
for (int i = 0; i小于imageList.length;i++){
View doView = new View(this);
//小圆点的大小
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30,30);
//小圆点左边距和右边距
params.rightMargin = 10;
params.leftMargin = 10;
//加载小圆点到视图中
doView.setLayoutParams(params);
//当显示的图片的下标和i相等时,显示选中状态
if(i == 0){
doView.setBackgroundResource(R.drawable.shape_select);
//否则。
}else {
doView.setBackgroundResource(R.drawable.shape_normal);
}
//把布局加载到linearlayouot
linear.addView(doView);
}
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//图片改变后,让小圆点改变为当前下标状态
linear.getChildAt(position % imageList.size()).setBackgroundResource(R.drawable.shape_select);
//其他的改变为默认
linear.getChildAt(oldPositon % imageList.size()).setBackgroundResource(R.drawable.shape_normal);
//将当前下标赋给之前的下标
oldPositon = position;
}
@Override
public void onPageScrollStateChanged
(int state) {
}
});
}
//ViewPager的适配器类
public class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
//数量为2147483647
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView image = new ImageView(MainActivity.this);
ImageLoader.getInstance().displayImage(imageList.get(position % imageList.size()),image,MyApplication.getOptions());
container.addView(image);
return image;
}
}
@Override
public void onCreate() {
super.onCreate();
//缓存路径
String path = Environment.getExternalStorageDirect
ory()+"/1507D";
File cacheDir = new File(path);
ImageLoaderConfiguration
config = new ImageLoaderConfiguration
.Builder(this)
//开启线程数量
.threadPoolSize(3)
//线程优先级
.threadPriority(100)
.memoryCacheExtraOptions(480,800)
.memoryCacheSize(20 * 1024 * 1024)
.diskCache(new UnlimitedDiskCache(cacheDir))
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileNameGenerat
or(new Md5FileNameGenerator())
.build();
ImageLoader.getInstance().init(config);
}
public static DisplayImageOptions getOptions(){
DisplayImageOptions options = new DisplayImageOptions.Builder()
//对图片进行sd卡缓存
.cacheInMemory(true)
//图片进行内存缓存
.cacheOnDisk(true)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher_round)
.build();
return options;
}
public class MainActivity extends AppCompatActivity {
Handler handler = new Handler(){
};
}
2.Application类
public class MyApplication extends Application {
}