主activity代码
package com.example.viewpager;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.baway.GetList.GetList;
import com.baway.bean.Image;
import com.baway.http.GetJson;
import com.example.adapter.VpAdapter;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class MainActivity extends Activity {
private String url = "http://i.dxy.cn/snsapi/event/count/list/all";
private ViewPager vp;
ArrayList<ImageView> list;
private ArrayList<Image> imagelist;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 获取当前位置
vp.setCurrentItem(vp.getCurrentItem() + 1);
// 设置页面跳转时间间隔
handler.sendEmptyMessageDelayed(0, 2000);
};
};
private GetJson gj;
private GetList gl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 设置页面跳转时间间隔(首次运行)
handler.sendEmptyMessageDelayed(0, 2000);
gj = new GetJson();
gl = new GetList();
vp = (ViewPager) findViewById(R.id.vp);
new Mythread().start();
}
private void getimage() {
list = new ArrayList<ImageView>();
for (int i = 0; i < imagelist.size(); i++) {
ImageView iv = new ImageView(getApplicationContext());
// 图像拉伸
iv.setScaleType(ScaleType.FIT_XY);
// 配置imageloadler加载图片
ImageLoader loader = ImageLoader.getInstance();
loader.init(ImageLoaderConfiguration
.createDefault(getApplicationContext()));
loader.displayImage(imagelist.get(i).getPath(), iv);
list.add(iv);
//imageview监听
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
//按下状态停止播放
handler.removeCallbacksAndMessages(null);
}else if(event.getAction()==MotionEvent.ACTION_CANCEL){
//取消时,发送消息
handler.sendEmptyMessageDelayed(0, 2000);
}else if(event.getAction()==MotionEvent.ACTION_UP){
//抬起时,发送消息
handler.sendEmptyMessageDelayed(0, 2000);
}
return true;
}
});
}
}
class Mythread extends Thread {
private RadioGroup rg;
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
String imagejson = gj.getjson(url);
Log.d("-----------------------------", imagejson);
imagelist = gl.getimagelist(imagejson);
Log.d("-----------------------------", imagelist.size() + "");
runOnUiThread(new Runnable() {
public void run() {
//添加小圆点
setdian();
// 为imageview适配图片
getimage();
// adapter适配数据
vp.setAdapter(new VpAdapter(list));
//vp 滑动监听
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
rg.check(arg0%imagelist.size());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
});
}
protected void setdian() {
//添加边距
int wrap = RadioGroup.LayoutParams.WRAP_CONTENT;
RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap);
params.leftMargin = 5;
rg = (RadioGroup) findViewById(R.id.rg);
for (int i = 0; i < imagelist.size(); i++) {
RadioButton rb = new RadioButton(getApplicationContext());
rb.setId(i);
// 设置button属性
rb.setButtonDrawable(R.drawable.select_button);
// 如果是第一个时,不需要加左边距
if (i != 0) {
rg.addView(rb, params);
} else
rg.addView(rb);
}
rg.check(0);
}
}
}
适配器代码
package com.example.adapter;
import java.util.ArrayList;
import android.R.integer;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class VpAdapter extends PagerAdapter {
private ArrayList<ImageView> list;
public VpAdapter(ArrayList<ImageView> list) {
super();
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv=list.get(position%list.size());
container.addView(iv);
return iv;
}
}
XML文件
button1
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<!-- 画圆点 -->
<stroke
android:width="1dp"
android:color="#00f"
/>
<solid
android:color="#0f0"
/>
<size
android:height="10dp"
android:width="10dp"
/>
</shape>
bitton2
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<!-- 画圆点 -->
<stroke
android:width="1dp"
android:color="#00f"
/>
<solid
android:color="#fff"
/>
<size
android:height="10dp"
android:width="10dp"
/>
</shape>
select文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button" android:state_checked="true"></item>
<item android:drawable="@drawable/button1" android:state_checked="false"></item>
</selector>