无限轮播

布局文件

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<android.support.v4.view.ViewPager
android:id="@+id/shouye_vp"
android:layout_width="match_parent"
android:layout_height="200dip"></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/shouye_rg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/shouye_vp"
android:gravity="center"
android:orientation="horizontal"></RadioGroup>
</RelativeLayout>

小圆点
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/point_selected" android:state_checked="true"/>
<item android:drawable="@drawable/point_mormal"/>
</selector>
工具类
public class Stream {
    public static String ReadFrom (InputStream is){
        try {
            ByteArrayOutputStream bos=new ByteArrayOutputStream();
            byte [] bt=new byte[1024];
            int len=0;
            while ((len=is.read(bt))!=-1){
                bos.write(bt,0,len);
            }
            is.close();
            return bos.toString();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}
public class MyAppliaction extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(getApplicationContext())
.memoryCacheExtraOptions(100,100)
.threadPoolSize(5)
.memoryCache(new UsingFreqLimitedMemoryCache(2*1024*1024))
.memoryCacheSize(100)
.build();
ImageLoader.getInstance().init(configuration);
}
}

主方法

//无线轮播
jiexi_huoqu();
//自动播放
h.sendEmptyMessageDelayed(0,2000);
handle
private Handler h=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            vp.setCurrentItem(vp.getCurrentItem()+1);
            h.sendEmptyMessageDelayed(0,2000);
        }
    };

解析获取网络数据
public void jiexi_huoqu(){
new AsyncTask<String,Void,String>(){

@Override
protected String doInBackground(String... strings) {
try {
URL url=new URL(strings[0]);
HttpURLConnection hct= (HttpURLConnection) url.openConnection();
hct.setRequestMethod("GET");
hct.setConnectTimeout(5000);
int code=hct.getResponseCode();
if(code==200){
InputStream is=hct.getInputStream();
return Stream.ReadFrom(is);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson g=new Gson();
Bean_ViewPage bvp=g.fromJson(s,Bean_ViewPage.class);
list_bvp =bvp.getData();
//viewpage轮播
viewpage_lunbo();
}
}.execute("http://m.yunifang.com/yunifang/mobile/home?random=59676&encode=62d458fefce9c740359873cc19b05188");
}
viewpage轮播
public void viewpage_lunbo(){
vp = (ViewPager) findViewById(R.id.shouye_vp);
rg =(RadioGroup)findViewById(R.id.shouye_rg);
//获取数据源
init_images();
//绑定适配器
vp.setAdapter(new Shouye_ViewPage_Adapter(image));
//添加button
init_btns();
//viewpage监听
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
// 分页指示器跟着动
rg.check(position % b.size());
}

@Override
public void onPageScrollStateChanged(int state) {

}
});
}

private void init_btns() {
int wrop=RadioGroup.LayoutParams.WRAP_CONTENT;
RadioGroup.LayoutParams params=new RadioGroup.LayoutParams(wrop,wrop);
params.leftMargin=5;
for (int a = 0; a< b.size(); a++){
RadioButton rb=new RadioButton(this);
rb.setId(a);
rb.setButtonDrawable(R.drawable.dian);
if(a==0){
rg.addView(rb);
}else{
rg.addView(rb,params);
}
rg.check(0);
}
}
private void init_images() {
b = list_bvp.getAd1();
for (Bean_ViewPage.DataBean.Ad1Bean bvp: b){
ImageView img=new ImageView(this);
ImageLoader.getInstance().displayImage(bvp.getImage(),img);
image.add(img);
}
}
自定义适配器

public class Shouye_ViewPage_Adapter extends PagerAdapter {
private List<ImageView> image;

public Shouye_ViewPage_Adapter(List<ImageView> image) {
super();
this.image = image;
}

@Override
public int getCount() {
return Integer.MAX_VALUE;
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(image.get(position%image.size()));
return image.get(position%image.size());
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(image.get(position%image.size()));
}
}
 
 
 
 
 
posted @ 2016-10-10 14:38  点儿哥  阅读(201)  评论(0)    收藏  举报