Advertisement
ppamorim

Untitled

Jul 24th, 2014
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.37 KB | None | 0 0
  1. public class ListLayout extends FreeFlowLayoutBase {
  2.  
  3.     private static final String TAG = "ListLayout";
  4.     private HashMap<Object, FreeFlowItem> map;
  5.     private Section s;
  6.  
  7.     private int itemHeight = 250;
  8.  
  9.     public ListLayout() {}
  10.  
  11.     @Override
  12.     public Map<Object, FreeFlowItem> getItemProxies(int viewPortLeft,
  13.                                                     int viewPortTop) {
  14.         Rect viewport = new Rect(viewPortLeft, viewPortTop, viewPortLeft
  15.                 + width, viewPortTop + height);
  16.         HashMap<Object, FreeFlowItem> ret = new HashMap<Object, FreeFlowItem>();
  17.  
  18.         Iterator<Entry<Object, FreeFlowItem>> it = map.entrySet().iterator();
  19.         while (it.hasNext()) {
  20.             Entry<Object, FreeFlowItem> pairs = it.next();
  21.             FreeFlowItem p = (FreeFlowItem) pairs.getValue();
  22.             if (Rect.intersects(p.frame, viewport)) {
  23.                 ret.put(pairs.getKey(), p);
  24.             }
  25.         }
  26.         return ret;
  27.     }
  28.  
  29.     @Override
  30.     public void setLayoutParams(FreeFlowLayoutParams params) {}
  31.  
  32.     @Override
  33.     public void prepareLayout() {
  34.  
  35.         Log.d(TAG, "prepare layout!!!");
  36.         map = new HashMap<Object, FreeFlowItem>();
  37.         s = itemsAdapter.getSection(0);
  38.         Log.d(TAG, "prepare layout for: " + s.getDataCount());
  39.         for (int i = 0; i < s.getDataCount(); i++) {
  40.  
  41.             Rect r = new Rect();
  42.             FreeFlowItem p = new FreeFlowItem();
  43.  
  44.             p.isHeader = false;
  45.             p.itemIndex = i;
  46.             p.itemSection = 0;
  47.             p.data = s.getDataAtIndex(i);
  48.  
  49.             switch (i % 6) {
  50.  
  51.                 case (0):
  52.                     r.left = 0;
  53.                     r.right = width;
  54.                     r.top = i / 6 * (4 * itemHeight);
  55.                     r.bottom = r.top + itemHeight;
  56.                     break;
  57.  
  58.                 case (1):
  59.                     r.left = 0;
  60.                     r.right = width / 2;
  61.                     r.top = i / 6 * (4 * itemHeight) + itemHeight;
  62.                     r.bottom = r.top + itemHeight;
  63.                     break;
  64.  
  65.                 case (2):
  66.                     r.left = width / 2;
  67.                     r.right = width;
  68.                     r.top = i / 6 * (4 * itemHeight) + itemHeight;
  69.                     r.bottom = r.top + itemHeight;
  70.                     break;
  71.  
  72.                 case (3):
  73.                     r.left = 0;
  74.                     r.right = width / 2;
  75.                     r.top = i / 6 * (4 * itemHeight) + 2 * itemHeight;
  76.                     r.bottom = r.top + itemHeight;
  77.                     break;
  78.  
  79.                 case (4):
  80.  
  81.                     r.left = width / 2;
  82.                     r.right = width;
  83.                     r.top = i / 6 * (4 * itemHeight) + 2 * itemHeight;
  84.                     r.bottom = r.top + itemHeight;
  85.                     break;
  86.  
  87.                 case (5):
  88.                     r.left = 0;
  89.                     r.right = width;
  90.                     r.top = i / 6 * (4 * itemHeight) + 3 * itemHeight;
  91.                     r.bottom = r.top + itemHeight;
  92.                     break;
  93.  
  94.                 case (6):
  95.  
  96.                     r.left = width / 2;
  97.                     r.right = width;
  98.                     r.top = i / 6 * (4 * itemHeight) + 4 * itemHeight;
  99.                     r.bottom = r.top + itemHeight;
  100.                     break;
  101.  
  102.                 default:
  103.                     break;
  104.             }
  105.             p.frame = r;
  106.             map.put(s.getDataAtIndex(i), p);
  107.         }
  108.     }
  109.  
  110.     @Override
  111.     public FreeFlowItem getFreeFlowItemForItem(Object item) {
  112.         return map.get(item);
  113.     }
  114.  
  115.     @Override
  116.     public boolean horizontalScrollEnabled() {
  117.         return false;
  118.     }
  119.  
  120.     @Override
  121.     public boolean verticalScrollEnabled() {
  122.         return true;
  123.     }
  124.  
  125.     @Override
  126.     public int getContentWidth() {
  127.         return 0;
  128.     }
  129.  
  130.     @Override
  131.     public int getContentHeight() {
  132.  
  133.         int additional = 0;
  134.         if((s.getDataCount() * 4) % 6 != 0){
  135.             additional = 1;
  136.         }
  137.  
  138.         int val =  ((s.getDataCount() * 4 / 6 )+additional) *itemHeight;
  139.         Log.d(TAG, "items: "+s.getDataCount()+"/  "+itemHeight+": "+val);
  140.  
  141.         return val;
  142.     }
  143.  
  144.     @Override
  145.     public FreeFlowItem getItemAt(float x, float y) {
  146.         // TODO Auto-generated method stub
  147.         return null;
  148.     }
  149.  
  150.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement