package com.hua.goddess.fragment.lunbo; import java.util.ArrayList; import java.util.Random; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import com.hua.goddess.R; import com.hua.goddess.base.communicate.GetBeautyInterface; import com.hua.goddess.vo.BeautyMainVo; import com.hua.goddess.vo.BeautyMainVo.Imgs; /** * 轮播界面 */ public class LunBoFragment extends Fragment { private Handler handler = new Handler(); private LinearLayout lunboContainer; private MyViewPager viewpager; private BeautyMainVo lunboVo; private ArrayList<Imgs> imgs; private boolean ifStartLunbo = false; private View lunboView; private ViewPagerFocusView focusView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = LayoutInflater.from(getActivity()).inflate( R.layout.fragment_progress_container, null); lunboContainer = (LinearLayout) view.findViewById(R.id.container); DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay() .getMetrics(metrics); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( metrics.widthPixels, metrics.widthPixels * 7 / 16); // 轮播图片的尺寸宽高比例16:5 lunboContainer.setLayoutParams(params); getLunBoData(); return view; } public void pauseLunbo() { if (viewpager != null && ifStartLunbo) { viewpager.stopTimer(); ifStartLunbo = false; } } public void startLunbo() { if (viewpager != null && !ifStartLunbo) { viewpager.startTimer(); ifStartLunbo = true; } } @Override public void onDestroyView() { // TODO Auto-generated method stub pauseLunbo(); super.onDestroyView(); } // 获取轮播数据 private void getLunBoData() { if (lunboVo == null) { new Thread() { @Override public void run() { try { lunboVo = GetBeautyInterface.getNetData("美女", "全部", getRandom(), 4); } catch (Exception e1) { e1.printStackTrace(); } handler.post(new Runnable() { @Override public void run() { if (lunboVo != null) { imgs = lunboVo.getImgs(); if (imgs != null && imgs.size() > 0) { imgs.remove(imgs.size() - 1); initLunBoView(); } else { initLunBoNetErro(); } } else { initLunBoNetErro(); } } }); } }.start(); } else { initLunBoView(); } } private int getRandom() { Random random = new Random(); return random.nextInt(60); } private void initLunBoView() { // TODO Auto-generated method stub if (lunboView == null) { lunboView = LayoutInflater.from(getActivity()).inflate( R.layout.page_store_lunbo, null); viewpager = (MyViewPager) lunboView.findViewById(R.id.lunbo); focusView = (ViewPagerFocusView) lunboView .findViewById(R.id.viewpger_focusview); focusView.getBackground().setAlpha(100); LunBoAdapter lunboAdapter = new LunBoAdapter(getActivity(), imgs); viewpager.setAdapter(lunboAdapter); viewpager.setOnPageChangeListener(new GuidePageChangeListener()); // 总的点数 focusView.setCount(imgs.size()); int gbs = 1000 / imgs.size(); int totalMax = gbs * imgs.size(); viewpager.setCurrentItem(totalMax); // 初始位置在靠近1000的整个整除的数字 // 当前位置 int currentIndex = viewpager.getCurrentItem() % imgs.size(); focusView.setCurrentIndex(currentIndex); // 描述文字 focusView.setTitle(imgs.get(currentIndex).getDesc().trim()); startLunbo(); lunboContainer.removeAllViews(); lunboContainer.addView(lunboView); } } // 显示轮播网络错误 private void initLunBoNetErro() { // TODO final View loadView = LayoutInflater.from(getActivity()).inflate( R.layout.loading_view, null); loadView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); View netErroView = LayoutInflater.from(getActivity()).inflate( R.layout.page_store_net_erro, null); Button reloadBtn = (Button) netErroView.findViewById(R.id.reload_btn); reloadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (lunboContainer != null) { lunboContainer.removeAllViews(); lunboContainer.addView(loadView); getLunBoData(); } } }); if (lunboContainer != null) { lunboContainer.removeAllViews(); lunboContainer.addView(netErroView); } } // 滑动监听 private class GuidePageChangeListener implements OnPageChangeListener { @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(final int arg0) { int currentIndex = arg0 % imgs.size(); focusView.setTitle(imgs.get(currentIndex).getDesc().trim()); focusView.setCurrentIndex(currentIndex); } } }