请选择 进入手机版 | 继续访问电脑版
查看: 6529|回复: 0

[Android开发资源分享] 仿糗事百科Android客户端源码

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png 8 o+ q% o) d6 D1 r0 _7 G$ q4 K- S* A
侧边栏[1].png
; j# i: I3 ^5 Q; v: G8 N 登录[1].png 2 S8 h; V$ O$ [& C9 l" T+ t
个人中心[1].png 7 K  x) F4 ]' N0 e. o' Q
源码片段:
& b/ V) P7 f4 Y; @* j
9 r( G2 A* p/ e* \" n/ i7 R
  1. /**0 @& [  ~: C7 [  v) Q, t
  2. * 热门的fragment
      h7 v0 p6 e( ]# B1 K3 j
  3. * */
    " H. C& G7 o: S$ \- u. a" f, Z, Q
  4. public class HotFragment extends Fragment implements OnClickListener {& t% ?# q" M6 [4 ]
  5. ) ]# A% I- Q2 u+ F
  6.     private String hotUrl = Model.GANHUO;
    2 x- ]3 A# h7 j
  7.     private int topMeunFlag = 1;6 H& @: z; W$ h7 V/ j6 i  N
  8.     private View view;
    0 a* k/ P6 G& o: K3 v
  9.     private ImageView mTopImg;
    - T! O5 R1 W, s0 L
  10.     private ImageView mSendAshamed;
    1 B  h* r8 y% }. f
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;  t/ O/ H" |' F8 [# k8 k
  12.     private MyListView myListView;9 H1 r- P7 X$ ?+ [) m3 L6 r
  13.     private LinearLayout mLinearLayout, load_progressBar;# g! K$ y- L! z5 W* A- b
  14.     private TextView HomeNoValue;0 Z+ y- B9 n; H# i
  15.     private HotFragmentCallBack mHotFragmentCallBack;8 |- K- `* g: w4 O! ^
  16.     private MyJson myJson = new MyJson();% G% C7 w% v( r: M, r
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();6 d, ~$ F3 B: a# V% }5 I
  18.     private MyListAdapter mAdapter = null;) U+ L  L- U7 P& K, R$ `( z" g
  19.     private Button ListBottem = null;
    / Y# L, R4 r1 o9 H! Z5 |
  20.     private int mStart = 0;
    + W; J9 S+ u2 C/ D5 h5 u3 |
  21.     private int mEnd = 5;
    # Y) ~$ s3 ]* |2 j& O) `6 @
  22.     private String url = null;
    " ?) I/ `5 M2 I4 b! G% [1 P- z
  23.     private boolean flag = true;
    : V2 s1 x# y" w" b
  24.     private boolean loadflag = false;
    ( p; |( m0 n- a. F: ?, U+ s1 ?- Q, d
  25.     private boolean listBottemFlag = true;% D( S9 w: I2 H- a! T3 F
  26.     private Context ctx;: K7 q6 G8 J0 @. f( f7 p0 q
  27. 5 N, q/ [" d, B! y, L% T+ n, \
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,* e0 L* b% N/ R5 V  f+ `, K
  29.             Bundle savedInstanceState) {
    , `' D4 v& |8 o" {9 |% N4 i
  30.         view = inflater.inflate(R.layout.frame_home, null);9 l% E4 o3 i- M& u. R  n. `
  31.         ctx = view.getContext();
    # h( ?7 U* S) u3 r& N. y( O
  32.         myListView = new MyListView(ctx);  ?3 K6 I" N4 I/ \( K
  33.         initView();
    * R4 z( S/ o' e1 l6 _: n8 A& \2 ?6 }
  34.         return view;
    ; {1 u) Z6 C: C: |9 n% T, w
  35.     }! Z' Y& w1 J+ k% B

  36. / p1 ~8 _% H" e
  37.     private void initView() {9 L# U; j1 T5 k3 |- Q$ E
  38.         load_progressBar = (LinearLayout) view
    9 @/ p; U' ^& O
  39.                 .findViewById(R.id.load_progressBar);
    % {2 N6 h5 J' {. V6 `
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);  L( k5 N( a" ]9 m& {0 X
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(
    7 j+ D) `5 q" a- ^* ^: z, j
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,
    ( [; n8 {" \1 z, B, i9 h
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));9 c( Z* f( _/ m( c+ I4 w
  44.         myListView.setDivider(null);5 t: F% R2 A2 i1 T# N
  45.         mLinearLayout.addView(myListView);
    3 |4 J5 z. a  S5 {& c( y
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);
    ! I4 z. u+ d" [9 C( l% \' J5 _6 Q$ K* c. X
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);: b+ j; }& S% `& T: p5 M
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);& B4 Y. M2 [( i. M/ E+ l+ `
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);. {1 X8 m# ~  ?
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);( p6 v8 W7 y( ~" f. Y
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);, J( D* q2 h. N: h' J: p# g/ H
  52.         mTopImg.setOnClickListener(this);
    2 n, i4 t+ P2 `9 H4 Q% K
  53.         mSendAshamed.setOnClickListener(this);
    # \9 i: `& q9 k  F9 Y1 w' d4 o
  54.         mTopMenuOne.setOnClickListener(this);# ?* A' V6 Q0 Y% G
  55.         mTopMenuTwo.setOnClickListener(this);; j# [; Q0 M! k: W' N
  56.         mTopMenuThree.setOnClickListener(this);! A8 y, c- I6 X+ W4 y, \+ {# \' T, ^
  57.         createTextColor();7 c* y( |6 B5 I7 o1 t; s1 `
  58.         switch (topMeunFlag) {* v  C" b8 M! r5 ^
  59.         case 1:, X, X# ?- p5 V! D' D7 x
  60.             mTopMenuOne.setTextColor(Color.WHITE);( S# z7 V( x4 h/ E' D, o
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);2 J9 m, v# ]  o+ \) @0 R  U
  62.             break;+ q" ^; ^0 {& ]! Z3 X! G3 E
  63.         case 2:8 v; F# u+ P6 n( w
  64.             mTopMenuTwo.setTextColor(Color.WHITE);
    # l( T' {( k9 C3 `4 u/ }+ H
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    ! k1 a/ J7 L$ a* _
  66.             break;6 Z2 _, Z+ \/ E+ Z. B
  67.         case 3:! _6 }: c; H- A- o7 a/ \* x& J; n3 n
  68.             mTopMenuThree.setTextColor(Color.WHITE);
    ' x: |7 k: U* H0 y, r  O3 M) J& I
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);1 ]+ y/ c1 w& D
  70.             break;% Y8 ?) W. b& Y# d/ e* `  g
  71.         }
    & |# k+ S8 q. b5 D: T+ S% b  b- W* w
  72.         mAdapter = new MyListAdapter(ctx, list);5 |  G& O3 k: ~0 c1 g
  73.         ListBottem = new Button(ctx);; d6 ]5 ^- O" y( y* H
  74.         ListBottem.setText("点击加载更多");7 ]6 r7 v; z6 I2 V, ^+ M- l
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {
    ! x* I( A# B3 Q
  76.             @Override
    $ w% ?* R8 M/ r% @4 F
  77.             public void onClick(View v) {
    * u; o# Q) u+ g( z
  78.                 if (flag && listBottemFlag) {5 f- X* u& f9 s% T8 l- E3 ^
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    . ?8 `5 f1 |8 j5 q, f$ N
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    . b) h5 h9 v; V$ E2 g( ~6 Y
  81.                     listBottemFlag = false;
    + m$ _. t- ^% Z5 s+ {3 J. |! I
  82.                 } else if (!listBottemFlag)
    5 h" G$ T  {' o) _" H& p- x0 h4 b
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();
      p3 _0 A7 L0 q: [) y+ y
  84.             }5 H  ^& X9 `* ~; B
  85.         });
    % \8 n3 f" ^. E* O6 R
  86.         myListView.addFooterView(ListBottem, null, false);& @$ E" ?) k2 y: q1 G
  87.         ListBottem.setVisibility(View.GONE);* E' x1 {$ E: i  @
  88.         myListView.setAdapter(mAdapter);. k& w( L: R% u# }5 Q2 y6 _
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());5 ]9 [2 ~" d0 W
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;- r: C1 h. r! C% \
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    6 K# ~4 s. [& m2 L, \% x, e
  92.         myListView.setonRefreshListener(new OnRefreshListener() {
    ' O' T! e" }8 m( f9 D+ O' c# p3 ~( M# z
  93. * u* R3 p' `6 w6 b# y; M6 P: D
  94.             @Override. O. @* y8 e( y' c9 x
  95.             public void onRefresh() {% N& N; M; X- h) q2 ~
  96. ( |5 c# j/ v2 F: M6 Z) n
  97.                 if (loadflag == true) {. R* f1 e7 p( ?( }' I
  98.                     mStart = 0;6 z4 K9 \0 i! e) V# w" t2 f
  99.                     mEnd = 5;& X3 B  G4 r# M# N5 T$ G/ J) R
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    4 y! a# c2 ?2 R2 ~
  101.                     ListBottem.setVisibility(View.GONE);/ B- d, _* j4 K
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    " U9 @, G( L, Y. D, h
  103.                     loadflag = false;7 W6 ~( O) Q7 t& |
  104.                 } else {
    . W0 M2 b' y) X: y
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();1 o- S5 S2 {! _  R2 ]: V
  106.                 }
    ) X$ @% X% c( h( U  h
  107. % C3 h; c3 l  |. @; W- g6 i
  108.             }
    3 [) _* P% E' k  T
  109.         });
    1 q& V: r5 I4 q8 |
  110.     }
    8 Q. N' f. W2 n) D$ G

  111. : m/ k8 v' D* ?0 J8 K
  112.     @Override# q% V5 q0 d3 k; r+ {& d& H
  113.     public void onClick(View arg0) {' ^5 D# O: t" ]" b' u9 A
  114.         int mID = arg0.getId();
    3 Z" |0 r$ h' [/ }) O) \
  115.         switch (mID) {  d8 E) Y$ j7 ]- c) B+ h; x8 m
  116.         case R.id.Menu:
    6 U% @1 {. S" M7 z1 g" l
  117.             mHotFragmentCallBack.callback(R.id.Menu);
    & l% ]2 n8 v- {! B; A  t9 a
  118.             break;9 X/ K! L1 b2 c" d6 ^; U
  119.         case R.id.SendAshamed:( @/ W# t- `$ n$ B! U
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);
    : ?9 W% N3 \, |6 X6 _! I# T
  121.             break;
    ( a9 |+ @/ o2 V) F
  122.         case R.id.TopMenuOne:
    0 d5 x  M2 Q( G
  123.             createTextColor();
    / V1 A  q3 ^) t; q* Y3 |
  124.             mTopMenuOne.setTextColor(Color.WHITE);5 d5 }; M# Y! t: I
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);- u# b1 [( Z+ i: S7 B; T1 `
  126.             if (topMeunFlag != 1) {
    1 y8 f$ ~. z% h4 e
  127.                 hotUrl = Model.GANHUO;3 s& D' Q$ ?: p7 m4 n
  128.                 topMeunFlag = 1;
    ! X# s+ @& ?; L6 n
  129.                 createListModel();
    9 G4 G0 l4 T' k. N# a
  130.             }
    " x3 `: F9 i+ N9 o8 P* a" `
  131.             break;/ Y1 g" d& C* `" V. R
  132.         case R.id.TopMenuTwo:9 b  R) `' o4 U
  133.             createTextColor();
    6 X% K$ I" l* r8 m! i
  134.             mTopMenuTwo.setTextColor(Color.WHITE);
    & {5 G! A. g' ~* u( m
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    % @% h: H8 `/ ^" E/ H
  136.             if (topMeunFlag != 2) {' t$ w' ]7 w9 N( ~+ T
  137.                 hotUrl = Model.NENCAO;' f. m) T  e! ~2 h
  138.                 topMeunFlag = 2;
    ; s* j+ f+ i: X" k5 P( l! }5 P
  139.                 createListModel();
    7 d" K# ^5 ]$ G4 t2 Y8 r, \, D" e
  140.             }# e. l9 r( Z- I8 i/ j. J: q# i
  141.             break;
    ; [+ q4 |8 C5 u3 W. H$ g
  142.         case R.id.TopMenuThree:9 E+ K" j6 k8 o0 c8 X5 U& u2 C
  143.             createTextColor();
    9 \: i' X, J' Q/ a" T7 h3 c
  144.             mTopMenuThree.setTextColor(Color.WHITE);
    ) i" a9 `$ X9 r, d( B
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);# F! d) @" Y5 ^5 Z2 a8 u8 @
  146.             if (topMeunFlag != 3) {
    , l6 n5 }! ^- l' D" j6 a" ~; N
  147.                 hotUrl = Model.WENZI;3 T% D/ A* b  D& X
  148.                 topMeunFlag = 3;
    * K% k- q- X4 T; z( u
  149.                 createListModel();
    7 b3 N& Z0 n+ l0 V2 E
  150.             }. S& D# }& g$ \; z4 E
  151.             break;
    # d. o- n% k$ S7 v+ j
  152.         default:
    0 n9 ^5 F) A  Q9 ^
  153.             break;
    6 A  R7 K' b6 U* l- _$ R3 h# [; A
  154.         }
    4 d$ g/ y; h. C: _2 T
  155.     }  D1 G  t5 c) F% ~

  156. 7 v8 x" H) o; P5 l- D9 A3 |) M
  157.     private void createListModel() {
    ' D$ p" |6 A* s" J$ j2 Q/ l
  158.         ListBottem.setVisibility(View.GONE);8 i) c! u- P. T5 ]- i
  159.         mLinearLayout.setVisibility(View.GONE);
    8 A  v( O" U4 c4 t: |+ g& V
  160.         load_progressBar.setVisibility(View.VISIBLE);
    # J1 }. A- ^/ d9 p$ P: w2 j
  161.         loadflag = false;
    8 G1 X7 a2 e4 x4 u% m3 Y
  162.         mStart = 0;
    + L: h2 a! k/ ^0 J7 E# W) b7 N
  163.         mEnd = 5;$ h# G" S  v; x% _- J
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    3 i& ~% H& _. J8 S2 J
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));/ g; M' R5 c* g6 [
  166.     }
    8 x0 a, {; P: P& c; H9 i

  167. 8 U( H/ f$ _, D0 L- e4 ^
  168.     private class MainListOnItemClickListener implements OnItemClickListener {
    , `6 q. B& G# G( Q5 e# v( N7 ?6 g0 F
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,  Y! d! h" J; Y+ z( \' U
  170.                 long arg3) {
    5 v; N: w5 ]) I" f
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);3 t5 E$ {9 O5 t( J9 F
  172.             Bundle bund = new Bundle();
    1 o5 A- p* @( v7 c3 f! C
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));
    : s4 e) H0 P$ G# w
  174.             intent.putExtra("value", bund);
    ' t$ @2 F0 G8 t8 y5 G& u6 c! x
  175.             startActivity(intent);
    - \: N; X9 v/ t4 I1 W
  176.         }
    # y* H. c% M) D2 L+ R
  177.     }: Y" R* {6 H. f/ ~

  178. & U. ~' o/ R, m6 i' }
  179.     @SuppressWarnings("deprecation")
    5 \" d2 ]/ d* a  j7 Z
  180.     private void createTextColor() {4 f! k! S5 X  z4 S
  181.         Drawable background = new BitmapDrawable();
    $ K9 o  E1 A+ y- P
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));3 O* d5 a; M% H3 A1 `
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));0 H5 f2 I2 o/ t- a1 C+ g
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));7 i5 ~* @: W# H- [9 l0 t
  185.         mTopMenuOne.setBackgroundDrawable(background);
    2 u: N! e/ f* l' D% q6 J
  186.         mTopMenuTwo.setBackgroundDrawable(background);
    # O3 @& L$ J, p' Q7 t3 `
  187.         mTopMenuThree.setBackgroundDrawable(background);
    2 u$ h. D& a# C! l3 E. H, L
  188.         HomeNoValue.setVisibility(View.GONE);
    & g" _, o9 G- p& x3 @' ?8 P
  189.     }; t+ s$ s& o; ?. E: d( r8 m* c

  190. / O1 k2 j9 a: Z! n5 u* x4 p% R
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {
    0 P3 p; {* Y' ?+ C; T% w
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;( `. L  E& s8 J( y
  193.     }
    ( j  F9 }) j* i! I* [

  194. ' Y& s- ]+ v: a( m
  195.     public interface HotFragmentCallBack {3 u0 y& p4 e: {: K# {& N7 L
  196.         public void callback(int flag);! }3 D5 {# L" D9 r2 [( E( k
  197.     }1 h- w1 D7 p- G$ D' I, l- H4 N
  198. , x: @& U: c5 \# o" }  z% B$ _0 |
  199.     Handler hand = new Handler() {
    5 M& _% P# W) q: }* N
  200.         public void handleMessage(android.os.Message msg) {
    5 Y2 j4 W+ \' I! I
  201.             super.handleMessage(msg);
    & A6 t4 h) U7 ?5 l; j
  202.             if (msg.what == 404) {/ H2 c7 z3 G) j1 a1 ~7 Y
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();$ n2 L: q" Z* t1 G
  204.                 listBottemFlag = true;
    7 L  \4 \6 ~2 w
  205.             } else if (msg.what == 100) {
    ' Y1 y; \7 m4 `, {& X
  206.                 Toast.makeText(ctx, "传输失败", 1).show();
    - P1 O9 s- M" s. U
  207.                 listBottemFlag = true;8 N% L  I  W) w
  208.             } else if (msg.what == 200) {3 w( j! W% t, V& ]$ E8 F  ^
  209.                 String result = (String) msg.obj;6 r5 q$ T" J, G# H8 f% e! k$ m
  210.                 if (result != null) {
    ) q/ `) O& Z% _( r
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);2 ^, E1 G. \1 |. P9 [
  212.                     if (newList != null) {
    , T- l1 ]+ q, L$ e% ]. H
  213.                         if (newList.size() == 5) {
    * V  c/ Z2 E$ O' {( O8 t9 p2 f
  214.                             ListBottem.setVisibility(View.VISIBLE);
    . D0 E! c# @6 x- Z- s7 ?; r
  215.                             mStart += 5;3 M5 k9 ]; g" E# g" o& D! a. u6 O
  216.                             mEnd += 5;
    ( X; F  U* r% Z$ m7 V! d& C7 v
  217.                         } else if (newList.size() == 0) {
    ) b$ D4 b- }( C6 J
  218.                             if (list.size() == 0)
    9 x- I; U; W0 j  j# i) v5 E
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);/ N; o; `, K+ Z+ q
  220.                             ListBottem.setVisibility(View.GONE);# y6 m7 U# H: ^5 P) A! G& N
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();8 V2 R: M5 P' t. c! c2 B) F+ t, ~
  222.                         } else {6 Q3 ]3 p% x; [3 j
  223.                             ListBottem.setVisibility(View.GONE);, ]- t( c: R+ F* q
  224.                         }
    ' Z1 ?- a2 `# |5 I
  225.                         if (!loadflag) {+ c0 y/ ?4 p$ _% R( k$ E
  226.                             list.removeAll(list);
    - I: d& }" Z! d3 [, M
  227.                         }
    7 n2 |" x, h: l% m7 C
  228.                         for (AshamedInfo info : newList) {" h9 W1 A# {7 y4 H- L
  229.                             list.add(info);
    1 }0 v1 r1 C4 a. N
  230.                         }" o; z8 q3 |' X
  231.                         listBottemFlag = true;
    - E- r+ _  c, \& @
  232.                     } else {
    # Q- r3 I/ Q- `. q* L9 i
  233.                         if (list.size() == 0)/ S1 Q6 l; R( o5 D$ ?) S
  234.                             HomeNoValue.setVisibility(View.VISIBLE);
      B% c1 m! d  A# D) j: V) e" R7 j
  235.                     }" F% T$ H! D" F2 P6 a
  236.                 }+ Q! C; T; t+ Y/ V
  237.                 mLinearLayout.setVisibility(View.VISIBLE);
    5 U1 N) t9 t8 p6 j0 ^' d
  238.                 load_progressBar.setVisibility(View.GONE);, f3 {5 {% |2 R9 S  O
  239.                 myListView.onRefreshComplete();  U2 w; J' j! z) s  j! \3 s! ^  W
  240.                 mAdapter.notifyDataSetChanged();, J; t4 X$ N4 B
  241.                 loadflag = true;1 a; ~; o' V6 J) M, i. u; I* d
  242.             }6 \# E; ?/ z2 j5 F) M$ A
  243.         };! L* G  C2 U1 I! t
  244.     };& a0 t+ L# @) n

  245. ; {* ~# r/ \) A/ x5 @
  246. }
    ! k# |9 a) w2 j* |* ~; S! n$ e
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码

! K, x2 K. c6 @4 J+ F6 p, L5 X# `" ~  P
源码下载:
3 a3 q, e7 Q5 v% E
游客,如果您要查看本帖隐藏内容请回复
, r/ {7 T9 |1 ^( L( V+ _& Z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

快速回复 返回顶部 返回列表