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

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

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png
: ]/ `7 E: x: Z* A# u6 R& X+ Y 侧边栏[1].png 6 v6 m1 K7 ]( h3 a3 n
登录[1].png
- g. J( m6 l+ r9 g! a 个人中心[1].png
' h4 {" p$ G  ~- g, Q% O6 Z( E源码片段:
* F1 t7 ?2 v& h2 `$ q3 _. A% U% D5 j6 a4 E
  1. /**1 G" V4 Y% N) \: [( g- X
  2. * 热门的fragment
    ' N8 ^% \' E" b! F
  3. * */
    1 G6 B+ C" {( |  A3 `
  4. public class HotFragment extends Fragment implements OnClickListener {
    + t1 t2 L1 s& t  {/ q# E1 p# A9 n4 A

  5. % ^% Z4 S5 r/ a7 t0 x
  6.     private String hotUrl = Model.GANHUO;: f/ K- j7 C8 F& E6 t
  7.     private int topMeunFlag = 1;4 O' x: J% U/ j! h- t3 C/ \
  8.     private View view;* b% J; }; `5 y3 B: a; s
  9.     private ImageView mTopImg;
    5 L- t6 _% t& s$ s5 O  I# ]
  10.     private ImageView mSendAshamed;6 N1 o$ \& X) k8 `* M
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;
    : I8 {' Q0 _- d  M7 y: f
  12.     private MyListView myListView;" d7 j3 G' R5 M: `4 q
  13.     private LinearLayout mLinearLayout, load_progressBar;+ [; x3 m& E" o- ^
  14.     private TextView HomeNoValue;
    # r; V! `" O  ~' M" x4 ]
  15.     private HotFragmentCallBack mHotFragmentCallBack;  z7 {* l& z: U6 l
  16.     private MyJson myJson = new MyJson();
    5 F7 i2 N  I* v$ X; q/ g7 j
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();
    , u( F* f# o* v. j
  18.     private MyListAdapter mAdapter = null;, }7 e1 P. q9 e9 ?% u* P
  19.     private Button ListBottem = null;
    ; l4 }. i' f& k1 E4 i  Z8 j
  20.     private int mStart = 0;
    , ?6 t; o. D' P: V1 K" O1 T" Z8 B
  21.     private int mEnd = 5;. k, w% j% B* |6 d1 x0 Y5 l
  22.     private String url = null;( o% j- r% ^/ W6 z& k( F9 e) z: ^* F
  23.     private boolean flag = true;
    $ X5 Y) w9 c, X$ N) z
  24.     private boolean loadflag = false;/ l7 j9 D& n6 Z
  25.     private boolean listBottemFlag = true;* V- |" m7 G4 e7 [8 @
  26.     private Context ctx;
    / J- E1 s) l" r

  27. 7 \0 `% B* A" t$ U) ?; D
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    ! M8 U7 z3 |. L2 k+ |+ Z  W
  29.             Bundle savedInstanceState) {
    7 k* O4 f: k* G$ f
  30.         view = inflater.inflate(R.layout.frame_home, null);, I0 d4 {1 M1 p! X, s# q
  31.         ctx = view.getContext();0 x8 [) B# L$ N$ M- t" s! A
  32.         myListView = new MyListView(ctx);
    7 v) i2 w8 n6 p' P+ y7 x+ x
  33.         initView();7 [' i- q) _1 C+ J6 F
  34.         return view;- U% J' o* i. Y9 W0 C7 C
  35.     }
    & t: y8 M3 O/ K+ r( }* M

  36. 9 ?4 S. K' n' ], S. q
  37.     private void initView() {
      X; Z0 J. P) O2 V0 V
  38.         load_progressBar = (LinearLayout) view% ]* \: \+ f4 p# P# y
  39.                 .findViewById(R.id.load_progressBar);' f# l- C1 g0 N
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);2 O3 v+ r% S  z, {
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(, k/ \$ X3 C7 L# q
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,
    4 b+ m! X, Q* j
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));# [# H7 ~2 f- e: N1 t7 ?
  44.         myListView.setDivider(null);
    " f" r9 R0 p5 {5 N
  45.         mLinearLayout.addView(myListView);4 G/ u+ M, c% m
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);. D7 k- C- L6 y0 j0 w
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);" n( U3 B/ x9 {9 J" M9 U
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);
    1 a  ^/ P" A& r( @
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);
    , t8 M1 o' w, I
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);
    6 P7 V4 J  ]0 W! f: w5 U
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);  S% R& ^) n$ K( [9 |
  52.         mTopImg.setOnClickListener(this);
    & a0 z; l( W) H! O! `$ j: Z
  53.         mSendAshamed.setOnClickListener(this);
    2 i5 E  q6 t8 O- m& U( D; N
  54.         mTopMenuOne.setOnClickListener(this);
    ; x3 l8 j" T$ H& J# N
  55.         mTopMenuTwo.setOnClickListener(this);
    % \  }% h5 }. h9 d# S! f+ H: h
  56.         mTopMenuThree.setOnClickListener(this);. S2 d! `, i7 z$ z  ~$ `
  57.         createTextColor();; |: U+ B" q/ Z' j# C0 v. P. F
  58.         switch (topMeunFlag) {
    : U4 K: k# s9 c# y9 h( Z$ e3 @
  59.         case 1:$ v9 \, ?) }. t6 f  w
  60.             mTopMenuOne.setTextColor(Color.WHITE);
    1 _# q* ]' o7 }: }6 Q/ ~" }
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    3 z6 j/ J" S- M) [2 }: D, C; X
  62.             break;$ C# r8 r, ^9 w8 R' s; i
  63.         case 2:/ {" P$ l/ C7 d+ j4 A; h
  64.             mTopMenuTwo.setTextColor(Color.WHITE);
    * t  E7 M/ R* ^* J- Z5 k& J: A
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    ! r$ k6 c, G6 X. ?! U; Y$ P* e
  66.             break;
    / z; ?, X( Q7 G0 z& R3 h' P
  67.         case 3:
    7 S2 _% M/ f. ?3 D, V- s
  68.             mTopMenuThree.setTextColor(Color.WHITE);$ B) j& T4 U  y0 d, b5 _
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    3 I# M- w/ ~8 S5 I% ^1 C( ?
  70.             break;
    2 x8 L6 |* y% j* s
  71.         }& z, p. H, T( {$ z1 X0 u6 H# Q: n
  72.         mAdapter = new MyListAdapter(ctx, list);
    ( E0 q4 L+ P" A
  73.         ListBottem = new Button(ctx);8 ?8 Y) h% R0 `# D' {
  74.         ListBottem.setText("点击加载更多");
    : G) a3 c: q( w
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {
    2 M, ~8 i! E7 j, |6 B
  76.             @Override4 W% @! q* O/ p) h
  77.             public void onClick(View v) {
    8 w* L. g" k& B
  78.                 if (flag && listBottemFlag) {
    . {) G& k* s6 P8 y4 w$ L
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    4 N* J  g/ U8 Q
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    + t" G: ?/ a! w% A+ P. s) q3 C
  81.                     listBottemFlag = false;
    : v& J" s% w' I
  82.                 } else if (!listBottemFlag)
    - I6 F6 Q1 i2 B6 Q8 x
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();
    8 Z% l1 C7 i' ^- V
  84.             }
    + c$ B# E# ~0 m- z) a' o
  85.         });0 |$ P  N" Z  }
  86.         myListView.addFooterView(ListBottem, null, false);* f, O; c. `& c# @& p1 [5 G
  87.         ListBottem.setVisibility(View.GONE);
    2 z2 Y& i- L# `! Z9 ?* H
  88.         myListView.setAdapter(mAdapter);
    . C8 T" N! |, l, S
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());
    " O! D' U" v* j
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;: p+ @4 \' h! V" R
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));; r' j" k: \& {- T9 T- y
  92.         myListView.setonRefreshListener(new OnRefreshListener() {
    5 d$ M4 Z' ~/ i0 J

  93. # Q4 s! `: e* x; z( I3 `
  94.             @Override- e: W1 b, G3 Y+ t/ T* T& }4 `' u
  95.             public void onRefresh() {. D$ }2 v* x8 W$ R- k
  96. - j8 Y+ ^5 ^3 B
  97.                 if (loadflag == true) {
    % D% p6 M4 ?; W1 H1 H
  98.                     mStart = 0;
    4 V7 K$ t5 s2 k9 O
  99.                     mEnd = 5;- F  J5 f( d. O' ]- C, i
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    & u  N- H. ]0 ^* i* o3 i
  101.                     ListBottem.setVisibility(View.GONE);3 n4 q' c! {; Q" v
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    ) j/ Y! b# f$ W3 ^+ f4 \
  103.                     loadflag = false;6 s1 S9 v! O6 d! s( t; f. l
  104.                 } else {$ ?/ w$ B3 {9 l; G8 J' S
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();
    7 q) v# E/ H8 b
  106.                 }
    - |& K4 f1 r3 X- K
  107. 3 C9 m  w! g) h6 ^1 z: k7 U8 v
  108.             }
    : b7 ^  I4 S  r. K0 ?3 p/ k
  109.         });
    0 Q( M& C& S% n9 d; z2 b5 r1 {
  110.     }( K9 U4 C# a' s
  111. 2 _) g0 C% y3 \7 }4 n$ Q0 w
  112.     @Override
    ' P& q8 W  `5 X  t' a
  113.     public void onClick(View arg0) {
    5 s, c2 s3 [$ f+ \2 O
  114.         int mID = arg0.getId();! X3 r" Q( `4 J% D6 r
  115.         switch (mID) {% |1 T9 \% E3 g% O: q: e
  116.         case R.id.Menu:1 w" Z0 f+ |8 c/ S. k
  117.             mHotFragmentCallBack.callback(R.id.Menu);
    4 f' A2 |+ E6 i3 D  _3 v
  118.             break;
    & |0 Q4 Z, d# M
  119.         case R.id.SendAshamed:0 h) @, U4 Z2 v  P4 _8 u
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);5 y8 u9 L* t1 F# t' m+ z
  121.             break;
    " {% r6 r4 D: o# {6 {
  122.         case R.id.TopMenuOne:
    ' i+ F- A2 d' m1 {
  123.             createTextColor();
    ; T8 \$ A% m& ~- m( o, T
  124.             mTopMenuOne.setTextColor(Color.WHITE);
    " N) g: x# S; p
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    " e7 I5 w5 O2 d# N7 d% W) |
  126.             if (topMeunFlag != 1) {( x& l: ?3 V/ `5 n4 D
  127.                 hotUrl = Model.GANHUO;) W$ Q+ T5 B$ f  U4 j! n; d
  128.                 topMeunFlag = 1;
    6 l9 c6 @7 Y; G0 H8 p
  129.                 createListModel();( ]5 Q2 Z2 w* a7 v6 P% E
  130.             }
    - c0 D" \, }3 L0 P1 d7 Y9 b
  131.             break;% S8 S* x: z. }% }  T  u6 R
  132.         case R.id.TopMenuTwo:
      W9 V& u6 [' K+ `
  133.             createTextColor();
    # \+ M1 b' R: z. Z4 r6 g
  134.             mTopMenuTwo.setTextColor(Color.WHITE);1 C( w1 E2 d! h3 ]# n- [
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);& F5 C; `* Q( a- ?  v1 }
  136.             if (topMeunFlag != 2) {, Y. F# X! O/ O" j0 P& L+ p, S
  137.                 hotUrl = Model.NENCAO;
    ( m) O0 A( n6 t+ i+ K
  138.                 topMeunFlag = 2;
    ) n: I6 P  I( P( l; c
  139.                 createListModel();
    # P' B  q9 s: d7 c6 z, S+ [/ H
  140.             }
    . Q! D# Q4 M6 Z7 w7 g( Z
  141.             break;  q6 w; B; j( \( f: I
  142.         case R.id.TopMenuThree:, i9 n. n# I1 t& w% _% ^/ H# e
  143.             createTextColor();' ~5 d, |# S% s
  144.             mTopMenuThree.setTextColor(Color.WHITE);5 B. y6 M2 [$ o
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);: y/ m0 R- P! c  Y- t
  146.             if (topMeunFlag != 3) {2 P5 e  K1 U, Q+ v7 x; v
  147.                 hotUrl = Model.WENZI;
    # `% n) v" [# f% k
  148.                 topMeunFlag = 3;
    3 c1 V; H! c0 V
  149.                 createListModel();% m: P& f$ b1 ~% M# S, X# I
  150.             }. V% c. p  A% s& k/ t
  151.             break;
    $ Z' i' {- z% i; ^- k, @& {: y
  152.         default:( j/ E8 L* S5 z
  153.             break;. \( ~+ S6 l- `0 o7 _6 @# g
  154.         }9 J8 k+ n; Q# R' f( v7 p" v
  155.     }0 b& b, ]' }, C! C
  156. - U. m  k5 k4 ]3 ~2 U; L, {
  157.     private void createListModel() {
      r2 N( z' ?# B0 c6 {
  158.         ListBottem.setVisibility(View.GONE);
    4 P. {; @. b+ J4 L
  159.         mLinearLayout.setVisibility(View.GONE);
    " M) W, Z0 G9 b* {
  160.         load_progressBar.setVisibility(View.VISIBLE);& X: R& D/ C& W# R1 \- E& }
  161.         loadflag = false;2 y9 t7 t6 ?* t- o  R. _' Y
  162.         mStart = 0;3 u! w6 C. r/ u+ ]# Z
  163.         mEnd = 5;4 u' p" G6 k! X1 Q4 w2 ~6 U3 d; {
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    , B1 K1 j: U9 y5 G9 V0 [
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));* Y) _7 d; H( T. }/ {$ Q. ]
  166.     }- g3 m# W! u9 ?1 k. ]

  167. 0 R' A; P' s- |- h: w0 K- b/ y# v
  168.     private class MainListOnItemClickListener implements OnItemClickListener {
    0 n- j/ ~* ^4 c8 A& ~
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,8 s7 R' C- h7 R7 C4 s; t9 B: C0 G
  170.                 long arg3) {" ~% x/ A( w% O9 C, }5 z" c4 p& i
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);
    . g2 Z8 i" Q$ ~) Z1 s
  172.             Bundle bund = new Bundle();1 R$ x% W! w0 f3 U5 w/ R8 t
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));
    ; `* A  Y9 x' V  M& P
  174.             intent.putExtra("value", bund);
    : ]" M! ^7 {* Q( T  q
  175.             startActivity(intent);
    $ n6 v0 q6 H9 @- p& t. h1 g
  176.         }! b' D% x5 u7 N. [; {9 X! N
  177.     }
    5 U6 \& {3 }+ ?& S+ V& |

  178. 4 Q1 O4 p1 ~' J
  179.     @SuppressWarnings("deprecation")
    5 U! h" u; U& S" z5 M
  180.     private void createTextColor() {
    6 X$ T8 b( x$ E. [+ S; Q7 f3 T1 l
  181.         Drawable background = new BitmapDrawable();
    , P% o4 A+ }+ s
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));' p& r7 G2 _- M3 u6 y
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));4 a; n3 ~) b+ ]' g, W
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));5 L/ _" b) s" X2 }
  185.         mTopMenuOne.setBackgroundDrawable(background);
    9 [3 e  W- B( I
  186.         mTopMenuTwo.setBackgroundDrawable(background);6 y: S" w/ P7 ]/ H; x% F" h
  187.         mTopMenuThree.setBackgroundDrawable(background);) X8 k/ m" o  O+ t
  188.         HomeNoValue.setVisibility(View.GONE);
    ) n0 L. o, l. V! B2 Z0 t
  189.     }
    & r- T; ~$ `* U. G7 e- Y
  190. + }! n' g" V1 x$ H
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {
    8 T% K' S6 D* q2 n" u) `* b7 ?4 U
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;
    5 g% Y6 {2 f9 I  N5 M9 a
  193.     }
    $ @. w7 F2 B  e. ?. M0 n" S, P, Y1 r

  194. # S! r0 C6 _+ M
  195.     public interface HotFragmentCallBack {, @! d* @$ c7 `2 v- J0 u
  196.         public void callback(int flag);
    6 z! q( Y% }" j
  197.     }( R8 \4 H9 n( _: o# |0 p

  198. 1 T2 o; f/ Z; C4 H7 z; A+ R+ q
  199.     Handler hand = new Handler() {+ Q& p# J8 V4 v# M" [  b
  200.         public void handleMessage(android.os.Message msg) {
    # A; t* T# C3 D
  201.             super.handleMessage(msg);
    8 f8 y( f  w5 w' P
  202.             if (msg.what == 404) {/ C  I0 r% o  H, ?: S
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();
    : [/ `: }6 Y, L4 d7 }
  204.                 listBottemFlag = true;
    ! ^1 e5 ^4 Z( _: i! J* w' P
  205.             } else if (msg.what == 100) {) A) @/ a! b8 U$ O8 U
  206.                 Toast.makeText(ctx, "传输失败", 1).show();
    . n+ q. ]) R6 {7 [0 ^% U& r
  207.                 listBottemFlag = true;7 M9 y0 E% C0 m$ O* l0 l
  208.             } else if (msg.what == 200) {
    % w  T8 ]# M2 ?5 m6 B! J7 p, t5 s
  209.                 String result = (String) msg.obj;
    ) n& {$ z# S* Q6 m& k4 F" }6 O
  210.                 if (result != null) {
    0 a1 P( F# n. k, u) b) ~0 ?
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);
    $ c) _9 A8 h* n, U# s) f, ^
  212.                     if (newList != null) {
    5 w5 y3 S6 l9 s1 i9 g
  213.                         if (newList.size() == 5) {
    ' v8 v$ s6 U& b1 D- ~
  214.                             ListBottem.setVisibility(View.VISIBLE);
    - U- v$ Q6 g# X) G- t/ o; S' K) R( l3 l& ]
  215.                             mStart += 5;8 P/ \! r8 c2 A- }
  216.                             mEnd += 5;
    9 Q( U& L! z& n8 q$ `/ V9 O5 P
  217.                         } else if (newList.size() == 0) {
      M9 K) Y/ F! \2 v1 j( U, J# @- J
  218.                             if (list.size() == 0)
    3 f1 ]( a/ C  T2 Z' F# V7 R
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);) ]% `7 Q" e( C1 L
  220.                             ListBottem.setVisibility(View.GONE);: }  q+ l7 \# ^4 n8 g7 J& P, L
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();
    1 ]* x% C1 b- B! p
  222.                         } else {: ]& E' |5 [0 G- y" P& s* Z
  223.                             ListBottem.setVisibility(View.GONE);& D9 A; L  F6 @' e! }% G
  224.                         }: s% b1 W  l9 ^) Q0 O% Z
  225.                         if (!loadflag) {0 E/ Z6 n0 M# L8 ]  d& `
  226.                             list.removeAll(list);8 c) P5 ^5 n: H! b, Q# ]5 R
  227.                         }/ V7 D3 a& k9 O. ]
  228.                         for (AshamedInfo info : newList) {' Y% g, a9 ], _9 v# b* b
  229.                             list.add(info);& u% _  b8 U+ @5 j, L  q& k% _" n6 y
  230.                         }
    5 m0 b( b" q" t( ?2 t9 I
  231.                         listBottemFlag = true;
    1 k* g7 j! S) y9 p) p  B. ^3 Q1 l
  232.                     } else {3 e- E+ ~) P% C2 H) W
  233.                         if (list.size() == 0)0 I% _6 O4 t6 V8 q
  234.                             HomeNoValue.setVisibility(View.VISIBLE);& `/ f, \2 _( i' F! {) @! s& k
  235.                     }  B( M: E7 b* h
  236.                 }
    ) h% t7 I* |+ M1 i% g0 e) X: k
  237.                 mLinearLayout.setVisibility(View.VISIBLE);0 T) }/ C9 p3 C0 P$ S
  238.                 load_progressBar.setVisibility(View.GONE);
    - l  ]7 m5 u8 s8 a% X
  239.                 myListView.onRefreshComplete();8 h3 U2 \" g: _$ ?, u, c' q6 Z
  240.                 mAdapter.notifyDataSetChanged();7 {2 r3 @  z- ~; U) O/ }- C+ N+ e
  241.                 loadflag = true;5 d2 M. D1 d# s0 p' S; B
  242.             }
    # s# Z' v! o3 r. b: Z
  243.         };8 f7 {8 R+ f5 l! R
  244.     };% i! g1 x3 w( g0 P& ?+ d

  245. 3 D  u: a$ o$ B: w
  246. }* n' e4 S+ r. D7 q6 K
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码
1 y* M% b$ P) o3 Z/ k& z

5 i1 i0 R4 {) D9 W源码下载:
, J0 s6 Z; u$ h! B5 g: f% \
游客,如果您要查看本帖隐藏内容请回复

7 o9 _/ q) W' D+ o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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