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

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

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png 1 H1 B; ^( M% H5 W6 V: @
侧边栏[1].png
" S" j. o7 C) O# W3 q  H 登录[1].png + j! l9 N& ~. E+ n: `0 l7 k
个人中心[1].png % ?* ], ^5 U5 m0 ?& }
源码片段:+ J* v# X% J% Y6 O2 H6 M- x
3 C4 z( T- F3 `4 }- u
  1. /**
    9 Q! M& f/ {2 I. @5 n
  2. * 热门的fragment
    6 r, k) G' R+ x/ ~7 h6 }3 f1 |& @/ x
  3. * */6 T4 N- F# f/ }' d1 j. `& Z4 |
  4. public class HotFragment extends Fragment implements OnClickListener {
    / `/ o3 C' y, M- v, U( {

  5. / u: P, Q- l) E0 P  X) k4 X
  6.     private String hotUrl = Model.GANHUO;
    8 S7 t1 L, j6 t& j
  7.     private int topMeunFlag = 1;0 D2 m& O% v1 U2 t) v3 \
  8.     private View view;' d: ?$ `3 S9 @' E- A' e+ l
  9.     private ImageView mTopImg;
      A) V6 Z$ p. h; h
  10.     private ImageView mSendAshamed;
    . U# k1 o  ~. V% @2 n
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;  d9 b) W* Y" ?/ H, x2 L2 Z1 U
  12.     private MyListView myListView;
    7 w' T  I+ z8 T+ p) ~$ a
  13.     private LinearLayout mLinearLayout, load_progressBar;# W- A$ q1 J0 W/ P
  14.     private TextView HomeNoValue;
    9 E1 d5 @3 x* ]
  15.     private HotFragmentCallBack mHotFragmentCallBack;
    ' b0 A! H' ]) e% b9 G
  16.     private MyJson myJson = new MyJson();
    + i% B- C2 r0 E  h: s+ s
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();* T, w" o8 V3 t0 [+ f! P: u9 ~# L
  18.     private MyListAdapter mAdapter = null;# k2 l) Y9 a6 }5 z$ X
  19.     private Button ListBottem = null;
    # o2 H/ h/ D/ q/ Z! ?# G5 ^7 d
  20.     private int mStart = 0;, o: ?% n: M+ S( d0 M1 K
  21.     private int mEnd = 5;
    5 H4 a( _& H& T6 C6 j% J* Y! G: g
  22.     private String url = null;0 G" N8 N& q% o8 B: i# H  c
  23.     private boolean flag = true;, T9 _& b$ E- F
  24.     private boolean loadflag = false;
    - z! n8 D' ]2 ~) m9 G% @) D
  25.     private boolean listBottemFlag = true;: G* j. k: o! r6 G- w( `6 ]
  26.     private Context ctx;
    ' l. M. Q; P% ]! H$ o& ~1 m
  27. ! ~$ j' y2 J2 j& P  s5 t" ?
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    9 i  t) e7 H. y1 I2 L
  29.             Bundle savedInstanceState) {# W9 B) R& {9 d6 c) K  {
  30.         view = inflater.inflate(R.layout.frame_home, null);; \3 L+ w. n/ P3 q- S
  31.         ctx = view.getContext();6 B; I! Y. \  e! R9 ]' l
  32.         myListView = new MyListView(ctx);
    : T+ }9 b# J# W  q8 g. h9 @- M' |" \
  33.         initView();
    9 ?/ K. A# I# A! A$ u' ~7 x' L
  34.         return view;# b5 n: x6 @" F
  35.     }- n% X' |, J1 s: h( \5 g

  36. 9 w' s* i( z: Q. x" V1 S
  37.     private void initView() {2 o( U' q5 n8 ~
  38.         load_progressBar = (LinearLayout) view& f/ u4 R* U1 W- c
  39.                 .findViewById(R.id.load_progressBar);
    2 e7 a9 j% N! F; k! M2 S" ]
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);
    3 P; P# k" [. y- ~! m
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(4 [% s, O9 s2 g. D- z0 R. Y
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,
    ( o5 u# y4 V' x0 |6 C4 \  w
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));7 Q) ~& r3 u' b7 H1 h
  44.         myListView.setDivider(null);
    / x0 m* @$ ]( W5 W! C
  45.         mLinearLayout.addView(myListView);; Y( V+ @% V3 d5 E5 c* I2 Y
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);2 Y/ D& A0 S5 Q2 r
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);0 @: t! z$ n6 s
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);
    7 k, x) ~  |, k" h3 t* I
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);
    4 C2 }  r6 v  Z
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);" a9 n% o4 }0 C
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);
    ! H( M9 s5 j" Y0 f9 x
  52.         mTopImg.setOnClickListener(this);$ E1 C% y9 S$ @- p; j1 w+ j
  53.         mSendAshamed.setOnClickListener(this);% E/ E& H$ w( _" l/ H; K. N6 ^( ?+ ?
  54.         mTopMenuOne.setOnClickListener(this);
    7 ]& J+ n2 H- T8 J# z( M) l5 M
  55.         mTopMenuTwo.setOnClickListener(this);; i+ n0 D3 l5 Z. A6 ^; j8 Y
  56.         mTopMenuThree.setOnClickListener(this);
    3 u# H/ T  z& k6 Y+ @8 z/ y
  57.         createTextColor();
    . P7 i  G) ~4 N+ v; L" d
  58.         switch (topMeunFlag) {
    & X0 g! Q5 H1 z$ B9 \9 n
  59.         case 1:
    3 Q+ F0 a& r+ n, }# R3 W5 e
  60.             mTopMenuOne.setTextColor(Color.WHITE);
    # w0 o6 v/ ]: v5 `. E
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);3 P( {. k- j$ v8 V9 T5 Y
  62.             break;
    $ R& f1 E8 Z2 x) x# Q
  63.         case 2:
    - [% T; q; e8 L7 D& O& |
  64.             mTopMenuTwo.setTextColor(Color.WHITE);! |8 y4 N0 z0 {0 E8 @% m1 A0 `( W
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);( m) }. w% q& z# X9 c  J
  66.             break;
      X3 K; z" _  ]1 C8 }$ V8 g6 q. G4 s, r& n
  67.         case 3:( q' Z4 d1 F! e- E' ?3 x
  68.             mTopMenuThree.setTextColor(Color.WHITE);
    8 e# |1 M& o* n" c9 b8 M+ r6 Y
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    * z$ T5 |1 C; J1 s2 H
  70.             break;  ?, W+ T: f  X( D
  71.         }
    6 K7 f. e$ x0 k& g. ^
  72.         mAdapter = new MyListAdapter(ctx, list);6 s3 Z# y+ {0 b/ l) W
  73.         ListBottem = new Button(ctx);8 B, Y3 ?# ?' d
  74.         ListBottem.setText("点击加载更多");8 x/ j# o" I% |; s' T& I
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {& F/ Z  P- q! h* g8 h4 ~
  76.             @Override
    , B& n6 O  l5 q+ m' M3 o
  77.             public void onClick(View v) {
    . _! p5 c% ^4 J% @; U4 y# F
  78.                 if (flag && listBottemFlag) {
    ! M% v3 B( g8 r6 i4 o
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    1 X& E$ b  {6 m: _; m: j1 e4 u2 B
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    5 K: i+ Z7 y) C/ ]  E3 O+ R4 ]5 B6 S
  81.                     listBottemFlag = false;$ H. {( p7 [# @1 o" w: H) f; Z( w
  82.                 } else if (!listBottemFlag)' _2 b) v3 T$ |( s6 A2 U6 ^+ d
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();) X$ R5 ]: ~  m4 T6 A7 j
  84.             }
    ' C" J9 ~0 ^$ B5 e/ Q" @5 y9 Z
  85.         });4 w% c; Z) e$ o' h" I4 m4 ?: L
  86.         myListView.addFooterView(ListBottem, null, false);
    - U7 T5 |: B5 q5 f
  87.         ListBottem.setVisibility(View.GONE);) X, t( ?" R- D& W0 g9 ^
  88.         myListView.setAdapter(mAdapter);$ i, t0 l! |4 |$ |2 u5 V3 X" A
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());
    - L' k* q* _' ?0 X, v* n5 p
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;2 v* X5 H" y% h' G/ G" o* j$ d) P
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));0 B8 G: w/ ?% ?& F+ T& n
  92.         myListView.setonRefreshListener(new OnRefreshListener() {
    # k" F" u. g) ?& a2 \: {

  93. " l# B4 E# G8 D- ?3 h  _. g
  94.             @Override
    ! a$ a# ]$ x. r3 [: V8 A
  95.             public void onRefresh() {1 c8 i; @; Q4 |* ?; l# A

  96. 6 p0 V6 g, s2 u2 }( k
  97.                 if (loadflag == true) {
    2 }7 R. `6 Q9 @! s3 l8 ~
  98.                     mStart = 0;: `) j  T/ Y$ W
  99.                     mEnd = 5;9 t; ^$ v( O+ R: s  s1 V; S
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;; a$ [% S! P" m( t# @
  101.                     ListBottem.setVisibility(View.GONE);
    * H1 d% L. P: X  a. G+ D" Z" n
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    0 n- j; K4 p0 s
  103.                     loadflag = false;
    3 V. I0 w, V' c) H! s( x
  104.                 } else {) J* t  Y5 t( A
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();" N" b; R. U8 g' I0 ^1 T
  106.                 }
    ; P. z/ K1 D- B2 o

  107. 7 h2 V4 M; R: T1 i/ J3 n
  108.             }+ u" v5 W% I: ~+ R% b! h
  109.         });6 V- B  y% d- O
  110.     }
    $ I8 t* |, H' q( D9 d2 j( j
  111. 9 o( I% V3 O0 \7 h% C
  112.     @Override
    - z9 q: q( a) q
  113.     public void onClick(View arg0) {
      |' Y$ Y- e$ }& Y
  114.         int mID = arg0.getId();2 o3 I3 G4 _% F. J0 M
  115.         switch (mID) {+ x( m  }4 g/ }9 C
  116.         case R.id.Menu:, F! _! U* l* I% d% e6 Z% q7 \
  117.             mHotFragmentCallBack.callback(R.id.Menu);# t$ k9 x. q, Y4 v; ?$ j
  118.             break;
    0 c6 }* T/ t8 Z! ^- q& q" d
  119.         case R.id.SendAshamed:: V( k, l8 c0 y3 T* i
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);
    ! I' Q! D, N! k0 J( x" V2 x" Y* ?
  121.             break;" I9 a5 t+ E) Q: e# u! U1 f
  122.         case R.id.TopMenuOne:
    : ?$ f2 n# `- ]6 S4 l! Y
  123.             createTextColor();0 x/ v+ [* t. W8 V, L6 g( e
  124.             mTopMenuOne.setTextColor(Color.WHITE);
    ( u1 s4 o, Y" u0 @  A1 s% v* o) g
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);$ p6 I/ \, y; c) G1 ^
  126.             if (topMeunFlag != 1) {( f4 S3 [: Y5 \  ~9 k3 B
  127.                 hotUrl = Model.GANHUO;
    6 E# o: _+ O* Y% G$ `4 K, P5 C9 d
  128.                 topMeunFlag = 1;" B) o+ k3 Y5 G* f" }. ^
  129.                 createListModel();" N; n' p7 I" {
  130.             }
      W6 m! A2 E1 y# L
  131.             break;
    ' B' k, D! h) @) Y% A- N- A
  132.         case R.id.TopMenuTwo:
    & D  s: s+ y9 H7 I1 K& F: j, N; K
  133.             createTextColor();
    7 k+ u; g2 h4 ^/ V9 ]' E/ k: s
  134.             mTopMenuTwo.setTextColor(Color.WHITE);
    3 |% r! ?! j: p& T9 ?0 X
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    3 W$ l8 m9 A- Q
  136.             if (topMeunFlag != 2) {" G9 o' j" c) L( R0 ]$ o& q( c
  137.                 hotUrl = Model.NENCAO;
    / D8 [( {6 F: W& ^
  138.                 topMeunFlag = 2;% k' y1 t5 q2 }
  139.                 createListModel();0 Q' x" h4 z4 L5 E+ i) }+ Z1 M6 y
  140.             }
    2 i$ f9 p# ?2 b7 I: V: l
  141.             break;
    0 N% T  o9 w4 J8 Y& u: N+ u( [: ^1 X0 @
  142.         case R.id.TopMenuThree:
    2 {9 V, h' N0 K) {
  143.             createTextColor();* K1 n% p& ]' Q
  144.             mTopMenuThree.setTextColor(Color.WHITE);! j  h. G, e' c& u; P" p
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);! X9 Y3 @5 S& h% r
  146.             if (topMeunFlag != 3) {
      z+ k1 c3 f% i& ?- C
  147.                 hotUrl = Model.WENZI;
    , b$ Y) j7 f/ V& C
  148.                 topMeunFlag = 3;
    # {/ K1 b0 S( s
  149.                 createListModel();1 V4 c. o7 L7 Y
  150.             }
    " k: @8 n, u$ j" t2 @
  151.             break;+ \  H; [0 {1 ?* {
  152.         default:
    ! H' k1 Q% M4 `& ~2 l
  153.             break;/ k% U3 L/ Z( O" F7 [) B
  154.         }
    2 F3 `  Q( m1 m: b) F5 _: S
  155.     }
    ; m; p; b) W% T2 s* {) r
  156. 4 N/ f: e; ~; q5 |
  157.     private void createListModel() {! ~" J8 j5 O0 h; Q7 `
  158.         ListBottem.setVisibility(View.GONE);* n% \/ y2 C- E1 y1 I
  159.         mLinearLayout.setVisibility(View.GONE);
    ( w' N9 i5 ?7 S: K
  160.         load_progressBar.setVisibility(View.VISIBLE);
    * E! c  @: C; Q0 ?
  161.         loadflag = false;( X( u/ [; d( E
  162.         mStart = 0;
    / f2 j; V! T7 K- B8 R
  163.         mEnd = 5;, I! f( [5 z, \" G
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;% p5 g: e0 I9 f' q$ Y
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));. o  V  a5 q0 [1 y
  166.     }! |- k5 }+ r* }# l; S5 A9 ^

  167. 9 R" [+ `2 A: ]
  168.     private class MainListOnItemClickListener implements OnItemClickListener {
    5 x8 K: |& x+ O- T
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,
    4 a0 U+ O. n0 H) k1 c. H5 y( m
  170.                 long arg3) {& h$ A4 i2 I- O) h9 Y2 D- s
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);2 l! A: D7 t5 q! i9 ~6 N( h0 Z
  172.             Bundle bund = new Bundle();
    & F7 z3 L1 ?: s1 _' \
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));4 a5 N. v3 h: d+ u6 U2 i/ E
  174.             intent.putExtra("value", bund);) x/ C& a+ s$ E8 k; F" \' ?
  175.             startActivity(intent);1 c5 T2 r- }/ u1 n' y6 k! m0 b! j
  176.         }
    ) t6 X! U$ _. i6 G( Q
  177.     }
    " A; H' I9 i, p$ c
  178. : \0 f5 ~4 \- {/ y/ W( X" U
  179.     @SuppressWarnings("deprecation")/ j2 s% S: R0 Z8 @6 K1 p9 p" T* ]
  180.     private void createTextColor() {) ~+ I+ W7 P9 C1 f; u# q0 g
  181.         Drawable background = new BitmapDrawable();" i- S, ~5 R9 p3 p& G2 i0 ^( X
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));# `5 U1 ?& v, u. U) S3 V9 r) j
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));0 Z* y3 L: c3 Z5 s9 S- _
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));
    / ]- I7 e' i* t
  185.         mTopMenuOne.setBackgroundDrawable(background);
    ) @/ g; J6 ?; U9 s6 S9 n
  186.         mTopMenuTwo.setBackgroundDrawable(background);
    ' r* n4 Z: n6 X6 ~, i! @5 L
  187.         mTopMenuThree.setBackgroundDrawable(background);( B5 S9 `: \( C0 l# a4 A
  188.         HomeNoValue.setVisibility(View.GONE);
    7 \' `0 M( H. O2 W  o, ~
  189.     }
    ' S+ c4 ]' x; q, _
  190. , C1 S) h' x+ R# `( P9 u7 R
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {
    4 I( d+ [9 R: d6 w+ }
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;5 s' @' `2 r6 z0 L& M; g
  193.     }+ a9 D- k5 E  d4 A: n

  194. 0 Q# ]( o  ?7 R" t8 a! {
  195.     public interface HotFragmentCallBack {
    ! ]/ r$ G+ \4 P6 h6 \" Z' b, o
  196.         public void callback(int flag);' m8 T2 W/ W8 r; o  }# e2 \) g+ b
  197.     }" Q# Q  @" c1 M3 Q

  198. / A0 ?. `& K* u" c1 h
  199.     Handler hand = new Handler() {
    * e# R, s! ~+ `5 q( G
  200.         public void handleMessage(android.os.Message msg) {
    0 u1 C( S! P: t& @4 k. v! _
  201.             super.handleMessage(msg);. b" x" U- H$ z
  202.             if (msg.what == 404) {# i8 S+ h; t9 B( a/ W0 A5 P: h
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();: n( T5 {+ k( }7 p" E6 \
  204.                 listBottemFlag = true;. d& k: ?9 P6 q
  205.             } else if (msg.what == 100) {
    3 G) P) M( X5 x1 o4 O
  206.                 Toast.makeText(ctx, "传输失败", 1).show();( r6 U8 [+ q" }* J9 m* m& k! E
  207.                 listBottemFlag = true;
    3 B# R# C! _& s) A- l  A2 n4 h
  208.             } else if (msg.what == 200) {* X+ L: O+ Q) O: \$ N4 S5 r
  209.                 String result = (String) msg.obj;
    * ]2 Y2 n& A+ i
  210.                 if (result != null) {
    , Z+ h' i$ N( d% @: ?3 d
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);: V( _* s; \; y
  212.                     if (newList != null) {* S0 C- m$ O% I* f" d
  213.                         if (newList.size() == 5) {# N. w. b# r" K' z+ |+ }0 M: ~$ x  S
  214.                             ListBottem.setVisibility(View.VISIBLE);  @9 j8 _6 o) g3 e, T: B" k! e9 x$ k
  215.                             mStart += 5;# a0 i, k  }0 x3 d. N3 J
  216.                             mEnd += 5;
    - D. K- M5 g( W
  217.                         } else if (newList.size() == 0) {
    * j/ p$ i( t! v6 t: K
  218.                             if (list.size() == 0)/ r* S- m! ~* H3 @6 E4 `
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);7 g# m( l$ _' n( `
  220.                             ListBottem.setVisibility(View.GONE);7 j8 P# B( D1 u5 r. O
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();) d1 W4 |3 a& \: P5 @7 t0 ^
  222.                         } else {
    5 u* T2 j8 i7 F: y
  223.                             ListBottem.setVisibility(View.GONE);" H! m  n0 j% M9 h8 n! Z* B) Q
  224.                         }9 I( J. k2 \! w& l
  225.                         if (!loadflag) {
    ; s3 I" q6 x- ]9 E* s2 a* Z! B
  226.                             list.removeAll(list);" j; y' w- x" [& A6 K
  227.                         }
    4 `0 H' o/ v# U# E  J+ f
  228.                         for (AshamedInfo info : newList) {9 o$ L- j  v2 D' v
  229.                             list.add(info);
    * \. ~% e7 M7 S, O- v9 s& l
  230.                         }( T& C% Q2 r% ~0 f4 g
  231.                         listBottemFlag = true;
    ) I. ]6 W7 A8 J* z4 _( E; S
  232.                     } else {
    7 t% B( r  Q& u6 @* h
  233.                         if (list.size() == 0). v9 P, k/ S! P; w! Y2 ^( B  z2 H9 }
  234.                             HomeNoValue.setVisibility(View.VISIBLE);
    " ~0 L' n2 U2 r& F" k
  235.                     }
    $ a' x* h: y* Y# H1 G
  236.                 }
    ) \# a4 _  L" ]: l8 i6 ~# f2 q3 {$ _
  237.                 mLinearLayout.setVisibility(View.VISIBLE);
    0 d+ s; Q( V  r7 x6 S; p' M
  238.                 load_progressBar.setVisibility(View.GONE);
    1 ^& y6 D0 M! m- N- o
  239.                 myListView.onRefreshComplete();  r5 b' V  \" r
  240.                 mAdapter.notifyDataSetChanged();
    4 Q( K4 k' ^& p# p5 ^0 D
  241.                 loadflag = true;
    0 X" H( j. b* t" u. p. j& u( r
  242.             }
    8 E7 q- S  S) o( s1 m
  243.         };' Y1 X, d1 N$ Z. y4 @. R, {
  244.     };
    4 f5 Q4 Y/ Z6 P: B1 M  D% v! P2 w

  245. * m  h( X% h; f, w. P
  246. }' b) a. Z8 v9 b" [1 v
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码

+ i0 S" w; ?  y$ Z0 n6 X# ]) f) V& a/ D9 P4 q
源码下载:5 C& H& A2 ^# I4 Y8 ^. r
游客,如果您要查看本帖隐藏内容请回复

" ~) X2 t: z- |3 H  r& Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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