主方法实现ViewPager 定时轮播
public class Fragment1 extends Fragment {
private ListView lv;
private ViewPager pager;
private ArrayList<String> imglist;
private int index = 0;
private int num = 0;
private LinearLayout m1_lin;
private ArrayList<View> dotlist;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
pager.setCurrentItem(index);
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1,container,false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
pager = (ViewPager) getView().findViewById(R.id.m1_pager);
lv = (ListView) getView().findViewById(R.id.m1_Lv);
m1_lin = (LinearLayout) getView().findViewById(R.id.m1_lin);
//添加路径
onNews("http://v.juhe.cn/toutiao/index?key=aa8e1225f554f4bd8e06938f12052c3c");
initDate();
//适配器
pager.setAdapter(new MyAdapter());
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
dotlist.get(position % imglist.size()).setBackgroundResource(R.mipmap.dots2);
dotlist.get(num % imglist.size()).setBackgroundResource(R.mipmap.dot1);
num = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
initTime();
}
//定时轮播
private void initTime() {
new Thread(){
@Override
public void run() {
super.run();
while (true){
SystemClock.sleep(3000);
index++;
handler.sendEmptyMessage(0);
}
}
}.start();
}
//图片,圆点添加
private void initDate() {
imglist = new ArrayList<>();
imglist.add("http://05.imgmini.eastday.com/mobile/20170428/20170428132056_cf934aae3576fff9f869cedfbc057d38_10_mwpm_03200403.jpeg");
imglist.add("http://07.imgmini.eastday.com/mobile/20170428/20170428124256_c0248c305d14930205b01427aad882e1_10_mwpm_03200403.jpeg");
imglist.add("http://06.imgmini.eastday.com/mobile/20170428/20170428_13b25cf3208f2c15f215068b1de800d9_cover_mwpm_03200403.png");
imglist.add("http://02.imgmini.eastday.com/mobile/20170428/20170428_f80f5e0c8500d2d8c84168501ae75a62_cover_mwpm_03200403.jpeg");
imglist.add("http://08.imgmini.eastday.com/mobile/20170428/20170428_e23054d0295b13c85880f2a4284db9db_cover_mwpm_03200403.jpeg");
imglist.add("http://02.imgmini.eastday.com/mobile/20170428/20170428_8a23c60666d3f0c2251da17e13cc6a5f_cover_mwpm_03200403.jpeg");
//小圆点
dotlist = new ArrayList<>();
for (int i = 0 ; i < imglist.size(); i ++){
View view = new View(getActivity());
view.setLayoutParams(new LinearLayout.LayoutParams(20,20));
dotlist.add(view);
if (i == 0){
dotlist.get(i).setBackgroundResource(R.mipmap.dots2);
}else{
dotlist.get(i).setBackgroundResource(R.mipmap.dot1);
}
m1_lin.addView(dotlist.get(i));
}
}
//重写适配器
class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
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) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
final ImageView imageView = new ImageView(getActivity());
//接口回调
new MyAsyncet(new MyAsyncet.onImgInfo() {
@Override
public void toInfo(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
}).execute(imglist.get(position % imglist.size()));
container.addView(imageView);
return imageView;
}
}
}
这是一个帮助类,实现请求图片
public class MyAsyncet extends AsyncTask<String,Void,Bitmap> {
//接口
private onImgInfo info;
public interface onImgInfo{
void toInfo(Bitmap bitmap);
}
public MyAsyncet (onImgInfo info){
this.info = info;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap != null){
info.toInfo(bitmap);
}
}
@Override
protected Bitmap doInBackground(String... params) {
try {
String path = params[0];
URL url = new URL(path);
HttpURLConnection connect = (HttpURLConnection) url.openConnection();
connect.setRequestMethod("GET");
connect.setConnectTimeout(5000);
connect.setReadTimeout(5000);
int code = connect.getResponseCode();
if (code == 200){
InputStream input = connect.getInputStream();
return BitmapFactory.decodeStream(input);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}