package com.mialab.palmsuda.main; import java.util.ArrayList; import java.util.List; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.mialab.palmsuda.modules.ContentItem; import com.mialab.palmsuda.modules.ModuleItem; import com.mialab.palmsuda.views.MyScrollView; /** * @author mialab * @date 创建时间:2015-8-22 下午7:06:05 * */ public class MainViewHelper { private PalmSudaHome mActivity; private LinearLayout barDots, bottomBar; private MyScrollView scrollView; private ContentItem mAItem; private LayoutInflater mInflater = null; private List<ModuleItem> gridItems, barItems; private int PAGENUM = 16; private int vspace = 0, hspace = 0; float oldX = 0; MainViewHelper(PalmSudaHome maty) { mActivity = maty; // 找到相应的View scrollView = (MyScrollView) mActivity.findViewById(R.id.vflipper); bottomBar = (LinearLayout) mActivity.findViewById(R.id.bar_item_holder); barDots = (LinearLayout) mActivity.findViewById(R.id.bar_item_dot); mInflater = LayoutInflater.from(mActivity); gridItems = new ArrayList<ModuleItem>(); barItems = new ArrayList<ModuleItem>(); scrollView.setOnViewChangedListener(new MyScrollView.OnViewChanged() { @Override public void onViewChange(int position, int count) { setFlipperDots(position, count); } }); } public void setContentItem(ContentItem aItem) { mAItem = aItem; notifyDataChange(); } public void onDestroy() { scrollView.removeAllViews(); barDots.removeAllViews(); if (gridItems != null) gridItems.clear(); if (barItems != null) barItems.clear(); } public void notifyDataChange() { bottomBar.removeAllViews(); scrollView.removeAllViews(); barDots.removeAllViews(); setSomeData(); if (gridItems != null) gridItems.clear(); if (barItems != null) barItems.clear(); if (mAItem != null) { List<ModuleItem> ms = mAItem.getmItems(); for (int i = 0; i < ms.size(); i++) { ModuleItem item = ms.get(i); if (item != null) { if (item.getLevel() == 4) { barItems.add(item); } else { gridItems.add(item); } } } setFlipperView(gridItems); setBarView(barItems); } } private void setSomeData() { float sh = PalmSudaApp.SCREEN_HEIGTH; float wh = PalmSudaApp.SCREEN_WEIDTH; int ih = (int) (wh / 4 + 10); int iw = (int) (wh / 4 - 15); int col = (int) ((sh - ih * 2) / ih); if (col < 4) { PAGENUM = 12; vspace = (int) ((sh - (col + 2) * ih) / 4); } else if (col == 4) { PAGENUM = 16; vspace = (int) ((sh - 6 * ih) / 4); // vspace = 0; } else if (col == 5) { PAGENUM = 16; vspace = (int) ((sh - 6 * ih) / 4); // vspace = 0; } else if (col == 6) { PAGENUM = 20; vspace = (int) ((sh - 7 * ih) / 5); } else if (col > 6) { PAGENUM = 24; vspace = (int) ((sh - 8 * ih) / 6); } hspace = (int) ((wh - 4 * iw) / 4); } private void setFlipperView(List<ModuleItem> gridItems) { int size = gridItems.size(); int count = size / PAGENUM + (size % PAGENUM == 0 ? 0 : 1); for (int i = 0; i < count; i++) { List<ModuleItem> tmp = null; GridView gView = null; if (i == (count - 1)) { tmp = gridItems.subList((count - 1) * PAGENUM, size); gView = createGridView(tmp); } else { tmp = gridItems.subList(i * PAGENUM, i * PAGENUM + PAGENUM); gView = createGridView(tmp); } ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); scrollView.addView(gView, params); } scrollView.setToScreen(0); setFlipperDots(0, scrollView.getChildCount()); } private void setFlipperDots(int index, int count) { int num = barDots.getChildCount(); if (num == 0) { for (int i = 0; i < count; i++) { ImageView dot = new ImageView(mActivity); dot.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); dot.setPadding(5, 1, 5, 1); dot.setImageResource(R.drawable.life_home_blue_circle); barDots.addView(dot); } } if (count > 0) { for (int i = 0; i < count; i++) { ImageView dot = (ImageView) barDots.getChildAt(i); if (i == index) { dot.setImageResource(R.drawable.life_home_blue_circle); } else { dot.setImageResource(R.drawable.life_home_white_circle); } } } } private void setBarView(List<ModuleItem> barItems) { if (barItems == null || barItems.size() == 0) { mActivity.findViewById(R.id.bar_scroll_view).setVisibility( View.GONE); } else { mActivity.findViewById(R.id.bar_scroll_view).setVisibility( View.VISIBLE); } for (final ModuleItem item : barItems) { View baritem = createBarItem(item); baritem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mActivity.gridViewClick(mAItem, item); } }); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( PalmSudaApp.SCREEN_WEIDTH / 4, PalmSudaApp.SCREEN_WEIDTH / 4 + 10); bottomBar.addView(baritem, params); } } private View createBarItem(final ModuleItem item) { View convertView = this.mInflater .inflate(R.layout.grid_icon_item, null); TextView tvItem = (TextView) convertView .findViewById(R.id.wap_item_name); ImageView iView = (ImageView) convertView .findViewById(R.id.wap_item_image); ImageView icView = (ImageView) convertView .findViewById(R.id.wap_ic_image); icView.setVisibility(View.GONE); tvItem.setText("" + item.getModuleName()); RelativeLayout.LayoutParams paLayoutParams = (android.widget.RelativeLayout.LayoutParams) iView .getLayoutParams(); paLayoutParams.width = PalmSudaApp.SCREEN_WEIDTH * 3 / 16; paLayoutParams.height = paLayoutParams.width * 100 / 96; iView.setLayoutParams(paLayoutParams); mActivity.getImageWorker().loadBitmap(item.getIconUrl(), iView, PalmSudaApp.SCREEN_WEIDTH / 4, PalmSudaApp.SCREEN_WEIDTH / 4); return convertView; } private GridView createGridView(List<ModuleItem> items) { GridView gView = (GridView) mInflater.inflate(R.layout.main_gridview, null); gView.setVerticalSpacing(vspace); gView.setPadding(0, vspace / 2, 0, 0); GdvAdapter adapter = new GdvAdapter(mActivity, mActivity.getImageWorker(), gView); adapter.setData(items); gView.setAdapter(adapter); gView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ModuleItem item = (ModuleItem) arg0.getAdapter().getItem(arg2); mActivity.gridViewClick(mAItem, item); } }); return gView; } }