创建github技术博客技术攻略
http://blog.csdn.net/renfufei/article/details/37725057/
搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
http://blog.csdn.net/on_1y/article/details/19259435
github上README.md教程
http://blog.csdn.net/kaitiren/article/details/38513715
在线网页格式编辑
1 package in.srain.cube.views.ptr; 2 3 import in.srain.cube.views.ptr.indicator.PtrIndicator; 4 5 /** 6 * A single linked list to wrap PtrUIHandler 7 */ 8 class PtrUIHandlerHolder implements PtrUIHandler { 9 10 private PtrUIHandler mHandler; 11 private PtrUIHandlerHolder mNext; 12 13 private boolean contains(PtrUIHandler handler) { 14 return mHandler != null && mHandler == handler; 15 } 16 17 private PtrUIHandlerHolder() { 18 19 } 20 21 public boolean hasHandler() { 22 return mHandler != null; 23 } 24 25 private PtrUIHandler getHandler() { 26 return mHandler; 27 } 28 29 public static void addHandler(PtrUIHandlerHolder head, PtrUIHandler handler) { 30 31 if (null == handler) { 32 return; 33 } 34 if (head == null) { 35 return; 36 } 37 if (null == head.mHandler) { 38 head.mHandler = handler; 39 return; 40 } 41 42 PtrUIHandlerHolder current = head; 43 for (; ; current = current.mNext) { 44 45 // duplicated 46 if (current.contains(handler)) { 47 return; 48 } 49 if (current.mNext == null) { 50 break; 51 } 52 } 53 54 PtrUIHandlerHolder newHolder = new PtrUIHandlerHolder(); 55 newHolder.mHandler = handler; 56 current.mNext = newHolder; 57 } 58 59 public static PtrUIHandlerHolder create() { 60 return new PtrUIHandlerHolder(); 61 } 62 63 public static PtrUIHandlerHolder removeHandler(PtrUIHandlerHolder head, PtrUIHandler handler) { 64 if (head == null || handler == null || null == head.mHandler) { 65 return head; 66 } 67 68 PtrUIHandlerHolder current = head; 69 PtrUIHandlerHolder pre = null; 70 do { 71 72 // delete current: link pre to next, unlink next from current; 73 // pre will no change, current move to next element; 74 if (current.contains(handler)) { 75 76 // current is head 77 if (pre == null) { 78 79 head = current.mNext; 80 current.mNext = null; 81 82 current = head; 83 } else { 84 85 pre.mNext = current.mNext; 86 current.mNext = null; 87 current = pre.mNext; 88 } 89 } else { 90 pre = current; 91 current = current.mNext; 92 } 93 94 } while (current != null); 95 96 if (head == null) { 97 head = new PtrUIHandlerHolder(); 98 } 99 return head; 100 } 101 102 @Override 103 public void onUIReset(PtrFrameLayout frame) { 104 PtrUIHandlerHolder current = this; 105 do { 106 final PtrUIHandler handler = current.getHandler(); 107 if (null != handler) { 108 handler.onUIReset(frame); 109 } 110 } while ((current = current.mNext) != null); 111 } 112 113 @Override 114 public void onUIRefreshPrepare(PtrFrameLayout frame) { 115 if (!hasHandler()) { 116 return; 117 } 118 PtrUIHandlerHolder current = this; 119 do { 120 final PtrUIHandler handler = current.getHandler(); 121 if (null != handler) { 122 handler.onUIRefreshPrepare(frame); 123 } 124 } while ((current = current.mNext) != null); 125 } 126 127 @Override 128 public void onUIRefreshBegin(PtrFrameLayout frame) { 129 PtrUIHandlerHolder current = this; 130 do { 131 final PtrUIHandler handler = current.getHandler(); 132 if (null != handler) { 133 handler.onUIRefreshBegin(frame); 134 } 135 } while ((current = current.mNext) != null); 136 } 137 138 @Override 139 public void onUIRefreshComplete(PtrFrameLayout frame) { 140 PtrUIHandlerHolder current = this; 141 do { 142 final PtrUIHandler handler = current.getHandler(); 143 if (null != handler) { 144 handler.onUIRefreshComplete(frame); 145 } 146 } while ((current = current.mNext) != null); 147 } 148 149 @Override 150 public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) { 151 PtrUIHandlerHolder current = this; 152 do { 153 final PtrUIHandler handler = current.getHandler(); 154 if (null != handler) { 155 handler.onUIPositionChange(frame, isUnderTouch, status, ptrIndicator); 156 } 157 } while ((current = current.mNext) != null); 158 } 159 }