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 {
}