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

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

[复制链接]
发表于 2015-3-30 16:15 | 显示全部楼层 |阅读模式
仿糗事百科Android客户端
主页[1].png
5 q9 t7 P9 q8 l8 [& r3 }4 q! t 侧边栏[1].png
; {* w. [, G! p4 z! |& r 登录[1].png
( B. J" Q/ F( ^+ G% k 个人中心[1].png
- B3 E# b0 k. p4 c0 J9 |, j源码片段:
" s7 B3 c  g; ^5 T# a& B2 ~- o
4 w! g2 {7 ^% ?+ w; \' Z
  1. /*** o9 L, j/ x- d! u# A/ C2 ~/ V
  2. * 热门的fragment! f+ ?5 i) {! `' N# M4 U- D
  3. * */& H, m7 r$ _! t$ g1 j
  4. public class HotFragment extends Fragment implements OnClickListener {
    & q. _; Q% C7 b7 Y6 q+ l$ M5 M
  5. 0 A0 G; g: r) X
  6.     private String hotUrl = Model.GANHUO;- }: H4 C7 f9 i  A' R& c, W
  7.     private int topMeunFlag = 1;
    $ u7 a3 @" T+ l! A# x0 r$ I, f
  8.     private View view;
    * o- w5 [$ u: z, i3 X8 b0 d7 {
  9.     private ImageView mTopImg;
    9 R9 i: a" r1 i4 e5 F. F
  10.     private ImageView mSendAshamed;
    , \6 |) |5 ~2 }  E
  11.     private TextView mTopMenuOne, mTopMenuTwo, mTopMenuThree;
    ' `! ^6 l5 w' _* ]1 W9 A1 H/ v+ D
  12.     private MyListView myListView;# d2 U5 N$ L# i$ q* s" I
  13.     private LinearLayout mLinearLayout, load_progressBar;
    ' G1 w; X: ]; E3 S
  14.     private TextView HomeNoValue;
    + K- V# H+ J% t6 V# j2 t
  15.     private HotFragmentCallBack mHotFragmentCallBack;
    / k! Y! G) u8 ~+ l5 ~4 N2 a, C/ @$ K8 m6 s
  16.     private MyJson myJson = new MyJson();8 R' P2 K* w0 a9 o5 y4 r0 ~$ T8 j% M
  17.     private List<ashamedinfo> list = new ArrayList<ashamedinfo>();& i) x7 H: m; ?  m) S. {
  18.     private MyListAdapter mAdapter = null;
    / Z3 k1 q) a3 v
  19.     private Button ListBottem = null;
    0 \3 a) A- z2 Y/ P; H& ]4 m  B
  20.     private int mStart = 0;
    5 L' r8 X2 _6 [" f& X
  21.     private int mEnd = 5;
    " o! {4 k' q4 z! I, d+ w
  22.     private String url = null;8 G1 X$ X2 w; _2 n6 ]- \
  23.     private boolean flag = true;9 {" g5 H) E% B- N0 l* u2 y6 r
  24.     private boolean loadflag = false;9 S/ q- Y+ x. k  a, \! A$ b
  25.     private boolean listBottemFlag = true;
    6 c. b5 i1 P+ h5 Q
  26.     private Context ctx;; W$ `; I5 y1 _0 \' J7 `, S

  27. 7 X$ h2 z4 e8 E5 L0 i: C
  28.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    1 l( i1 P& g" M) D& [9 ~5 f: q, M
  29.             Bundle savedInstanceState) {! D! v- S( Q% h# ], z
  30.         view = inflater.inflate(R.layout.frame_home, null);
    4 v, t$ C2 J( @) X4 k
  31.         ctx = view.getContext();* X1 C( |6 o  S% X
  32.         myListView = new MyListView(ctx);
    - O& s- @& C; a4 X7 u0 Q
  33.         initView();. b: g" j% _1 L1 {& H$ R
  34.         return view;" s' x- c( v5 i0 K' M/ z
  35.     }
    $ C& o+ r! U0 i5 T6 I
  36. . g" u1 K# A, ?/ t" U
  37.     private void initView() {$ k" v. ^2 X: ~1 l
  38.         load_progressBar = (LinearLayout) view- A9 y1 Y0 d& q; A9 O3 o
  39.                 .findViewById(R.id.load_progressBar);
    ) b& w9 h! K. B
  40.         mLinearLayout = (LinearLayout) view.findViewById(R.id.HomeGroup);
    6 {$ t, ~9 L) ?, y; r6 U% h
  41.         myListView.setLayoutParams(new LinearLayout.LayoutParams(
    0 [0 u9 ]2 r7 @6 V3 y1 B5 a. f
  42.                 LinearLayout.LayoutParams.MATCH_PARENT,) O9 c. l3 |, {
  43.                 LinearLayout.LayoutParams.WRAP_CONTENT));
    9 O' y. E$ d& j( |- m
  44.         myListView.setDivider(null);
    ' O, ?0 K* G3 g* m
  45.         mLinearLayout.addView(myListView);3 k+ }- e2 ~" m9 I+ W4 y" c) j) P) m
  46.         mTopImg = (ImageView) view.findViewById(R.id.Menu);
    % O" p3 n. C  ]' L4 i3 D/ _/ B
  47.         mSendAshamed = (ImageView) view.findViewById(R.id.SendAshamed);) K2 f4 |; a+ L8 w
  48.         mTopMenuOne = (TextView) view.findViewById(R.id.TopMenuOne);
    # f! ]7 W8 e# d! S7 V: H
  49.         mTopMenuTwo = (TextView) view.findViewById(R.id.TopMenuTwo);
    / O" \0 v: |6 Q: t' K* T" Z. b) L. o
  50.         mTopMenuThree = (TextView) view.findViewById(R.id.TopMenuThree);
    0 D  T; w% \) y
  51.         HomeNoValue = (TextView) view.findViewById(R.id.HomeNoValue);
    2 @" |9 c1 }# s. E' \
  52.         mTopImg.setOnClickListener(this);" b1 y; Z6 B" U1 u0 F- u2 [# T
  53.         mSendAshamed.setOnClickListener(this);
    0 u5 N8 c- ^7 G+ J* {* B
  54.         mTopMenuOne.setOnClickListener(this);+ L( d0 P- |: w0 W4 G& `# B( p
  55.         mTopMenuTwo.setOnClickListener(this);
    " M  ~; N" H1 X2 m' G
  56.         mTopMenuThree.setOnClickListener(this);
    ! ~# P& D+ N' P  k
  57.         createTextColor();
    5 L" j. n' F+ g3 o
  58.         switch (topMeunFlag) {
    * i/ ]: q1 I# Z) b2 V4 h
  59.         case 1:$ U5 u' e( r' L8 \/ v) f
  60.             mTopMenuOne.setTextColor(Color.WHITE);# I) V' H4 W7 N( @
  61.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);# \3 W  }3 h6 e+ z7 B1 t' R
  62.             break;2 c& D3 M/ F  H8 f
  63.         case 2:; [, T- c% ?. h  W
  64.             mTopMenuTwo.setTextColor(Color.WHITE);/ ^3 o4 x6 w" L& f' A8 X9 n0 L
  65.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);) U! y8 u% U* b) x1 z) A0 ~
  66.             break;
    ) r9 m. l  [% V- }: a; ~) J
  67.         case 3:
    + Y( _3 D. D+ x! D: B- l# M
  68.             mTopMenuThree.setTextColor(Color.WHITE);
    5 e3 Y6 K! @! z, }8 q) Z
  69.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    + ^$ ^4 h$ w) u2 r* z+ k
  70.             break;
    1 ~+ y1 v: {# C/ }4 n
  71.         }
    3 ~3 `; U! O+ Z; O
  72.         mAdapter = new MyListAdapter(ctx, list);
    $ ~  m9 X2 O8 G0 C5 l5 j
  73.         ListBottem = new Button(ctx);
    & i6 j0 x- v* B6 r. ?0 ]
  74.         ListBottem.setText("点击加载更多");
    : v, u. n! r4 c
  75.         ListBottem.setOnClickListener(new View.OnClickListener() {
    " ^' @! A; y( I
  76.             @Override
    ) ]& ^9 ~- ~/ f
  77.             public void onClick(View v) {
    5 D+ A2 Q3 V/ a; P8 E5 s1 G
  78.                 if (flag && listBottemFlag) {/ X0 r7 r& q8 Y; P9 ^
  79.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;+ f- E& H6 J' S4 v6 m; I
  80.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));, P5 {7 }. H- _( h6 m* ]7 d& I  S% P
  81.                     listBottemFlag = false;
    2 L6 f0 y9 b7 r: w! Q
  82.                 } else if (!listBottemFlag)
    . E" G0 U/ g3 U5 G. j3 U
  83.                     Toast.makeText(ctx, "正在加载中...", 1).show();* `  {2 k4 [( Z* z
  84.             }
    , b) \: t6 o. i, _, k2 N" C
  85.         });
    ! U" B% G9 i5 [2 y- A
  86.         myListView.addFooterView(ListBottem, null, false);
    ! x6 `  @; t2 V1 @3 t' ?4 z5 ?# j6 |9 H
  87.         ListBottem.setVisibility(View.GONE);
    " w( S7 y8 Z5 _& U8 E& f: k
  88.         myListView.setAdapter(mAdapter);( K+ S' M) U$ g" |- _
  89.         myListView.setOnItemClickListener(new MainListOnItemClickListener());
    * j3 T. x+ f; O7 j: p
  90.         url = Model.GANHUO + "start=" + mStart + "&end=" + mEnd;$ R* y. n3 Y2 [( _2 l7 w: N9 }
  91.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    / {% J* I; j2 o) W9 ]1 H! {
  92.         myListView.setonRefreshListener(new OnRefreshListener() {
    ! |# C6 @8 |% Y9 ^
  93. # o. N$ m, b0 Y4 n% w+ x
  94.             @Override. n" r' Q$ [; r/ W7 E
  95.             public void onRefresh() {
    - F, i7 }; |5 l& h- d4 l6 x, F7 G
  96. 4 \% Z2 A2 l# V, d+ }
  97.                 if (loadflag == true) {" ]' }/ M3 t2 d/ q7 z( D
  98.                     mStart = 0;
    , _5 j# g6 n- _0 S' W% ]# A
  99.                     mEnd = 5;. E' C" v, W  K1 F
  100.                     url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    4 n3 ?% R* R0 Y: z4 q+ d" b
  101.                     ListBottem.setVisibility(View.GONE);
    ! Y+ ^' X% [: r" m( B3 v( a
  102.                     ThreadPoolUtils.execute(new HttpGetThread(hand, url));# p' Q' |7 ~1 X: r; x( V
  103.                     loadflag = false;2 g# }/ ^) m8 c' G1 ^2 k
  104.                 } else {1 A) Y& a% H) W
  105.                     Toast.makeText(ctx, "正在加载中,请勿重复刷新", 1).show();
    # w$ n$ j  o3 ^, s0 L
  106.                 }
    # D% d9 F0 K" [7 z' V% {% T

  107. : _0 W  L) Q9 P) [5 E
  108.             }
    4 q3 k+ T. C- ]
  109.         });+ y  d% U% O1 R! J; ?( I
  110.     }: A8 c& y; }) l

  111. % B9 }4 k1 D6 s
  112.     @Override  q$ |, ]' d6 O. }& i
  113.     public void onClick(View arg0) {
    / U* K* `( d$ u6 [
  114.         int mID = arg0.getId();6 _1 N, {( B5 H0 s3 ]' n
  115.         switch (mID) {
    ) ?. t+ w. C# s7 \( L9 T
  116.         case R.id.Menu:* x% x. n2 J1 O# g  i) Q6 B
  117.             mHotFragmentCallBack.callback(R.id.Menu);
    ( L: b7 a7 p& c! I( j0 v
  118.             break;
    # S- l2 C  M) B% o8 m/ E! l
  119.         case R.id.SendAshamed:- k& i2 N+ Y+ y0 K3 D
  120.             mHotFragmentCallBack.callback(R.id.SendAshamed);
    * f  B. s$ q( `8 }1 G# a9 H1 O
  121.             break;
    ( d4 e6 p8 x2 T2 X! [6 E7 h* U% j
  122.         case R.id.TopMenuOne:0 ~/ O) g/ H' E  a7 ~7 E. b
  123.             createTextColor();9 R; ]4 }( m; [. X" _- l
  124.             mTopMenuOne.setTextColor(Color.WHITE);
    5 E: S8 `' T/ z- ~+ I- p6 N
  125.             mTopMenuOne.setBackgroundResource(R.drawable.top_tab_active);
    # u+ v& [- p3 g
  126.             if (topMeunFlag != 1) {
    * W( u0 y7 M3 t& Q3 G3 H# N
  127.                 hotUrl = Model.GANHUO;
    3 T! m; L+ ?) c4 x
  128.                 topMeunFlag = 1;
    * t$ Q" q# ]8 m: V. N6 k# k! y
  129.                 createListModel();4 j! i1 u4 w9 A1 Y8 V
  130.             }/ g: B7 |5 M5 O) G8 i6 M
  131.             break;1 k$ n* y6 w: l# |! w, R
  132.         case R.id.TopMenuTwo:
    ' V6 V3 ^; b5 F& i; T
  133.             createTextColor();
    0 u  X1 }) E& a
  134.             mTopMenuTwo.setTextColor(Color.WHITE);4 d3 `+ N1 a0 f& ]& M
  135.             mTopMenuTwo.setBackgroundResource(R.drawable.top_tab_active);4 p, l) z; {% U5 z
  136.             if (topMeunFlag != 2) {
    ; M* F/ g9 U7 n7 B' B' L( F0 O* \
  137.                 hotUrl = Model.NENCAO;. o* }7 R" U, p4 x) f/ c3 B1 A* u
  138.                 topMeunFlag = 2;' @* c, \+ }; W  k/ Y% N5 o% q% r- y- N
  139.                 createListModel();
    ; Y0 {2 v& p2 K
  140.             }, C( V9 _  \. X  F9 s4 {
  141.             break;
    2 a) t$ q' A9 o( P  T* A  t3 l' U
  142.         case R.id.TopMenuThree:
      b' A8 z1 a9 l: A* |/ ]
  143.             createTextColor();4 I7 H: {/ d2 ^; ]. f( I
  144.             mTopMenuThree.setTextColor(Color.WHITE);
    2 L$ w0 l$ i+ X* F9 ]/ [
  145.             mTopMenuThree.setBackgroundResource(R.drawable.top_tab_active);
    : t. |* G7 [! C; G/ V! E
  146.             if (topMeunFlag != 3) {
    4 v0 K6 V' V# R4 o
  147.                 hotUrl = Model.WENZI;
    % n0 {& T1 r1 @6 P8 t. o
  148.                 topMeunFlag = 3;8 b: S  W- U4 |2 K
  149.                 createListModel();
    6 w2 p3 A" D- F0 [7 }7 o
  150.             }
    3 J+ b2 ^% }- G" V5 s' U
  151.             break;
    ( k, R0 |) d( s1 g( t& R
  152.         default:
    # Q+ G7 v1 a, I( v2 R! ?
  153.             break;- X7 V$ e5 G( O7 ^( f7 [8 f, v
  154.         }
    $ q0 U  t: h& o
  155.     }1 v* y( {8 J1 x
  156. - T' k+ @2 _' f: k* j( k+ @. p$ T* u
  157.     private void createListModel() {* z& ~1 q" g3 T# f0 G
  158.         ListBottem.setVisibility(View.GONE);, a# z; f0 V: v7 ]- Q
  159.         mLinearLayout.setVisibility(View.GONE);
      _/ b2 o% P4 |6 H6 l$ G  R7 h6 G* S
  160.         load_progressBar.setVisibility(View.VISIBLE);
    ( e5 {5 g$ t2 Q
  161.         loadflag = false;
    4 h8 [% [0 p3 Q( ]! i$ s
  162.         mStart = 0;
    & }3 R$ @  N9 {# r$ j
  163.         mEnd = 5;4 q4 [- }8 O( o+ i' e! Z' T  Y
  164.         url = hotUrl + "start=" + mStart + "&end=" + mEnd;
    + x# e; _8 C9 u* K# @% J, M0 i
  165.         ThreadPoolUtils.execute(new HttpGetThread(hand, url));
    + M: Y4 I2 G0 O1 \! N6 M
  166.     }6 k5 e! N/ x. D. y5 \4 H9 D8 @. r+ ~

  167. , p! _, i5 x4 f3 ?& \
  168.     private class MainListOnItemClickListener implements OnItemClickListener {1 j8 |" [" @; e) p( {; b( T
  169.         public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,
    ) H( s, @3 p; H1 H- P9 K8 Y
  170.                 long arg3) {& r: b# p. U4 I8 P" w
  171.             Intent intent = new Intent(ctx, AshamedDetailActivity.class);) j8 \" C% n" Z8 b1 p0 ]3 h3 V
  172.             Bundle bund = new Bundle();
    9 t8 @  P6 r, V0 j2 e" l
  173.             bund.putSerializable("AshamedInfo", list.get(arg2 - 1));  r2 ?: ]& H8 J2 [$ q
  174.             intent.putExtra("value", bund);/ m0 Q7 [  Q) C; e
  175.             startActivity(intent);
    ! I6 u  A- B+ o' `! m  B3 k
  176.         }: R) c( Q9 O+ p5 f/ f
  177.     }; P+ x& [" Q. r7 u
  178. * l$ y9 ^1 x) G# X" W! T$ d/ z- O
  179.     @SuppressWarnings("deprecation")% a; E; Y  E8 h+ P
  180.     private void createTextColor() {% U2 @: k; g. J% Y
  181.         Drawable background = new BitmapDrawable();5 @4 S* O1 \# O  s
  182.         mTopMenuOne.setTextColor(Color.parseColor("#815F3D"));1 A9 a5 ]5 S! n# }5 A
  183.         mTopMenuTwo.setTextColor(Color.parseColor("#815F3D"));; A6 s. {6 \# R3 R( H
  184.         mTopMenuThree.setTextColor(Color.parseColor("#815F3D"));
    ! b( s' W4 g% l
  185.         mTopMenuOne.setBackgroundDrawable(background);
    * h# Y# B0 _" E2 ^
  186.         mTopMenuTwo.setBackgroundDrawable(background);
    ; G/ m& a, l# h- K, S
  187.         mTopMenuThree.setBackgroundDrawable(background);
    % o0 M8 N& D9 B) s. }! [9 l
  188.         HomeNoValue.setVisibility(View.GONE);4 e- F4 e/ J' I! C
  189.     }
    ; p  j% o  B* v8 z
  190. 0 a( J3 }% i# q7 |7 F
  191.     public void setCallBack(HotFragmentCallBack mHotFragmentCallBack) {( P4 ]  u; E: S3 J
  192.         this.mHotFragmentCallBack = mHotFragmentCallBack;. Y1 n) v- h7 T; h0 v
  193.     }
    9 Y8 g; x% P: P. f& o# R
  194. 6 K. w/ E* g% d# P6 T  Y( g' M5 N$ ?
  195.     public interface HotFragmentCallBack {* ^; {& `2 z- }! s. x
  196.         public void callback(int flag);7 r# {% r( r. d8 B# G* R% f4 v2 @
  197.     }
    . V& J7 I5 P6 l" C# Y' d
  198.   X' j* }. ~$ o
  199.     Handler hand = new Handler() {9 P0 s- F6 s4 A' T
  200.         public void handleMessage(android.os.Message msg) {1 F- c5 B1 S! s
  201.             super.handleMessage(msg);
    # T4 q' w0 b+ ~$ V5 B" i% ]/ C: |
  202.             if (msg.what == 404) {
    7 D/ V7 K) y2 k1 t! E+ X; ~
  203.                 Toast.makeText(ctx, "找不到地址", 1).show();
    1 z$ L" v0 |. w1 {, O0 y$ m
  204.                 listBottemFlag = true;6 O8 y! H0 y( @  Y* o( p
  205.             } else if (msg.what == 100) {
    " t  E$ X$ f( X; I# s' ]
  206.                 Toast.makeText(ctx, "传输失败", 1).show();
    & b8 R& l1 @& R. o0 l0 a
  207.                 listBottemFlag = true;
    4 g- F) D1 f$ j& @3 C
  208.             } else if (msg.what == 200) {
    4 N& G2 ^2 g% `; t& y
  209.                 String result = (String) msg.obj;
    - [" a5 S& W+ `( B/ g
  210.                 if (result != null) {4 e& u3 d- Y$ x: n$ o0 H: E# j
  211.                     List<ashamedinfo> newList = myJson.getAshamedList(result);4 Z1 H6 l7 r3 U
  212.                     if (newList != null) {
    6 P' {$ Y  p( [# [& a8 A/ _& ^
  213.                         if (newList.size() == 5) {
    2 J7 I2 B" F  Z
  214.                             ListBottem.setVisibility(View.VISIBLE);
    ( N2 A; Y  E4 V* U' Y9 z8 g0 U  L
  215.                             mStart += 5;
    9 s& h% N; G: R. x
  216.                             mEnd += 5;
    5 p. I9 c1 q1 v, k- _
  217.                         } else if (newList.size() == 0) {' Z0 E9 Q* C. j
  218.                             if (list.size() == 0)
    / v6 M2 p* Q8 ^# I$ s7 ^" ?
  219.                                 HomeNoValue.setVisibility(View.VISIBLE);1 W( e( m+ H! ~  c4 v$ A
  220.                             ListBottem.setVisibility(View.GONE);% q  ~" M% f1 `9 u5 ?# B. m  x
  221.                             Toast.makeText(ctx, "已经没有了...", 1).show();% `3 y% V$ P$ f' M8 q9 ?1 r  O
  222.                         } else {) e$ z( R  \# a7 Q2 s; w8 @
  223.                             ListBottem.setVisibility(View.GONE);
    $ `$ i' l% j# V8 Z
  224.                         }8 p! A# w9 F& o, M1 j/ }9 o
  225.                         if (!loadflag) {/ k# L( L0 _" X0 X9 k$ y8 A
  226.                             list.removeAll(list);* j1 K3 ~8 f% V$ x; z" O! a
  227.                         }/ r* e0 t: W- e6 o" `
  228.                         for (AshamedInfo info : newList) {
    9 Y9 v: q, L5 T9 F
  229.                             list.add(info);
    % x7 a( v' Q) A- `( g: ^+ I
  230.                         }; j" T: U" q1 Z, m1 X+ O& [, z
  231.                         listBottemFlag = true;1 \; q' c6 b3 A; `9 K  o
  232.                     } else {: @6 @) v. `: r* q) i# [
  233.                         if (list.size() == 0), y! v; _! \/ d. Z6 m
  234.                             HomeNoValue.setVisibility(View.VISIBLE);7 W- k$ S8 O4 c" |, Z5 G7 @
  235.                     }
    ' m) A9 j2 m. t; Q$ ?* I' Z
  236.                 }! F! D9 Q+ c6 r( _" B
  237.                 mLinearLayout.setVisibility(View.VISIBLE);1 H! j7 L0 d4 K6 H) y5 o& H1 Y
  238.                 load_progressBar.setVisibility(View.GONE);. n1 g/ R, C0 i7 m& {
  239.                 myListView.onRefreshComplete();3 j4 @1 D: Q5 }0 d
  240.                 mAdapter.notifyDataSetChanged();
    7 F) X4 S4 z: q- ^9 p2 O
  241.                 loadflag = true;: _) |" L1 v( W; t- a- _* {: f
  242.             }" Q0 b4 N( ^+ }# @8 S1 G
  243.         };7 j9 n+ Q  V$ l5 h: X+ Z
  244.     };+ j2 q- z3 a: F* y+ R. t$ o8 X
  245. . f# g! C6 X9 N+ C, v6 V7 |
  246. }, B" x0 n, n. s/ z/ t0 a
  247. </ashamedinfo></ashamedinfo></ashamedinfo>
复制代码
4 O# u0 C: r1 w+ @2 D
! m! b0 }8 r3 t
源码下载:8 E6 e% h1 }& [* o- d5 M, B
游客,如果您要查看本帖隐藏内容请回复
* l( ~6 J9 v- ~. f/ W- D) H% P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2001-2014Comsenz Inc.

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