简单添加图片----轮播



public class MainActivity extends Activity {

	private ViewPager pager;
	private RadioGroup radioGroup;
	private MyHandler handler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//  初始化控件
		pager = (ViewPager) findViewById(R.id.pager);
		radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
		// 添加图片 
		int arr[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3,
				R.drawable.a4 };

		final ArrayList<ImageView> list = new ArrayList<ImageView>();

		for (int i = 0; i < arr.length; i++) {
			// 创建图片对象
			ImageView imageView = new ImageView(MainActivity.this);
			// 设置图片
			imageView.setImageResource(arr[i]);
			// 存到集合
			list.add(imageView);
			// 创建小圆点
			RadioButton button = new RadioButton(MainActivity.this);
			radioGroup.addView(button);

		}
		// 适配器
		pager.setAdapter(new MyPagerAdapter(list));
		// 默认选中第一个
		radioGroup.check(radioGroup.getChildAt(0).getId());
		// 滑动页面让小圆点跟着动
		pager.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				// 通过取模 防止下标越界
				arg0 = arg0 % list.size();
				// 页面切换
				radioGroup.check(radioGroup.getChildAt(arg0).getId());

			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// 页面滑动

			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
				// 页面滑动状态改变

			}
		});
		
		handler = new MyHandler();
		handler.sendEmptyMessageDelayed(0, 2000);
	}

	 class MyHandler extends Handler{
		 @Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg); 
			switch (msg.what) {
			case 0:
				//没两秒钟就要改变一下视图
				//首先我得知道 当前展示的是哪一页,然后当前页+1=下一个页面
				//获取当前页
				int currentItem = pager.getCurrentItem()+1;
				//切换到下一页
				pager.setCurrentItem(currentItem);
				// 无限发送消息
				handler.sendEmptyMessageDelayed(0, 2000);
				break; 
			}
		}
	 }
}
//适配器
//继承 PagerAdapter
public class MyPagerAdapter extends PagerAdapter {
	// 数据
	private ArrayList<ImageView> list;

	// 有参构造
	public MyPagerAdapter(ArrayList<ImageView> list) {
		this.list = list;
	}

	@Override
	public int getCount() {// 滑动界面有几个就返回几
//		// 返回图片个数
//		return list.size();
		//页面有无数个
		return Integer.MAX_VALUE;
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// 11判断是否是
		return arg0 == arg1;
	}

	// 实现方法
	// 创建item
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
	//通过取模,让索引永远小于list.size()
		position=position%list.size();
		
		// 获取image
		ImageView imageView = list.get(position);
		// 把imageView加入到ViewGroup(也就是加入到viewpager中)
		// 注意这一步不写不会报错,也可以滑动,但是就是没图片!!
		container.addView(imageView);
		// 返回imageView
		return imageView;

	} 
	@Override//销毁条目
	public void destroyItem(ViewGroup container, int position, Object object) {
		//销毁条目
		container.removeView((View) object);
	}

}
//布局
<LinearLayout 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:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
         />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" 
        android:orientation="horizontal">

    </RadioGroup>

</LinearLayout>




猜你喜欢

转载自blog.csdn.net/weixin_43936560/article/details/86176918