輪播圖使用ViewPager來(lái)實(shí)現(xiàn)诱担,我沒(méi)有抽取為view,直接在activity中實(shí)現(xiàn)
public class MainActivity extends Activity implements OnPageChangeListener {
//創(chuàng)建數(shù)組存儲(chǔ)圖片ID
? ? private int[] img={R.drawable.icon_1,R.drawable.icon_2,R.drawable.icon_3,R.drawable.icon_4,R.drawable.icon_5};
//圖片標(biāo)題
? ? private String[] str={"為夢(mèng)想堅(jiān)持", "我相信我", "為公開(kāi)課而生", "Google IO", "輕松1w+"};
? ?private ViewPager mViewpager;
? ? private TextView mText;
? ? private LinearLayout mContainer;
? ? private int mLastPosition=0;
? ? @Override
? ?protected void onCreate(Bundle savedInstanceState) {
? ? ? ?super.onCreate(savedInstanceState);
? ? ? ?setContentView(R.layout.activity_main);
? ? ? ?initView();
? ? ? ? ? initData();
? ? ? ? ? initListener();
? ?}
//獲取控件對(duì)象
? ?public void initView() {
? ? mViewpager = (ViewPager) findViewById(R.id.view_pager);
? ? mText = (TextView) findViewById(R.id.text);
? ? mContainer = (LinearLayout) findViewById(R.id.dots_container);
? ? }
? ? public void initData() {
? ? ? ? ? mViewpager.setAdapter(new MyAdapter());
? ? ? ? ? //計(jì)算第一次出現(xiàn)的圖
? ? ? ? ? int position=Integer.MAX_VALUE/2-(Integer.MAX_VALUE/2%img.length);
? ? ? ? ? //設(shè)置第一次出現(xiàn)的位置
? ? ? ? ? mViewpager.setCurrentItem(position);
? ? ? ? ? mText.setText(str[0]);
? ? ? ? ? //動(dòng)態(tài)的添加點(diǎn)
? ? ? ? ? for (int i = 0; i < img.length; i++) {
? ? ? ? ? ? ? ?View view=new View(this);
? ? ? ? ? ? ? ?//將dp變成像素
? ? ? ? ? ? ? ?int size = getResources().getDimensionPixelSize(R.dimen.size);
? ? ? ? ? ? ? ?LinearLayout.LayoutParams layout=new LinearLayout.LayoutParams(size, size);
? ? ? ? ? ? ? ?if(i!=img.length-1){
? ? ? ? ? ? ? ? ? ? layout.rightMargin=size;
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?view.setLayoutParams(layout);
? ? ? ? ? ? ? ?if(i==0){
? ? ? ? ? ? ? ? ? ? view.setBackgroundResource(R.drawable.bg_dot_selected);
? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? view.setBackgroundResource(R.drawable.bg_dot_normal);
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?mContainer.addView(view);
? ? ? ? ? }
? ? }
? ? public void initListener() {
? ? ? ? ? mViewpager.setOnPageChangeListener(this);
? ? }
? ? public class MyAdapter extends PagerAdapter{
? ? ? ? ? @Override
? ? ? ? ? public int getCount() {
? ? ? ? ? ? ? ?return Integer.MAX_VALUE;
? ? ? ? ? }
? ? ? ? ? @Override
? ? ? ? ? public boolean isViewFromObject(View view, Object object) {
? ? ? ? ? ? ? ?return view==object;
? ? ? ? ? }
? ? ? ? ? //初始化一個(gè)界面
? ? ? ? ? @Override
? ? ? ? ? public Object instantiateItem(ViewGroup container, int position) {
? ? ? ? ? ? ? ?int num=position%img.length;
? ? ? ? ? ? ? ?ImageView view=new ImageView(getApplicationContext());
? ? ? ? ? ? ? ?view.setImageResource(img[num]);
? ? ? ? ? ? ? ?mViewpager.addView(view);
? ? ? ? ? ? ? ?return view;
? ? ? ? ? }
? ? ? ? ? //銷毀一個(gè)界面
? ? ? ? ? @Override
? ? ? ? ? public void destroyItem(ViewGroup container, int position, Object object) {
? ? ? ? ? ? ? ?mViewpager.removeView((View) object);
? ? ? ? ? }
? ? }
? ? //頁(yè)面滾動(dòng)狀態(tài)的變化
? ? @Override
? ? public void onPageScrollStateChanged(int arg0) {
? ? }
? ? //頁(yè)面滾動(dòng)的時(shí)候調(diào)用
? ? @Override
? ? public void onPageScrolled(int arg0, float arg1, int arg2) {
? ? }
? ? //頁(yè)面被選中的時(shí)候調(diào)用
? ? @Override
? ? public void onPageSelected(int position) {
? ? ? ? ? position = position % img.length;
? ? ? ? ? int num=position%str.length;
? ? ? ? ? mText.setText(str[num]);
? ? ? ? ? if(mLastPosition==position){
? ? ? ? ? ? ? ?return;
? ? ? ? ? }
? ? ? ? ? //更新點(diǎn)
? ? ? ? ? View view = mContainer.getChildAt(position);
? ? ? ? ?view.setBackgroundResource(R.drawable.bg_dot_selected);
? ? ? ? ? //獲取上次的點(diǎn)
? ? ? ? ? View view2 = mContainer.getChildAt(mLastPosition);
? ? ? ? ?view2.setBackgroundResource(R.drawable.bg_dot_normal);
? ? ? ? ? mLastPosition=position;
? ? }
}
-------------------------------------------------------------------
布局
? ?xmlns:tools="http://schemas.android.com/tools"
? ?android:layout_width="match_parent"
? ?android:layout_height="180dp"
? ?tools:context=".MainActivity" >
? ? ? ?android:id="@+id/view_pager"
? ? ? ?android:layout_width="match_parent"
? ? ? ?android:layout_height="match_parent" >
? ? ? ?android:layout_width="match_parent"
? ? ? ?android:layout_height="wrap_content"
? ? ? ?android:layout_alignParentBottom="true"
? ? ? ?android:background="#33999999"
? ? ? ?android:orientation="vertical" >
? ? ? ? ? ?android:id="@+id/text"
? ? ? ? ? ?android:layout_width="wrap_content"
? ? ? ? ? ?android:layout_height="wrap_content"
? ? ? ? ? ?android:layout_gravity="center_horizontal"
? ? ? ? ? ?android:paddingTop="5dp"
? ? ? ? ? ?android:text="哈哈"
? ? ? ? ? ?android:textColor="#ffffff"
? ? ? ? ? ?android:textSize="18sp" />
? ? ? ? ? ?android:id="@+id/dots_container"
? ? ? ? ? ?android:layout_gravity="center_horizontal"
? ? ? ? ? ?android:layout_width="wrap_content"
? ? ? ? ? ?android:layout_marginBottom="10dp"
? ? ? ? ? ?android:layout_height="wrap_content"
? ? ? ? ? ?android:layout_marginTop="5dp"
? ? ? ? ? ?android:orientation="horizontal" >