//輪播佈局
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="200dp"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" android:layout_marginTop="-20dp" > </LinearLayout>
小圓點的配置
//默認的
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> //shape設置形狀 <solid android:color="#999999"/> //color自己設置 <corners android:radius="2dp" /> </shape>
//選擇的
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#595959"/> <corners android:radius="2dp" /> </shape>
//activity類
ViewPager vp; LinearLayout linear;
//線程必須的 Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { vp.setCurrentItem(page);//改變輪播頁 } };
//將圖片放入一個list集合 我這 是網絡請求的圖片 imagelist是圖片的集合,該過程省略
public void initView(){ vp.setAdapter(new MyPagerAdapter()); for (int i = 0; i <imageList.size();i++){ View doView = new View(context); //小圓點的大小 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10,10); //小圓點左邊距和右邊距 params.rightMargin = 5; params.leftMargin = 5; //加載小圓點到視圖中 doView.setLayoutParams(params); //當顯示的圖片的下標和i相等時,顯示選中狀態 if(i == 0){ doView.setBackgroundResource(R.drawable.shape_select); //否則。 }else { doView.setBackgroundResource(R.drawable.shape_normal); } //把佈局加載到linearlayouot linear.addView(doView); } vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //圖片改變後,讓小圓點改變爲當前下標狀態 linear.getChildAt(position % imageList.size()).setBackgroundResource(R.drawable.shape_select); //其他的改變爲默認 linear.getChildAt(oldPositon % imageList.size()).setBackgroundResource(R.drawable.shape_normal); //將當前下標賦給之前的下標 oldPositon = position; } @Override public void onPageScrollStateChanged(int state) { } }); }
適配器
public class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { //數量爲2147483647 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) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView image =new ImageView(context);
//在這裏我用了Application 這個類,在裏面創建的imageloader 在這邊直接調用的 ImageLoader.getInstance().displayImage(imageList.get(position% imageList.size()),image, MyApplication.getOptions()); container.addView(image); return image; } }
//輪播代碼 該方法在調用initview方法後面調用 調用該方法可實現自動輪播
private void autoplay() { new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //增加圖片下標瑪 page++; //發送空消息 handler.sendEmptyMessage(0); } } }.start(); }