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

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

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png
8 g, d6 Q! o# }& l! E: f; Y 侧边栏[1].png
+ o( S! o7 i" i( x 登录[1].png * t% g" K; W; X8 i0 w& s% ]: \
个人中心[1].png / }6 k' Z5 {. t; U. b. d& ~
源码片段:( b: t$ ]4 P- T: O3 e$ m  e
8 j- g* k" _8 L) P
  1. /**
    # ]; [: H1 ^9 v5 |$ {; [4 I* c
  2. * 热门的fragment- y) u4 ^9 L3 i* h. g' D! S, x
  3. * */& y: q/ d' c0 m4 k: E. U
  4. public class HotFragment extends Fragment implements OnClickListener {
    $ O7 k) P9 ]4 `* S! N
  5. 4 y) w6 x3 h  w5 C7 ?
  6.     private String hotUrl = Model.GANHUO;0 f' {& Y2 {, V
  7.     private int topMeunFlag = 1;* i+ h4 ?8 {& r% f
  8.     private View view;9 K9 ~' d% b8 X1 q# o  y# V4 W* q
  9.     private ImageView mTopImg;
    8 C. b! I! [& k* E
  10.     private ImageView mSendAshamed;
    3 E0 }: U2 n1 @- `2 _5 W: [" J& C
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;7 t# x: I1 `4 e( a% U
  12.     private MyListView myListView;
    ; f; i$ Q  E& A; m: K/ S
  13.     private LinearLayout mLinearLayout, load_progressBar;
    & U# u& X# {- t& f' N
  14.     private TextView HomeNoValue;
    5 i' s6 m/ p. R# p
  15.     private HotFragmentCallBack mHotFragmentCallBack;6 ?$ L. x  F& {7 g4 U
  16.     private MyJson myJson = new MyJson();$ Z, M" m5 a# `  x" l7 w" B
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();* p+ W; i( P0 M- x8 r
  18.     private MyListAdapter mAdapter = null;. Q. ?" i' P2 C& W7 r! Q# {
  19.     private Button ListBottem = null;2 K; q8 ^/ Q. U. P( C: H5 C$ Q! `
  20.     private int mStart = 0;! @: Z. [3 r2 ]5 `# s; P
  21.     private int mEnd = 5;# `6 x9 K/ F! r! A, I6 W1 Q: E1 p
  22.     private String url = null;8 V, c+ l+ y. C
  23.     private boolean flag = true;
    2 H; i; a, R" B  E# k2 O  s; u* r
  24.     private boolean loadflag = false;
    ! ?  p5 E& C0 d& H. s
  25.     private boolean listBottemFlag = true;
    % E( i9 r1 E( G  r8 t( i/ A$ g
  26.     private Context ctx;
      }2 l) v$ d1 C0 t  g
  27. 4 _8 d% s1 l/ d
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,- ]$ p7 b, N4 ]
  29.             Bundle savedInstanceState) {
    % y2 A1 B$ ^5 a9 m
  30.         view = inflater.inflate(R.layout.frame_home, null);
    4 g2 J/ w8 M  \4 g; {% N+ L
  31.         ctx = view.getContext();
    % H' s. f' n4 P8 b" z) Y
  32.         myListView = new MyListView(ctx);& ?& o6 L  N; U8 c9 R! x: d
  33.         initView();
    9 E' H# ~0 m* d4 J2 J
  34.         return view;/ L+ b0 T$ Q1 Q  c( \6 P
  35.     }
    0 d( ?4 O9 e* z- e: m5 l

  36. " T! p( H+ Z7 Y- E2 c% |
  37.     private void initView() {
    : u) H9 u3 \4 c
  38.         load_progressBar = (LinearLayout) view
    % v( Q) `! K  c- d9 K8 d6 d; h" x
  39.                 .findViewById(R.id.load_progressBar);! p$ e. ^- a; S( l. S. J4 X& {
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);) [, ~* X8 }& I4 W$ R
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(
    3 e3 N) ~' }, T" c' W- ?& u9 Q
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,
    - @# j; c, f/ i
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));5 n! ?) `( `' m, L
  44.         myListView.setDivider(null);
    ( E  [6 x' D# x! n
  45.         mLinearLayout.addView(myListView);8 Y5 b8 Q" b. H1 Y: q& N
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);
    & z+ H  J) K5 _
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);
    $ |( s6 j* D* E4 w) z$ E
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);8 W5 V. Z  n+ J6 Z+ H- h, @+ M8 m
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);
    # R& U9 I& W' i& d8 d
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);, ]$ V) a! r+ i; F% J( e
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);" u0 O# v6 _% v# n' \) R+ t1 _+ o
  52.         mTopImg.setOnClickListener(this);& ?3 s5 s( ~7 q7 H
  53.         mSendAshamed.setOnClickListener(this);' [  r+ t# E4 T$ f5 C( ]. j
  54.         mTopMenuOne.setOnClickListener(this);2 p6 K( i3 S4 s4 w
  55.         mTopMenuTwo.setOnClickListener(this);
    4 g4 o5 V' i) y; x9 w$ v  X; [) R, f
  56.         mTopMenuThree.setOnClickListener(this);1 f6 S9 ]1 E' g& g2 y& _* A
  57.         createTextColor();
    # M/ A% s" S2 N$ m! ]2 V
  58.         switch (topMeunFlag) {+ y6 h; i( N# k
  59.         case 1:
    7 V3 V5 N: c+ w2 |. ]
  60.             mTopMenuOne.setTextColor(Color.WHITE);
    ) }( V) T: P  ~& I7 b7 S3 n+ e
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    + k: f9 E5 r0 i! x2 a2 T* c& b( O
  62.             break;
      Z3 f% _( y7 y4 L( Y' a
  63.         case 2:0 I* z4 c5 Y4 Y+ m4 x% Q6 C
  64.             mTopMenuTwo.setTextColor(Color.WHITE);. d8 O* j/ B0 w& Y3 K: E- }( g3 x7 W
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);
    2 f5 J% Q# n4 b0 y8 _0 A; ~1 o% t
  66.             break;
    0 a5 K/ G  f8 h4 b3 [' N4 ?/ Z3 R1 E
  67.         case 3:
    2 N( G3 T. |4 Y# A* d
  68.             mTopMenuThree.setTextColor(Color.WHITE);
    $ ~8 k# ~7 y. }& R$ H/ X
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);: B- h/ W9 T2 C1 M6 s
  70.             break;) s& e& S; ?7 b& R3 G
  71.         }: X; V' m0 S; f
  72.         mAdapter = new MyListAdapter(ctx, list);
    2 s) p+ @) a3 c8 ?* `
  73.         ListBottem = new Button(ctx);' q" n# n0 P2 S' J+ j, [
  74.         ListBottem.setText("点击加载更多");
    3 p$ p3 |* v! ]! ?
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {
    $ u" ?- J% r# o* l# Y
  76.             @Override: X5 J9 F3 z7 K6 b7 s
  77.             public void onClick(View v) {
    - n( |4 i( q9 A3 T9 h
  78.                 if (flag && listBottemFlag) {
    5 }6 `1 g# Q/ F4 W1 g  {% {
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;% Z/ M# [& H% ~# t! G
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));8 }# [5 e4 B' n, [4 R7 ]
  81.                     listBottemFlag = false;
    / Q0 K$ ?  F. U6 P" a; Q& M
  82.                 } else if (!listBottemFlag)) h" P1 r$ m4 j$ u
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();4 O7 Z) D8 \5 c3 O
  84.             }; W6 U7 V2 b* _6 M
  85.         });
    $ E3 f2 z  X* k" W5 M; m
  86.         myListView.addFooterView(ListBottem, null, false);: c/ Y% K0 @4 _8 i6 L  V
  87.         ListBottem.setVisibility(View.GONE);
    " c; s5 G' U+ {" Y/ B  O* C7 p3 l
  88.         myListView.setAdapter(mAdapter);
    ! U8 a% g5 K9 X! C. l$ g1 {
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());
    + a, r! E1 H4 o7 y+ P3 D0 n
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;/ w; V9 r$ b" M+ t3 y- k
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    , c4 G# U# t6 `! r4 I) ^
  92.         myListView.setonRefreshListener(new OnRefreshListener() {
    . U' w/ l  f8 Y& H
  93. 1 q! l' b" S% T+ Y) D
  94.             @Override' {8 t7 y, X# V
  95.             public void onRefresh() {* O6 {/ E" h, d  a9 L, n
  96. 1 T* K: r0 K! q& f, I
  97.                 if (loadflag == true) {
    7 }" F2 q  ~  m% Z6 q1 @
  98.                     mStart = 0;* t" @* c3 f. E" o$ T# p" `
  99.                     mEnd = 5;/ M# d6 v6 F: }9 a, \
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;% m# X& F& _  l6 l& S( Q1 ^
  101.                     ListBottem.setVisibility(View.GONE);* ~2 p  t+ X, x! r& x* \9 h9 V
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    4 u7 w( _7 Q9 F' v
  103.                     loadflag = false;- u/ A7 S2 c; W
  104.                 } else {3 N4 {! u% D% Z/ H8 q- ^9 y6 \
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();
    % ]0 m- e0 Y! E5 [+ v+ u! X; t9 E
  106.                 }
    $ e$ k/ z0 c8 F
  107. " t; G3 @+ o% f. y1 t. N
  108.             }4 y' c# C5 N. M2 d' r2 n
  109.         });
    ) K  `' o' J0 n4 D
  110.     }
    6 }! ~# E. r) G! F* x3 H3 M( ^

  111. " C! l' V+ b- o$ I9 t" `
  112.     @Override; S) [7 Y; o# ?& h
  113.     public void onClick(View arg0) {
    ( c& I* E( J/ A' [1 Q# s; u$ _& x
  114.         int mID = arg0.getId();! M' D1 T$ i( y/ r6 c# N  N
  115.         switch (mID) {5 i, U) J9 p! O% V
  116.         case R.id.Menu:7 p! a: n& K) @4 _
  117.             mHotFragmentCallBack.callback(R.id.Menu);
    % F9 y5 {$ @" y
  118.             break;. J" _5 C/ ^* X! Z  l! T2 O
  119.         case R.id.SendAshamed:; L7 O8 K7 X, m7 G- b8 o
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);1 M* k" r! @- H7 G
  121.             break;
    3 v/ S1 S. Y4 _5 F7 y
  122.         case R.id.TopMenuOne:
    + U: h( b9 T0 ^
  123.             createTextColor();
    0 U; s; ]4 b( ]
  124.             mTopMenuOne.setTextColor(Color.WHITE);' L0 ?' f, x1 {- v) P: F, v" r
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    ) @% k3 R& U2 R/ }& t
  126.             if (topMeunFlag != 1) {
    ( {) p) E( H: c+ p" F0 w" E8 R& C" f
  127.                 hotUrl = Model.GANHUO;
      K  j1 a' F1 B3 v% O* V
  128.                 topMeunFlag = 1;1 m: o( @& i( Q
  129.                 createListModel();5 j8 o. x- l% m: O$ f
  130.             }
    9 o$ \( l8 O$ U4 H
  131.             break;# X4 H" R  h0 B5 V5 e7 Z) h$ I
  132.         case R.id.TopMenuTwo:
    - x/ v4 M/ _, H+ W4 l
  133.             createTextColor();
    # V! s5 b: m. B. u' H
  134.             mTopMenuTwo.setTextColor(Color.WHITE);
    6 x8 c! h. L7 H" ?
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);5 R. V. G0 D) E8 \0 J: G( ~" R7 f( d
  136.             if (topMeunFlag != 2) {- h! G7 N5 ~' B: B
  137.                 hotUrl = Model.NENCAO;
    1 u& Q+ G8 U! ~* A
  138.                 topMeunFlag = 2;% M7 d  a3 B6 a6 _' Q  a) ^
  139.                 createListModel();
    & q5 V' k9 O/ b
  140.             }/ U4 x2 E5 _' D- `% M' m6 R
  141.             break;
    2 S% r7 ^' `  c6 L! R* }
  142.         case R.id.TopMenuThree:- f4 |2 ?8 @1 G7 k) X) |" Z) n
  143.             createTextColor();) s6 R0 Q1 x% I) o$ p) X5 S3 K1 Y
  144.             mTopMenuThree.setTextColor(Color.WHITE);0 T. }- E$ A7 W" ?- m) p
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    , {8 M, d3 m9 g" C
  146.             if (topMeunFlag != 3) {  [4 u, s' y/ h& X9 N8 f6 Q0 F7 h
  147.                 hotUrl = Model.WENZI;: M" P9 Z# y: X! P8 D0 |* R4 m1 {
  148.                 topMeunFlag = 3;4 p) m6 X3 ]& f% X; i+ e( Q! a- A8 i
  149.                 createListModel();4 R* n9 h0 G: }- T7 y* x1 s7 N# K
  150.             }
    , c" z( {+ c8 f( V1 t
  151.             break;2 V) }) c1 e/ v
  152.         default:
    % t: t0 _1 E+ ]! `- o
  153.             break;
    , F3 K3 @/ d6 u% S' Z
  154.         }
    ( H% |" A. |; [! p7 H
  155.     }
    9 j; i' p3 W% M4 o9 s: t) F3 g

  156. - l$ a& C3 \% r8 l/ H
  157.     private void createListModel() {: T) p1 b" E7 ]; e7 B
  158.         ListBottem.setVisibility(View.GONE);, o2 e* Y- U9 f$ B
  159.         mLinearLayout.setVisibility(View.GONE);
    5 a% y% o( Y2 ^* V3 u$ y1 V
  160.         load_progressBar.setVisibility(View.VISIBLE);; y3 F( g5 u7 G+ a. l& l
  161.         loadflag = false;( ?' D- P$ i+ e: Z  k! O
  162.         mStart = 0;
    0 d2 H0 ~7 F! b2 b4 c" v" H- m
  163.         mEnd = 5;
    , k  W4 U# Y0 n6 _0 ~, t9 Z
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;2 y  Z3 v% k" k7 ?" X2 v8 L
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    3 V; @3 a, ^, y2 b2 `
  166.     }2 d. O) T9 D$ ?+ b: v
  167. * [4 `3 r8 `  L. z& r' ?
  168.     private class MainListOnItemClickListener implements OnItemClickListener {
    - m# i9 o: e  K
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,
    4 j( D2 r5 ?) Q, `7 U7 K
  170.                 long arg3) {1 n! j& R6 D5 t" f4 H8 S; P. f
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);0 s$ [( U- W" k+ o' C0 c' p
  172.             Bundle bund = new Bundle();
    / F/ u' r! `3 N5 n
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));& H- t4 d) X% u+ V
  174.             intent.putExtra("value", bund);
    ' W% S$ v% Y8 |
  175.             startActivity(intent);+ j* n- m& J( @
  176.         }" i! b" U: C1 n# j1 ^; u9 }' p- d
  177.     }
    , x1 F% {/ ^4 [5 X0 p/ d

  178. " g( Q0 }7 y5 z8 k1 p
  179.     @SuppressWarnings("deprecation")
    3 R, h' s8 K( x: e, a
  180.     private void createTextColor() {8 w* D- a5 `- Q  |4 w
  181.         Drawable background = new BitmapDrawable();6 V; n& R; L5 s) ]- `5 T$ q
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));  U/ I+ b1 B2 d* t. o; Z. ~
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));1 E, L; Z" I2 W+ i
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));
    6 k  l5 U( [( g& ?
  185.         mTopMenuOne.setBackgroundDrawable(background);
    , G0 D+ ?, Q  b8 x. }5 e7 D" a
  186.         mTopMenuTwo.setBackgroundDrawable(background);
    ) W4 A0 j; r0 e2 [$ I* w/ {2 [
  187.         mTopMenuThree.setBackgroundDrawable(background);
    4 Q/ v% I& _: P1 n9 u1 S7 [1 P
  188.         HomeNoValue.setVisibility(View.GONE);+ z" R3 C5 t, B' F5 n, }2 v: C
  189.     }
    4 N$ C& @+ ~+ S
  190. 3 m4 y' I# Y1 q# V/ o, N, L
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {
    0 v3 n* I; t& I# c% U3 y  _( Y( `
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;2 }$ j( U, x5 n! b
  193.     }
    * h7 |" B1 G/ I5 y! ?" }9 x/ ^
  194. : a7 \3 X& r3 n) g8 y
  195.     public interface HotFragmentCallBack {
    7 l8 F8 W& N& F
  196.         public void callback(int flag);- u& q0 s: x7 I& T3 v/ B
  197.     }
    / t& ^1 G* j4 z% B5 q8 t' _

  198. # d) B- v/ t/ n5 r. t
  199.     Handler hand = new Handler() {
    3 [9 Y$ X& I. e' x! c! M
  200.         public void handleMessage(android.os.Message msg) {
    ) G9 k* Q0 n8 e, G2 Q
  201.             super.handleMessage(msg);
    5 w4 Q. R2 i- b* p
  202.             if (msg.what == 404) {
    / l5 y' ^8 Y* ?! J- M  C. L) m
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();
    ( w) f- E6 S2 F3 K2 R3 l& B
  204.                 listBottemFlag = true;! ~8 p- u2 X0 N% `9 A( a% V
  205.             } else if (msg.what == 100) {
    3 ~' k! v( @+ u+ h; P4 w
  206.                 Toast.makeText(ctx, "传输失败", 1).show();1 N+ F8 R: ^3 F- X
  207.                 listBottemFlag = true;+ _! r. {+ b1 G; }7 p' [2 u
  208.             } else if (msg.what == 200) {
    5 F; c7 t- p$ N7 P1 A3 M& e6 `* Y
  209.                 String result = (String) msg.obj;
    4 [. G6 b9 F, W3 W6 x
  210.                 if (result != null) {7 V6 F* y* s1 r9 h# p
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);
    8 l5 j  E- E* x. T3 H3 `* c
  212.                     if (newList != null) {
    * u& S/ w9 v' z3 `
  213.                         if (newList.size() == 5) {; R" E' o( w  W/ G# H7 K4 ~; p9 @
  214.                             ListBottem.setVisibility(View.VISIBLE);
    3 B6 j1 K' ]* ^" c
  215.                             mStart += 5;8 Q, Q( |0 a  k$ g( Z2 q
  216.                             mEnd += 5;$ y1 ]; ]( {5 b! ^' y1 v
  217.                         } else if (newList.size() == 0) {: F4 K, R0 {3 b9 ~0 a0 w0 C
  218.                             if (list.size() == 0)
    " u3 A; C) v) S6 ?' @# \
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);
    - I0 [: K7 Y9 n7 N4 T( f
  220.                             ListBottem.setVisibility(View.GONE);* `+ \5 e' {6 d$ ~' r/ F
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();+ z) n- }; q. k" H
  222.                         } else {- ]( D8 T: X5 l, S3 z* p0 d4 ?# O
  223.                             ListBottem.setVisibility(View.GONE);  g, g9 V- C: N! P; H# S. Q
  224.                         }
    3 f0 w5 B' x% q7 p3 O
  225.                         if (!loadflag) {$ J" f6 i/ p% r% h7 k* d- b, F
  226.                             list.removeAll(list);
    + i7 I' Q  n$ d/ v: ]
  227.                         }* e' x; w6 u, ~" z
  228.                         for (AshamedInfo info : newList) {
    / |9 O+ \/ }4 ^7 Q& {: g: Y" {
  229.                             list.add(info);8 d) x$ Q. X1 ~& c4 l
  230.                         }/ s& i* C. e& l" J) b0 R5 F
  231.                         listBottemFlag = true;
    ) b1 c9 F: |8 k8 G8 R
  232.                     } else {
    - j! c, E( d$ X, E5 G: b1 ?
  233.                         if (list.size() == 0)9 E* Q- x1 L/ _9 K6 t
  234.                             HomeNoValue.setVisibility(View.VISIBLE);. s% V  V3 h5 y& c. S
  235.                     }; c0 F; ]! i0 m# l* Y
  236.                 }
    ( R1 N- O  W# A& Q2 y) k
  237.                 mLinearLayout.setVisibility(View.VISIBLE);
    + j1 K' I: X% b8 I
  238.                 load_progressBar.setVisibility(View.GONE);
    $ a7 Y+ q, U  Q3 ]
  239.                 myListView.onRefreshComplete();8 [/ ?, B: h9 M. o. \/ L
  240.                 mAdapter.notifyDataSetChanged();# S/ e1 A, o2 E) X0 n- _5 ~$ H! f
  241.                 loadflag = true;
    8 N: B& i6 _5 L$ D( b! `
  242.             }
    / t8 T* \- ?& H5 D9 q3 ^
  243.         };# H7 l3 }1 @6 Q* M; n) L* Z( e  Z0 t
  244.     };
    9 E9 A9 Y: o; y, Q+ d( Y- U& l

  245. 1 n  e7 \, {# R7 T
  246. }
    & Q+ e! s, G2 D; b* |+ x7 v
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码

4 c. n: A5 o# R7 ~  }% _" E/ N4 u  Y) }5 q& d9 i0 ?
源码下载:7 u8 {9 M( ?  p. i- r6 K$ J- M2 J
游客,如果您要查看本帖隐藏内容请回复

$ @( T2 @4 d+ \( e; r6 ~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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