无限轮播
2016-06-13 16:55
260 查看
activity_maim.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dp"
>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/vp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#708090"
android:layout_alignParentBottom="true">
<TextView
android:gravity="center"
android:id="@+id/tv_info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="qqq"/>
<LinearLayout
android:id="@+id/ll_dot"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</RelativeLayout>
vp_fouse.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<solid android:color="#f00"/>
</shape>
vp_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<solid android:color="#fff"/>
</shape>
adapter
package com.example.vp.adapter;
import java.util.List;
import com.example.vp.bean.ViewBean.Adlist;
import com.nostra13.universalimageloader.core.ImageLoader;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class MyPagerAdapter extends PagerAdapter {
Context context;
List<Adlist> list;
public MyPagerAdapter(Context context, List<Adlist> list) {
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
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 = new ImageView(context);
container.addView(iv);
ImageLoader.getInstance().displayImage(list.get(position%list.size()).img, iv);
return iv;
}
}
bean
package com.example.vp.bean;
import java.util.List;
public class ViewBean {
public Data data;
public String msg;
public String status;
public class Data{
public List<Adlist> adlist;
}
public class Adlist {
public String id;
public String img;
public String name;
public String stype;
public String title;
public String url;
}
}
NetWorkUTils
package com.example.vp.utils;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class NetWorkUtils {
static String path ="http://www.meirixue.com/api.php?c=index&a=index";
public static String getStr(){
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(path);
try {
HttpResponse response = client.execute(get);
int code = response.getStatusLine().getStatusCode();
if(code==200){
String json = EntityUtils.toString(response.getEntity());
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
activity
package com.example.vp;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import com.example.vp.adapter.MyPagerAdapter;
import com.example.vp.bean.ViewBean;
import com.example.vp.bean.ViewBean.Adlist;
import com.example.vp.utils.NetWorkUtils;
import com.google.gson.Gson;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
private ViewPager vp;
private TextView tv_info;
private LinearLayout ll_dot;
private List<Adlist> list;
private List<ImageView> alist=new ArrayList<ImageView>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_info = (TextView) findViewById(R.id.tv_info);
ll_dot=(LinearLayout)findViewById(R.id.ll_dot);
vp=(ViewPager)findViewById(R.id.vp);
initData();
}
private void initData() {
new Thread(){
private String str;
public void run() {
str = NetWorkUtils.getStr();
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
ViewBean bean = gson.fromJson(str, ViewBean.class);
list = bean.data.adlist;
vp.setAdapter(new MyPagerAdapter(MainActiv
4000
ity.this,list));
// 初始化小圆点
initDot();
vp.setCurrentItem(list.size()*2);
vpListen();
startTimer();
}
});
};
}.start();
}
private void startTimer() {
Timer tmr = new Timer();
tmr.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
int currentItem = vp.getCurrentItem();
vp.setCurrentItem(++currentItem);
}
});
}
}, 0, 2000);
}
private void vpListen() {
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < alist.size(); i++) {
if(arg0%list.size()==i){
// viewpager的点和图片一致
alist.get(arg0%list.size()).setImageResource(R.drawable.vp_fouse);
}else{
alist.get(i).setImageResource(R.drawable.vp_normal);
}
tv_info.setText(list.get(arg0%list.size()).title);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
/**
* 初始化小圆点
*/
private void initDot() {
if(alist!=null){
alist.clear();
}
for (int i = 0; i < list.size(); i++) {
ImageView iv = new ImageView(MainActivity.this);
if(i==0){
// 小圆点选中
iv.setImageResource(R.drawable.vp_fouse);
}else{
iv.setImageResource(R.drawable.vp_normal);
}
tv_info.setText(list.get(i).title);
LayoutParams params=new LayoutParams(10, 10);
params.setMargins(20, 0, 20, 0);
// 将圆点存到集合中
alist.add(iv);
ll_dot.addView(iv, params);
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dp"
>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/vp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#708090"
android:layout_alignParentBottom="true">
<TextView
android:gravity="center"
android:id="@+id/tv_info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="qqq"/>
<LinearLayout
android:id="@+id/ll_dot"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</RelativeLayout>
vp_fouse.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<solid android:color="#f00"/>
</shape>
vp_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<solid android:color="#fff"/>
</shape>
adapter
package com.example.vp.adapter;
import java.util.List;
import com.example.vp.bean.ViewBean.Adlist;
import com.nostra13.universalimageloader.core.ImageLoader;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class MyPagerAdapter extends PagerAdapter {
Context context;
List<Adlist> list;
public MyPagerAdapter(Context context, List<Adlist> list) {
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
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 = new ImageView(context);
container.addView(iv);
ImageLoader.getInstance().displayImage(list.get(position%list.size()).img, iv);
return iv;
}
}
bean
package com.example.vp.bean;
import java.util.List;
public class ViewBean {
public Data data;
public String msg;
public String status;
public class Data{
public List<Adlist> adlist;
}
public class Adlist {
public String id;
public String img;
public String name;
public String stype;
public String title;
public String url;
}
}
NetWorkUTils
package com.example.vp.utils;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class NetWorkUtils {
static String path ="http://www.meirixue.com/api.php?c=index&a=index";
public static String getStr(){
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(path);
try {
HttpResponse response = client.execute(get);
int code = response.getStatusLine().getStatusCode();
if(code==200){
String json = EntityUtils.toString(response.getEntity());
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
activity
package com.example.vp;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import com.example.vp.adapter.MyPagerAdapter;
import com.example.vp.bean.ViewBean;
import com.example.vp.bean.ViewBean.Adlist;
import com.example.vp.utils.NetWorkUtils;
import com.google.gson.Gson;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
private ViewPager vp;
private TextView tv_info;
private LinearLayout ll_dot;
private List<Adlist> list;
private List<ImageView> alist=new ArrayList<ImageView>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_info = (TextView) findViewById(R.id.tv_info);
ll_dot=(LinearLayout)findViewById(R.id.ll_dot);
vp=(ViewPager)findViewById(R.id.vp);
initData();
}
private void initData() {
new Thread(){
private String str;
public void run() {
str = NetWorkUtils.getStr();
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
ViewBean bean = gson.fromJson(str, ViewBean.class);
list = bean.data.adlist;
vp.setAdapter(new MyPagerAdapter(MainActiv
4000
ity.this,list));
// 初始化小圆点
initDot();
vp.setCurrentItem(list.size()*2);
vpListen();
startTimer();
}
});
};
}.start();
}
private void startTimer() {
Timer tmr = new Timer();
tmr.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
int currentItem = vp.getCurrentItem();
vp.setCurrentItem(++currentItem);
}
});
}
}, 0, 2000);
}
private void vpListen() {
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < alist.size(); i++) {
if(arg0%list.size()==i){
// viewpager的点和图片一致
alist.get(arg0%list.size()).setImageResource(R.drawable.vp_fouse);
}else{
alist.get(i).setImageResource(R.drawable.vp_normal);
}
tv_info.setText(list.get(arg0%list.size()).title);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
/**
* 初始化小圆点
*/
private void initDot() {
if(alist!=null){
alist.clear();
}
for (int i = 0; i < list.size(); i++) {
ImageView iv = new ImageView(MainActivity.this);
if(i==0){
// 小圆点选中
iv.setImageResource(R.drawable.vp_fouse);
}else{
iv.setImageResource(R.drawable.vp_normal);
}
tv_info.setText(list.get(i).title);
LayoutParams params=new LayoutParams(10, 10);
params.setMargins(20, 0, 20, 0);
// 将圆点存到集合中
alist.add(iv);
ll_dot.addView(iv, params);
}
}
}
相关文章推荐
- viewpager的无限轮播和小圆点的改变
- 说说Android无限轮播的那些事
- ViewPager的无限轮播
- IOS开发UI篇--使用UICollectionView实现一个无限轮播的案例
- 基于ViewPager的无限循环自动播放带指示器的轮播图CarouselFigureView
- 安卓实现广告栏图片无限轮播播放效果
- 【短讯】基于移动页面的无限轮播javascript类库 - swipeview
- 带指示点的无限轮播(直接可以向左滑,速度稳定,时间久了速度也不会变)
- ViewPage无限轮播小点设置
- 无限轮播
- IOS实用图片无限轮播 点击图片进行跳转
- 图片无限轮播
- ViewPager:真正实现图片的无限轮播、自定义指示点和条目点击事件(支持长按暂停滚动)
- iOS 图片 无线滚动效果 利用 3张UIImageView 实现
- 完美无限滚动轮播图 +小圆点解决方案
- Swift 4 无限滚动轮播图(UICollectionView实现)
- 自定义ViewPager实现图片自动轮播无限循环
- html自己动手写无限轮播效果
- 无限轮播图 三种实现方式
- 偏移视觉效果的无限轮播