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

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

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png   _- r- ~& H5 R/ g7 N
侧边栏[1].png 4 k( L8 a  {; r& u# A2 y
登录[1].png # T2 v& |% l0 a/ J% i; l
个人中心[1].png ( p# u9 z; j% N, l( f; I2 k" K
源码片段:5 `( F, ?$ @% @' G' [& S- h
3 E1 ~+ P* E+ }; _# z1 f( U4 E& c
  1. /**
    & j* g- D$ ?: W( W( `0 K, s
  2. * 热门的fragment  j( z2 a3 l4 \) y
  3. * */
    8 J# S8 N0 L' f- f3 b9 [% S% I
  4. public class HotFragment extends Fragment implements OnClickListener {1 J$ k5 Q5 t4 z3 L& A9 G7 D

  5. - W$ E, n" j/ E5 Q1 U  p6 ?8 h9 T
  6.     private String hotUrl = Model.GANHUO;9 X5 S) g2 K0 k& h
  7.     private int topMeunFlag = 1;4 @! f6 |7 [' T8 Q; I4 U
  8.     private View view;
    5 T/ h, G8 B# z3 Q5 P
  9.     private ImageView mTopImg;
    . d' w# U& t* j  T
  10.     private ImageView mSendAshamed;
    , D$ v! H5 ^8 g& `
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;5 w3 U1 `0 n7 g& a4 n" Z
  12.     private MyListView myListView;. r9 f! E! K7 F$ W, o
  13.     private LinearLayout mLinearLayout, load_progressBar;
    * g+ a2 `: M. G+ m
  14.     private TextView HomeNoValue;
    9 q6 A$ v8 {8 J4 X8 Y, U9 z
  15.     private HotFragmentCallBack mHotFragmentCallBack;# B/ y" u) `1 U( u' c: |- _
  16.     private MyJson myJson = new MyJson();3 K% j& E* j3 O5 _' o2 U
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();; [& U2 j8 M2 M9 B7 }1 `
  18.     private MyListAdapter mAdapter = null;
    5 r% c# ]+ O8 b. ^8 U
  19.     private Button ListBottem = null;
    9 j) G+ g, T+ Z: Z6 X$ u; U- r
  20.     private int mStart = 0;( ~7 o# k8 ~/ A3 t
  21.     private int mEnd = 5;
    3 i2 J$ d: K3 E& \* E2 o! n
  22.     private String url = null;- T+ A7 {6 F; e! i0 d; n
  23.     private boolean flag = true;/ V5 e( H& Q, h/ c, q
  24.     private boolean loadflag = false;
    + {+ q! F: [) t9 K" d7 \
  25.     private boolean listBottemFlag = true;4 H+ ~" m- g3 k, k
  26.     private Context ctx;- T9 `$ m5 h, k2 o7 G. t( x
  27. " G+ {# p2 a8 h5 @
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    $ O; Y0 @9 P7 G7 _- `; [
  29.             Bundle savedInstanceState) {+ z- [3 V0 j: \; g1 a1 d
  30.         view = inflater.inflate(R.layout.frame_home, null);) Q8 t6 K6 y: B5 f
  31.         ctx = view.getContext();& L; Z9 l  a9 _) g
  32.         myListView = new MyListView(ctx);
    $ p, o) B$ W1 n9 t; w5 c3 P
  33.         initView();
    $ Z' U( b+ ?% O! K+ U1 Z9 C' K
  34.         return view;5 Q& N3 b+ j; z: t
  35.     }
    7 s. K; }  m( c4 I
  36. 9 Y7 W$ y1 l; Y7 J6 l
  37.     private void initView() {  ~9 r9 l# l5 g4 Y% L2 k
  38.         load_progressBar = (LinearLayout) view+ r: ?5 r2 \% Y# u4 X
  39.                 .findViewById(R.id.load_progressBar);
    ; e5 ^% F& e4 N4 }. D
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);
    ! U* T: p* q5 x* {) y8 Q2 t' I
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(
    # y* S* N# N& b9 @- V
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,' n' n' ]6 F8 g
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));+ n- _9 {  p) A+ h5 _4 @& [
  44.         myListView.setDivider(null);  [) f) \8 S, u" z
  45.         mLinearLayout.addView(myListView);
    7 N& t6 X: f' G; Y# J5 m" X4 A" ^' r1 H
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);
    & |/ W% k( X* j9 o' c& u. S" V
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);
    " [- H: S, S/ P! O1 \9 w6 c+ g: B/ n; u
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);
    ! B$ @$ |8 x, V8 o" K
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);
    0 B& W* m0 p( a/ Z
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);
    + v: S' a1 o4 K1 y
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);
    ; v5 ?* j1 q9 P( b2 }$ E3 y
  52.         mTopImg.setOnClickListener(this);+ ?: \; _( V$ v9 _& o
  53.         mSendAshamed.setOnClickListener(this);) L; s5 _% I! s4 }
  54.         mTopMenuOne.setOnClickListener(this);
    & k% \% e2 Y- k/ h  b2 ~& f
  55.         mTopMenuTwo.setOnClickListener(this);
    : `# T4 \1 F; r% ~
  56.         mTopMenuThree.setOnClickListener(this);' J- w" ~) s+ z1 s' n
  57.         createTextColor();
    , d% b* O$ s- V% o9 b5 _% O# r7 n3 U3 @
  58.         switch (topMeunFlag) {
    9 H% C& v0 N- p0 }2 y9 ^$ j  {
  59.         case 1:
    ' v3 \  V+ h$ i# E8 Z0 T
  60.             mTopMenuOne.setTextColor(Color.WHITE);
    * x9 r+ Q. X/ O/ |
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    ; f7 Q0 F+ e6 K( W# w' p9 ]# z
  62.             break;
    - d8 g, P9 N( V: S0 w/ Q- y! n
  63.         case 2:) m6 H/ D/ E0 L- S
  64.             mTopMenuTwo.setTextColor(Color.WHITE);
    8 l4 \6 O6 b3 ]2 a( R
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);; {0 ^1 q5 g# P# b/ m
  66.             break;! h( q) E2 o" l7 R( }
  67.         case 3:+ [1 u( n8 Q" j5 i/ ^
  68.             mTopMenuThree.setTextColor(Color.WHITE);
    & x1 l5 E$ Y' Q$ ?8 Z1 v
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);/ h6 }  n! e, ?- P2 P2 C+ X  C1 o9 a
  70.             break;
    4 l9 |. o5 T! ~5 ?7 p
  71.         }
    ; J( ~; E( m/ e$ C
  72.         mAdapter = new MyListAdapter(ctx, list);/ @/ Q. R" K2 R% F
  73.         ListBottem = new Button(ctx);
    & Z& |$ L4 R8 X2 u& x0 t
  74.         ListBottem.setText("点击加载更多");1 G; F. R$ a4 Y* }( e3 r7 x% I
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {
    4 h1 p8 o% [5 D6 z+ L* {9 I
  76.             @Override
    : K. Q6 S) ~9 x5 k% z* E3 E
  77.             public void onClick(View v) {- Q' Q3 v, J( b) U
  78.                 if (flag && listBottemFlag) {2 @9 Q: @% X( Q4 v  B% i
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    - u7 k' Z! I( E; g: v; Z4 X
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));+ [, v$ y+ u# j1 Y& B
  81.                     listBottemFlag = false;
    $ Q7 H) R) o4 U' y  I
  82.                 } else if (!listBottemFlag)7 _: R  e5 P+ T' c; ^4 {
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();
    / }6 l0 |+ R# c2 h8 W8 t
  84.             }9 N$ p. E0 W2 B+ x2 f
  85.         });
    & |: t1 t  H0 B- P1 Y
  86.         myListView.addFooterView(ListBottem, null, false);% _- X- L! F3 D4 }( p4 y2 K
  87.         ListBottem.setVisibility(View.GONE);
    2 p! Q3 }8 M6 v- V! a/ s
  88.         myListView.setAdapter(mAdapter);8 y+ k5 Z! f3 p( D
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());
    * O) T3 U; Y# F
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;3 S, m1 `' J1 R* _0 A
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));4 S5 t  P( K- `/ g; z4 g7 O! [
  92.         myListView.setonRefreshListener(new OnRefreshListener() {' p  o# f- `1 M) t

  93. " c  d0 O# P6 u  m6 {  M
  94.             @Override" P2 E7 b6 c& i0 \
  95.             public void onRefresh() {/ W7 N3 _: P* C) n2 B

  96. 9 C2 M% b2 V" W. _
  97.                 if (loadflag == true) {
    % X/ ]. N* n9 r
  98.                     mStart = 0;
    5 Y) P" \/ b5 [" F% E) S
  99.                     mEnd = 5;
    ! v2 B4 d, L3 D2 U* a1 K, s. A
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    : C5 U6 e4 Q: a* y" R7 S: B: h
  101.                     ListBottem.setVisibility(View.GONE);
    * S: |' d2 k5 |
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    $ D9 i, f( Q8 c) S  x
  103.                     loadflag = false;4 {) l; @4 U5 x8 T/ g$ x
  104.                 } else {2 g+ K8 f$ z5 J) p( x( C
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();, W; T  ?2 A5 F: B" J2 G5 l  s; w9 |
  106.                 }
    ; g& q: _% U2 m
  107. $ t2 J1 E7 D7 `# X8 I
  108.             }3 O1 c7 \$ _/ Z3 j; b! q
  109.         });) V0 f- ?% H- l0 y+ R: R  Y. t
  110.     }9 E3 G7 s, S/ p
  111. - X0 ^" I3 ^' p( p" J
  112.     @Override- S. j# R0 K, ~" L% z4 i) E
  113.     public void onClick(View arg0) {( R* o# @" {/ t# t( h
  114.         int mID = arg0.getId();. S3 g& [3 t3 x4 t+ J3 ?
  115.         switch (mID) {, F" m$ h2 U0 B
  116.         case R.id.Menu:- R: L! Q- L3 F
  117.             mHotFragmentCallBack.callback(R.id.Menu);! w3 B. w: m5 o: Q5 X, x5 H
  118.             break;
    , D# g+ C, p6 ~" @8 `, i
  119.         case R.id.SendAshamed:
    : `  n  d7 D4 v! v. V& j
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);
    + N* d; ~8 n0 H* h7 m, }. ]+ {+ z
  121.             break;
    * O" k  h0 P, l' g
  122.         case R.id.TopMenuOne:
    ) ~- [; c+ D* u+ b5 Z" b6 i5 |
  123.             createTextColor();
    & A8 p# T$ S# X1 t( @
  124.             mTopMenuOne.setTextColor(Color.WHITE);- }) f8 {+ C( G+ T: G2 L
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    9 I7 _9 Z6 z1 n! G
  126.             if (topMeunFlag != 1) {
    % R1 Q' `- s" c+ O5 b  }
  127.                 hotUrl = Model.GANHUO;( D4 E8 S: S5 Q, r2 @  Z* O( |
  128.                 topMeunFlag = 1;
    ) G1 T; }7 ~$ c
  129.                 createListModel();4 n1 R3 k! T# ~- t8 E; [
  130.             }
    ( T  U! z0 [8 l, R
  131.             break;
    $ \4 z# S$ j7 J3 j4 b
  132.         case R.id.TopMenuTwo:
    0 i8 M; V0 q$ L5 r" d; q7 i
  133.             createTextColor();! y! i, V' m* D
  134.             mTopMenuTwo.setTextColor(Color.WHITE);
    . D: u. Y0 r' a7 o4 [
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    - ^# W+ U- D7 H& S) Q& ^
  136.             if (topMeunFlag != 2) {" d3 M3 `. ~% B, R0 n6 d
  137.                 hotUrl = Model.NENCAO;( T+ n6 b4 }% p/ a
  138.                 topMeunFlag = 2;
    " p7 N0 g/ N$ S' g( M
  139.                 createListModel();
    6 b2 t" M' f5 Q+ Q4 y
  140.             }8 r! H* v$ J% z9 s6 S
  141.             break;3 _/ n: f9 N; V" O7 x
  142.         case R.id.TopMenuThree:
    ) E0 M1 Z" U' L7 E
  143.             createTextColor();# i3 k" {5 {* {* o) _+ T
  144.             mTopMenuThree.setTextColor(Color.WHITE);5 K  F3 [( Y/ P! g
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    ( o6 v2 ]- b! [5 v6 `; t; v
  146.             if (topMeunFlag != 3) {# _- h: m/ I8 a9 A* ~. \9 O7 p
  147.                 hotUrl = Model.WENZI;
    . f1 w! t! l; T; _# R
  148.                 topMeunFlag = 3;
    4 @- H! R9 c% b  |8 F+ T; Q
  149.                 createListModel();
    ! }  R5 V- ~& v4 ]
  150.             }" V, ~; x# B4 p% j* k
  151.             break;) P0 _5 c7 L/ V* w. C
  152.         default:  s3 M, f" O3 b4 C4 n
  153.             break;
    & i9 k. k' y5 [% N3 C
  154.         }
    " h# L* a" M, ]5 A
  155.     }
    5 u! U: L( `; G/ [* P0 {( _

  156. 9 V) d  K; l8 ]: Q) W
  157.     private void createListModel() {
    " W. _- s) F0 h/ [
  158.         ListBottem.setVisibility(View.GONE);
    # a" ^, P* |, K$ f- s" _; P  r8 l
  159.         mLinearLayout.setVisibility(View.GONE);6 Y  S# @" }' `& N3 e/ j) i2 O
  160.         load_progressBar.setVisibility(View.VISIBLE);% }$ [, @( d4 p1 A' ~; m
  161.         loadflag = false;9 D" l- Y+ ?' a. x
  162.         mStart = 0;
    0 H# ~4 w& G8 \9 m
  163.         mEnd = 5;) k% D$ r; Q$ X) L
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    - T) @5 W- G+ }+ t5 U- k4 l
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));" D: F2 w/ w  }/ x* h- \
  166.     }! [) A, }) ~5 z9 P6 H

  167. , O1 [  L/ L6 Z( I% ]
  168.     private class MainListOnItemClickListener implements OnItemClickListener {6 z* o( M5 z7 ^& M1 p* g
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,3 H$ b. v2 }! Y) A: q' B
  170.                 long arg3) {! u3 U7 W, A) L
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);& V% ?) d2 V- H" m2 D
  172.             Bundle bund = new Bundle();
    ; l+ T+ q4 z/ `. U$ s. S' V4 x: c  V8 |
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));6 [+ T6 v7 T* ~, Q8 O
  174.             intent.putExtra("value", bund);
    9 E$ t8 L5 O$ U- x1 c9 G: |' r
  175.             startActivity(intent);/ a9 ?) ]7 S9 m$ W) J: X  y0 `% Y
  176.         }
    4 }1 O5 ^' K' ~3 G+ Q% K  z% U
  177.     }
    ( z* K- G6 P# j" S

  178.   _* W9 |' a; a7 e/ Y0 A" S/ |' H
  179.     @SuppressWarnings("deprecation")2 X8 h) J5 [( {9 \8 V" W
  180.     private void createTextColor() {
    # E6 Z0 T0 F0 Z8 U! B
  181.         Drawable background = new BitmapDrawable();
    ) A2 {; |8 C/ L  C8 l9 u
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));
    " M  Q; x6 Z9 k. O* L5 |
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));
    # f7 B8 K3 E( ?/ X% J" v
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));
    # P- |  d4 ]9 o
  185.         mTopMenuOne.setBackgroundDrawable(background);
    9 o7 x- F1 u6 z& |% E6 D
  186.         mTopMenuTwo.setBackgroundDrawable(background);
    6 x7 D2 L. C, s7 B& o! W8 d* P
  187.         mTopMenuThree.setBackgroundDrawable(background);5 y. x' Z; _& X' A( k1 R3 b# S
  188.         HomeNoValue.setVisibility(View.GONE);$ Y" {& _  P) @6 s. K
  189.     }- E8 `, o% T% C' c' j

  190. / I/ o3 y" R. {2 _8 G; d
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {' O6 U$ \7 z# D; v- e: x; C
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;+ D+ E+ d1 L: h0 {
  193.     }; F) n2 H! I- H7 I
  194. # |7 N& ]' i0 \
  195.     public interface HotFragmentCallBack {: H/ p- S  V4 E* t% N$ E" m8 h, y
  196.         public void callback(int flag);
    5 U- H9 R0 n& v$ U
  197.     }  ]8 x6 t& e, y- t/ |9 @( B

  198. ' O. ]) c! z$ f( V7 L, G8 e3 t* g7 _
  199.     Handler hand = new Handler() {8 ]9 _# n0 j' V7 B' X9 x
  200.         public void handleMessage(android.os.Message msg) {
    7 ^9 t' \5 N; F  i7 e
  201.             super.handleMessage(msg);
    / ?3 g" ]6 S- Z( E2 j/ M7 }
  202.             if (msg.what == 404) {, P- f2 C' u5 m+ R$ Q
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();
    3 r' K4 u  j% m2 z9 \3 N, B
  204.                 listBottemFlag = true;! S5 u$ Q( I1 @
  205.             } else if (msg.what == 100) {! D4 x: }2 @2 J* M
  206.                 Toast.makeText(ctx, "传输失败", 1).show();
    . F. p# r: n' F+ u1 I4 Y
  207.                 listBottemFlag = true;
    1 I( y# t! W( U1 P& J0 W
  208.             } else if (msg.what == 200) {( f! o6 V* b7 O) T. w
  209.                 String result = (String) msg.obj;& a2 H- J, c  ?: A/ T; X/ a
  210.                 if (result != null) {- s% v) {; P0 V! R) q
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);
    ; c5 }* J3 V, ~* d9 E( u+ D- f6 s! X
  212.                     if (newList != null) {
    + K  \  m1 j) v9 r
  213.                         if (newList.size() == 5) {; K; j9 Z, ]6 W4 `( O7 u& m9 T
  214.                             ListBottem.setVisibility(View.VISIBLE);
    % p- q4 Z7 ?1 I0 ~1 f- u# V
  215.                             mStart += 5;4 Z$ I$ H: J3 {2 [$ `
  216.                             mEnd += 5;3 k9 M' k: Z1 @; i+ i! s/ ~8 n
  217.                         } else if (newList.size() == 0) {$ x- D' F9 \9 @8 l( W# k0 d
  218.                             if (list.size() == 0)0 T7 S5 S: A8 w, b2 C. q! A/ {0 N
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);! F' K. Z0 C) Y* y. `8 l
  220.                             ListBottem.setVisibility(View.GONE);
    & k5 C$ y( U: A
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();9 P1 g/ Q0 V; G2 R6 g7 m
  222.                         } else {
    0 ?* o! A* D% C  V
  223.                             ListBottem.setVisibility(View.GONE);
    0 [& f5 c" A' l* f1 ]9 u& p2 m
  224.                         }% e8 ^' l, C$ L8 N( ^; j
  225.                         if (!loadflag) {( P/ `! Y8 Y! U& m9 L) ^
  226.                             list.removeAll(list);
    2 `. Q( ]8 ?0 q* a' W; Z7 F, y
  227.                         }
    3 }7 w) a! ]3 s6 t% R
  228.                         for (AshamedInfo info : newList) {! o& T3 D8 L* S0 B! |7 `3 F* s5 X
  229.                             list.add(info);4 w6 `2 E4 |- q! i
  230.                         }4 [7 Q8 v8 B! u- Q8 r
  231.                         listBottemFlag = true;
    : a) c" \; U2 j" j* U* ^6 {9 `
  232.                     } else {! \7 o+ M8 ?: i$ [" X$ s
  233.                         if (list.size() == 0)# m. C' `7 E4 i  b8 T2 A# T
  234.                             HomeNoValue.setVisibility(View.VISIBLE);
    8 c8 Y$ g: a* G' b3 `% Y
  235.                     }
    * j: H1 r  I' c0 U- T; S
  236.                 }
    ; T0 t( }) Z& ~: I, H+ J
  237.                 mLinearLayout.setVisibility(View.VISIBLE);' X; I% H9 l! J6 w
  238.                 load_progressBar.setVisibility(View.GONE);
    8 E6 L, S  N  f; {1 g
  239.                 myListView.onRefreshComplete();4 \4 z4 }- a/ C: a$ I8 p! `
  240.                 mAdapter.notifyDataSetChanged();6 ^3 b/ h2 X* X, B
  241.                 loadflag = true;
      t( j8 V% K: p  k3 [6 c" Z
  242.             }* P/ T3 k* H/ P+ Z+ A
  243.         };
    ' y" Y6 V* `" w. M& ^# j/ c
  244.     };* b8 f- @: k4 t# g# q

  245. 5 c3 @+ a: Q0 Q9 W; O
  246. }
    . c$ f6 h- c9 e/ y
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码

  ?, r: A* Q" A2 d5 E
$ K4 n; @8 F- _% t9 b源码下载:
; v% W) r( v$ E# d6 L
游客,如果您要查看本帖隐藏内容请回复

% e; p& R' d2 _- D5 e0 D/ V, |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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