无限轮播小圆点

首先写三个xml文件放到drawable-hdpi里面分别设置小点的:

1.dot_focus.xml

[html] view plain copy
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="oval" >  

    <!-- 描边 -->  
    <stroke  
        android:width="1dip"  
        android:color="#0000FF" />  
    <!-- 填充色 -->  
    <solid android:color="#FF6600" />  
    <!-- 设置宽度和高度相同,这样就变成了圆 -->  
    <size  
        android:height="10dip"  
        android:width="10dip" />  

</shape>  
2.dot_unfocus.xml

[html] view plain copy
<?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="oval" >  

    <!-- 描边 -->  
    <stroke  
        android:width="1dip"  
        android:color="#0000FF" />  
    <!-- 填充色 -->  
    <solid android:color="#FFFFFF" />  
    <!-- 设置宽度和高度相同,这样就变成了圆 -->  
    <size  
        android:height="10dip"  
        android:width="10dip" />  

</shape>  
3.x_dot_selector.xml

[html] view plain copy
<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  

    <!-- 选中时 -->  
    <item android:drawable="@drawable/dot_focus" android:state_checked="true"/>  
     <!-- 非选中时 -->  
    <item android:drawable="@drawable/dot_unfocus"/>  

</selector>  
4.mian里的xml文件的写
[html] view plain copy
<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="match_parent" >  

    <android.support.v4.view.ViewPager  
        android:id="@+id/vp"  
        android:layout_width="fill_parent"  
        android:layout_height="130dip" />  

    <RadioGroup  
        android:id="@+id/rg"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:layout_alignBottom="@id/vp"  
        android:gravity="center"  
        android:orientation="horizontal" >  
    </RadioGroup>  

</RelativeLayout>  
5.Activity写代码
[java] view plain copy
package   

import android.os.Bundle;  
import android.os.Handler;  
import android.app.Activity;  
import android.graphics.RadialGradient;  
import android.support.v4.view.ViewPager;  
import android.support.v4.view.ViewPager.LayoutParams;  
import android.support.v4.view.ViewPager.OnPageChangeListener;  
import android.view.Menu;  
import android.widget.RadioButton;  
import android.widget.RadioGroup;  

public class MainActivity extends Activity {  

    private String[] paths = new String[] {  
            "http://img1.3lian.com/2015/w7/98/d/22.jpg",  
            "http://img1.3lian.com/2015/w7/98/d/1.jpg",  
            "http://img1.3lian.com/2015/w7/98/d/2.jpg",  
            "http://img1.3lian.com/2015/w7/98/d/3.jpg",  
            "http://img1.3lian.com/2015/w7/98/d/4.jpg",  
            "http://img1.3lian.com/2015/w7/98/d/21.jpg",  

    };  
    private RadioGroup rg;  
    private ViewPager vp;  
    Handler handler = new Handler() {  
        public void handleMessage(android.os.Message msg) {  
            int currentItem = vp.getCurrentItem();  
            vp.setCurrentItem(currentItem += 1);  
            handler.sendEmptyMessageDelayed(0, 1000);  
        };  
    };  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        vp = (ViewPager) findViewById(R.id.vp);  
        vp.setAdapter(new MyPagerAdapter(this, paths));  

        initView();  

        vp.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2  
                % paths.length);  
        handler.sendEmptyMessageDelayed(0, 1000);  
    }  

    private void initView() {  
        initDots();  
        vp.setOnPageChangeListener(new OnPageChangeListener() {  

            @Override//显示第几页  
            public void onPageSelected(int arg0) {  
                rg.check(arg0 % paths.length);  

            }  

            @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  

            }  
        });  
    }  

    private void initDots() {  
        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 < paths.length; i++) {  
            RadioButton rb = new RadioButton(this);  
            rb.setId(i);  

            rb.setButtonDrawable(R.drawable.x_dot_selector);  
            if (i != 0) {  
                // 如果是第一个时,不需要加左边距  
                rg.addView(rb, params);  
            } else {  
                rg.addView(rb);  
            }  
            rg.check(0);  
        }  

    }  

}  
6.适配器写内容 
[java] view plain copy
package com.  

import com.lidroid.xutils.BitmapUtils;  

import android.content.Context;  
import android.support.v4.view.PagerAdapter;  
import android.support.v4.view.ViewPager.LayoutParams;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ImageView;  

public class MyPagerAdapter extends PagerAdapter {  

    private final Context context;  
    private final String[] paths;  
    private BitmapUtils bitmapUtils;  

    public MyPagerAdapter(Context context, String[] paths) {  
        this.context = context;  
        // TODO Auto-generated constructor stub  
        this.paths = paths;  
        bitmapUtils = new BitmapUtils(context);  
    }  

    @Override  
    public int getCount() {  
        // TODO Auto-generated method stub  
        return Integer.MAX_VALUE;  
    }  

    @Override  
    public Object instantiateItem(ViewGroup container, int position) {  
        // 得到网络图片地址  
        String path = paths[position % paths.length];  
        // 得到imageView对象  
        ImageView iv = new ImageView(context);  
        LayoutParams layoutParams = new LayoutParams();  
        layoutParams.height = layoutParams.MATCH_PARENT;  
        layoutParams.width = layoutParams.MATCH_PARENT;  
        iv.setLayoutParams(layoutParams);  

        bitmapUtils.display(iv, path);  
        container.addView(iv);  

        return iv;  
    }  

    @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);  

    }  

}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值