Viewpager的自動輪播加+GridView網上獲取數據+小圓點

首先我們在我們的drawable下面建兩個xml,分別是:

doc_check.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"
    >
    <solid android:color="#FC8A03"/>
    <size android:width="10dp" android:height="10dp"/>
    <stroke android:color="#FC8A03" android:width="1dp"/>

</shape>

doc_uncheck.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"
    >
    <solid android:color="#fff"/>
    <size android:width="10dp" android:height="10dp"/>
    <stroke android:color="#fff" android:width="1dp"/>

</shape>

創建一個activity_main.xml文件


<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" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp" >

        <android.support.v4.view.ViewPager
            android:id="@+id/main_vp"
            android:layout_width="match_parent"
            android:layout_height="200dp" >
        </android.support.v4.view.ViewPager>

        <LinearLayout
            android:id="@+id/ll_doc"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:gravity="center"
            android:orientation="horizontal" >
        </LinearLayout>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp" >
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp" >
    </LinearLayout>

    <GridView
        android:id="@+id/main_gv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:numColumns="2"
        >
    </GridView>

</LinearLayout>

如果xml創建好以後 我們就開始寫MainActivity的代碼
package com.example.monthextwo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

import com.example.monthextwo.adapter.MyPagerAdatper;
import com.example.monthextwo.bean.DataResult;
import com.example.monthextwo.net.NetUtils;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;


public class MainActivity extends Activity {
	
	ViewPager vp;
	DataResult data;
	List<ImageView> list;
	List<ImageView> list_doc;
	

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        initView();
        initData();
    }


	private void initView() {
		vp = (ViewPager) findViewById(R.id.main_vp);
	}
	
	public void initDoc(){
		LinearLayout ll_dco = (LinearLayout) findViewById(R.id.ll_doc);
		list_doc = new ArrayList<ImageView>();
		if(data != null && data.getResult().getAdvs().size() > 0){
			for (int i = 0; i < data.getResult().getAdvs().size(); i++) {
				ImageView iv = new ImageView(this);
				LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
				params.rightMargin = 10;
				iv.setLayoutParams(params);
				if(i == 0){
					iv.setBackgroundResource(R.drawable.doc_check);
				}else{
					iv.setBackgroundResource(R.drawable.doc_uncheck);
				}
				ll_dco.addView(iv);
				list_doc.add(iv);
			}
		}
	}


	private void initData() {
		new AsyncTask<String, String, String>(){

			@Override
			protected String doInBackground(String... params) {
				String json = NetUtils.getNetData("http://www.babybuy100.com/API/getShopOverview.ashx");
				Gson gson = new Gson();
				data = gson.fromJson(json, DataResult.class);
				Log.i("=================", data.toString());
				return null;
			}

			@Override
			protected void onPostExecute(String result) {
				initVP();
				super.onPostExecute(result);
			}
			
		}.execute();
	}


	protected void initVP() {
		list = new ArrayList<ImageView>();
		if(data != null && data.getResult().getAdvs().size() > 0){
			for (int i = 0; i < data.getResult().getAdvs().size(); i++) {
				ImageView iv = new ImageView(this);
				iv.setScaleType(ScaleType.FIT_XY);
				ImageLoader.getInstance().displayImage(data.getResult().getAdvs().get(i).getPic(), iv);
				list.add(iv);
			}
			//創建適配器
			MyPagerAdatper myPagerAdatper = new MyPagerAdatper(list);
			vp.setAdapter(myPagerAdatper);
			initDoc();
			
			vp.addOnPageChangeListener(new OnPageChangeListener() {
				
				@Override
				public void onPageSelected(int arg0) {
					int index = arg0 % list_doc.size();
					for (int i = 0; i < list_doc.size(); i++) {
						list_doc.get(i).setBackgroundResource(R.drawable.doc_uncheck);
					}
					list_doc.get(index).setBackgroundResource(R.drawable.doc_check);
				}
				
				@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
					
				}
			});
		}
	}

}

創建一個viewpager的適配器

package com.example.monthextwo.adapter;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class MyPagerAdatper extends PagerAdapter{
	
	List<ImageView> list;
	
	public MyPagerAdatper(List<ImageView> list) {
		super();
		this.list = list;
	}

	@Override
	public int getCount() {
		if(list != null){
			return Integer.MAX_VALUE;
		}
		return 0;
	}

	@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) {
		// TODO Auto-generated method stub
		container.removeView((View) object);
	}

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

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章