1. 程式人生 > >Android 輪播焦點圖簡單實現

Android 輪播焦點圖簡單實現

package com.learn.fei.tiangou.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.learn.fei.tiangou.R;
import com.learn.fei.tiangou.adapter.MyViewPagerAdapter;
import com.learn.fei.tiangou.fragment.homeBannerFragment.Banner1;
import com.learn.fei.tiangou.fragment.homeBannerFragment.Banner2;
import com.learn.fei.tiangou.fragment.homeBannerFragment.Banner3;
import com.learn.fei.tiangou.fragment.homeFragmentPages.HomeCitys;
import com.learn.fei.tiangou.fragment.homeFragmentPages.HomeCookBook;
import com.learn.fei.tiangou.fragment.homeFragmentPages.HomeFood;
import com.learn.fei.tiangou.fragment.homeFragmentPages.HomeImages;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 首頁fragment
 * Created by fei on 2015/12/15.
 */
public class HomeFragment extends Fragment implements View.OnClickListener, DrawerLayout.DrawerListener {

    private View parent;
    private Button btnFood;
    private Button btnCookBook;
    private Button btnImages;
    private Button btnCity;
    private DrawerLayout drawleft;
    private Button btnGoLeft;
    private LinearLayout leftMenu;
    private int[] mImgIds;
    private LayoutInflater mInflater;
    private LinearLayout btnScroll;
    private ArrayList<Fragment> arryList;
    private Banner1 banner1;
    private Banner2 banner2;
    private Banner3 banner3;
    private FragmentManager manager;
    private ViewPager bannerPager;
    private Timer timer;
    private TimerTask task;
    private int bannerCount = 0;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        parent = LayoutInflater.from(getActivity()).inflate(R.layout.frag_home, container, false);

        initUI();
        initListener();
        initBanner();
        return parent;
    }

    <span style="background-color: rgb(153, 255, 153);">/**
     * 例項化各個pager頁面和輪播動畫
     */
    private void initBanner() {
        //例項化一個arrylist存放fragment
        arryList = new ArrayList<Fragment>();
        //例項化fragment頁面
        banner1 = new Banner1();
        banner2 = new Banner2();
        banner3 = new Banner3();
        //fragment新增進arryList
        arryList.add(banner1);
        arryList.add(banner2);
        arryList.add(banner3);

        manager = getChildFragmentManager();
        //呼叫viewpager介面卡
        MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(manager, getActivity(), arryList);
        bannerPager.setAdapter(myViewPagerAdapter);

        bannerPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                initFocus(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }
    /**
     * 停止時
     */
    @Override
    public void onStop() {
        timer.cancel();
        super.onStop();
    }

    /**
     * 開始是開始一個執行緒
     */
    @Override
    public void onStart() {
        super.onStart();
        timer = new Timer();
        task = new TimerTask() {
            @Override
            public void run() {
                if (bannerCount<2){
                    bannerCount++;
                }else {
                    bannerCount=0;
                }
                Message message =mHandler.obtainMessage();
                message.what = 1001;
                message.obj = bannerCount;
                mHandler.sendMessage(message);
            }

        };
        timer.schedule(task, 0, 3000);
    }


    /**
     * handler
     */
    private Handler mHandler = new Handler(){
        public void handleMessage(Message msg) {
            if (msg.what == 1001){
               int count = (int) msg.obj;
                initFocus(count);
            }
        }
    };

    private void initFocus(int count) {
        ImageView focusImg0 = (ImageView) parent.findViewById(R.id.focus_img_1);
        ImageView focusImg1 = (ImageView) parent.findViewById(R.id.focus_img_2);
        ImageView focusImg2 = (ImageView) parent.findViewById(R.id.focus_img_3);
        focusImg0.setImageResource(R.drawable.off);
        focusImg1.setImageResource(R.drawable.off);
        focusImg2.setImageResource(R.drawable.off);
        if (count==0){
            focusImg0.setImageResource(R.drawable.on);
        }if (count==1){
            focusImg1.setImageResource(R.drawable.on);
        }if (count==2){
            focusImg2.setImageResource(R.drawable.on);
        }
        bannerPager.setCurrentItem(count);
    }</span>

    /**
     * 初始化UI
     */
    private void initUI() {
        btnFood = (Button) parent.findViewById(R.id.btn_home_food);
        btnCookBook = (Button) parent.findViewById(R.id.btn_home_cook_book);
        btnImages = (Button) parent.findViewById(R.id.btn_home_images);
        btnCity = (Button) parent.findViewById(R.id.byn_home_city);

        btnScroll = (LinearLayout) parent.findViewById(R.id.scroll_go);
        bannerPager = (ViewPager) parent.findViewById(R.id.banner_pager);


        leftMenu = (LinearLayout) parent.findViewById(R.id.left_menu_layout);


    }

    private void initListener() {
        btnFood.setOnClickListener(this);
        btnCookBook.setOnClickListener(this);
        btnImages.setOnClickListener(this);
        btnCity.setOnClickListener(this);
        btnScroll.setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {

        Intent mIntent = new Intent();
        int what = v.getId();
        switch (what) {
            case R.id.btn_home_food:
                mIntent.setClass(HomeFragment.this.getActivity(), HomeFood.class);
                startActivity(mIntent);
                break;
            case R.id.btn_home_cook_book:
                mIntent.setClass(HomeFragment.this.getActivity(), HomeCookBook.class);
                startActivity(mIntent);
                break;
            case R.id.btn_home_images:
                mIntent.setClass(HomeFragment.this.getActivity(), HomeImages.class);
                startActivity(mIntent);
                break;
            case R.id.byn_home_city:
                mIntent.setClass(HomeFragment.this.getActivity(), HomeCitys.class);
                startActivity(mIntent);
                break;


        }
    }

    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
    }

    @Override
    public void onDrawerOpened(View drawerView) {

    }

    @Override
    public void onDrawerClosed(View drawerView) {

    }

    @Override
    public void onDrawerStateChanged(int newState) {

    }
}