请选择 进入手机版 | 继续访问电脑版

星空社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 568|回复: 0

[lua教程] 【lua教程】编辑框封装

[复制链接]

407

主题

472

帖子

1622

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1622

荣誉管理论坛元老

发表于 2021-7-1 08:46:20 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. --编辑框封装
    ! W" g: l3 `4 r- ~" P* j  [5 m
  2. --Pretend1 {1 o* U; ~  q' o
  3. require "import"
    ; a- e6 f7 v& y8 K2 k& J
  4. import "android.app.*"
    ) S0 f3 r$ a* R7 I( n2 p
  5. import "android.os.*"' B, x/ T& L- G  o$ c  t; u- K8 I# \; A
  6. import "android.widget.*"
    + f0 b: U- D( a1 J
  7. import "android.view.*"( s! w  Y4 ^. S5 {8 s
  8. & `4 A* c! P) L  i$ g8 E# n
  9. function PretendEditText(t)--编辑框封装6 {2 Z3 {' t$ F7 k
  10.   local lay=loadlayout{FrameLayout,
    * _1 R* X# i: N6 C( J
  11.     {
    - w' X9 e( J( ]9 R' o, B
  12.       RelativeLayout;4 h2 Z. ~7 S2 @0 A7 v$ ?+ b) Q
  13.       layout_width="fill";
    % K% P3 L5 p, W- w: L5 x  E/ R
  14.       focusableInTouchMode=true;
    % t' y; R, |( R
  15.       focusable=true;& `* C, q# C9 k; }8 V1 y* i1 C
  16.       layout_height="fill";6 k- Z! \: a: \0 M9 I
  17.       {
    - \. L5 A. d4 n/ s
  18.         EditText;1 F) C6 E. T) [$ A& o) m
  19.         layout_height="wrap";# r: Q. M1 `$ o: j( b
  20.         layout_marginTop="56";2 C/ ?% p  {3 A8 @: n+ I
  21.         layout_centerHorizontal="true";
    " I( v- p# G0 m( g& x' I1 i1 k9 e+ J
  22.         textColor=t.字体颜色 or "#000000";0 A. e; D" O5 t0 x! s4 x
  23.         textSize="14dp";: S' g9 M" G4 ^
  24.         background="0";
    ' @# I  _! v4 P. m' d
  25.         layout_marginLeft="16dp";9 h3 T5 z/ A+ c( X, c
  26.         layout_width="fill";
    2 Y3 m7 c# b# u3 \
  27.         layout_marginRight="16dp";$ E& V# n5 F5 n/ k# t
  28.         id=t.id;
    4 |$ }/ F& G1 y. b  j7 @/ H- q( }. l3 y
  29.         password=t.password;( l/ ?/ k. u' {1 n
  30.         singleLine="true";
    / ]' a. w3 S# g3 @% L, |$ O0 Q5 Y6 w
  31.       };
    7 f& k5 p5 H0 K9 `8 M) Q; s

  32. ) }; P( O8 x8 E
  33. ! N/ a, k8 c% _+ z3 [$ x7 H# E
  34.       {! a* ]) h' g' r; j9 r
  35.         TextView;% ^% t2 W3 o( n3 y
  36.         layout_height="2dp";
    ; |; M! i8 b! I- h: O
  37.         layout_alignBottom=t.id;+ |0 J0 g2 K" o4 u& H
  38.         layout_centerHorizontal="true";
    0 l: E" q5 ^" `
  39.         background=t.线的颜色1 or "#009688";
    3 A% N$ v$ \, R5 N
  40.         layout_marginLeft="16dp";8 e# r. N; r- a
  41.         layout_width="fill";3 C- g, F) E7 W7 |- G
  42.         layout_marginRight="16dp";0 i/ x, t& W4 y8 S' x3 q" ^
  43.         alpha="1";
    2 ]. t3 f$ g0 w; E* @9 r
  44.         id=t.id2;
      U% I7 }! o+ m5 r3 E8 F: p. E
  45.       };' R) S( u6 r) G" g7 L6 _* y" U
  46. " Y; s! G* U2 \& k. D
  47.       {
    $ `! k6 N6 T" C2 N
  48.         TextView;# j3 w* }1 f6 w4 k) `
  49.         layout_height="1dp";) {8 j  _: S1 Q& D3 d1 f
  50.         layout_alignBottom=t.id;$ i' q3 C" C3 V; |' o, ]
  51.         layout_centerHorizontal="true";. ~( u: o% V' U- h! o6 p4 ?: K
  52.         background=t.线的颜色2 or "#000000";
    0 G5 d& n# d5 u8 ?* R( C
  53.         layout_marginLeft="16dp";- q$ u& S: N* P6 J+ Q  S7 A
  54.         layout_width="fill";  B( m0 ^4 b% C) Z8 M  r3 k: f
  55.         layout_marginRight="16dp";
    - p, n6 |5 N: g/ k; N1 b* R
  56.         alpha="0.2";
    + j9 B" V+ a, n( k9 |( A8 X
  57.         id=t.id4;5 W$ w9 M8 Q' j% m; v& Q' {
  58.       };: i, y2 |; M* j2 i5 C! ]

  59. 1 D( p  N, J" l# m9 m/ o* {
  60.       {" w4 }1 M$ ^% S. W  Z1 S1 J
  61.         TextView;( q$ g  X8 g$ u1 e# E' U$ u
  62.         id=t.id3;
    " [: s+ K6 Z4 d
  63.         layout_marginLeft="24dp";' ]- n+ t7 g6 X$ U8 ^, ?1 ]0 Z+ p; s
  64.         text=t.hint or "Pretend封装";+ i' S  g8 V& ]
  65.         layout_alignBaseline=t.id;
    9 V0 r* P: w6 D. \! d& L
  66.         textSize="14dp";
      g0 _- q8 x/ `, A4 E8 B
  67.       };
    ( B$ }6 e5 `- ~* ^. x
  68.     };}
    % s" A" E% t7 ~$ W

  69. 4 @  N3 ^! D( O% V# P+ f, i9 F7 |
  70.   值=true
    5 a2 f& z9 m* A# Z

  71. 2 [% q+ z& r* E
  72.   lay.getChildAt(0).getChildAt(0).setOnFocusChangeListener{
    * M9 _2 f$ O; }7 o* @
  73.     onFocusChange=function( v, hasFocus)
    ; ]  |: _* Y. f* h0 D0 x0 L
  74.       if hasFocus then- B1 H& D6 h' o# f! v- U* a
  75. * D. g  U! _/ m- \
  76.         import "android.view.animation.ScaleAnimation"
    ; i, f4 e$ M' `1 {  ^& h* }
  77.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(0.0,1.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))9 D, p* o/ C% ^% y: @4 e( A0 z8 {
  78.         lay.getChildAt(0).getChildAt(1).setVisibility(View.VISIBLE): y0 g: U! k& `( ~- w" E% x: [
  79.         if lay.getChildAt(0).getChildAt(0).Text=="" then
    ! D( [& I% k& T1 P0 G/ }" s
  80.           import "android.view.animation.TranslateAnimation"
    % }# P8 x+ m; R  V. D: W6 O
  81.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,0,-56).setDuration(100).setFillAfter(true))
    " Z( V/ S% c- `% q2 b8 r
  82.         end
    ! U2 a" L' u: }4 z  _$ w' ]6 E
  83. 8 B4 S  {1 u7 m
  84.        else6 Y5 @( f% O8 Z4 ]4 S* c% a& g+ v

  85. 2 V! @. o/ M) X% ~. O
  86.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(1.0,0.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))
    1 l$ e& C) \) ^! b5 v
  87.         lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE)- h8 }! w! Q6 a9 {+ ^+ W! Z0 L
  88.         if #lay.getChildAt(0).getChildAt(0).Text==0 then
    ; ^: [; i8 U4 |! t
  89.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,-56,0).setDuration(100).setFillAfter(true))2 R/ [8 V$ B& y
  90.          else
    6 U2 i" v3 O  t8 y' m
  91.           lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688): c9 z6 z; R/ H) e
  92.         end2 G+ @6 K: p! r/ r0 I' v' I& W
  93. 6 @. z& G) x* g8 ]
  94.       end
    5 D4 A0 E9 \# n
  95.     end}' [5 {; `5 X9 Z# P9 G
  96.   lay.getChildAt(0).getChildAt(0).addTextChangedListener{
    ' ]% o! [: p6 ?3 A# q" n
  97.     onTextChanged=function(s)% e, [- n$ y. g+ E& }
  98.       内容=tostring(lay.getChildAt(0).getChildAt(0).Text)
    : a- J# }, A! M3 z
  99.       if #内容==0 then
    : j9 X5 _: R9 u. d2 c+ p
  100.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色2 or 0xff8b8b8b)
    ) l0 b. q' w: F6 T
  101.        else
    1 ?" A: k/ V8 f6 [! b; c! k
  102.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688)) t9 L2 P4 g" V* n
  103.       end7 u! g: ?6 {) v* V( F
  104.     end: t) P* E! H, _9 t" K& l
  105.   }
    . i1 u( M4 s" k: p$ u

  106. - v9 P7 \( X, Z

  107. ' \  `3 m8 U  \9 a9 M
  108.   lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE)% G( I" v7 Q! j& ]5 B' l9 K: |, W% }

  109. & @/ |$ \8 H# x2 J3 g( u7 ^( }
  110.   function 取消焦点(app)  f' J5 F' Z$ o; d4 U, M; ]4 a$ [9 j4 R
  111.     app.setFocusable(false);
    , o$ r8 A8 D7 @7 i
  112.     app.setFocusableInTouchMode(true);
    5 W/ P' e, L0 m/ M" e- N! K2 c8 }
  113.   end
    & _2 b8 |8 g) B3 {0 Q+ u6 B
  114. 9 w1 E+ E; v* S. T
  115.   return function() return lay end7 [% \; I, J+ @2 F
  116. end6 n5 }1 t" v2 j

  117. * K) p7 V8 S# D. L8 F" Z# i
  118. --主布局,导入封装模块必须在布局前面
    ! Q. a$ g: d  A: p6 ]) _
  119. layout={
      y4 e0 B' i' C1 {* J: O
  120.   LinearLayout;
    ' _4 I& Z* b, e! E3 B. {& X
  121.   gravity="center";
    , b, z$ p# K0 k( b' d
  122.   orientation="vertical";
      i9 H8 d# L1 G' |7 ]
  123.   {
    & a9 @/ K! T7 r/ M: J
  124.     PretendEditText/ [, D/ Y2 u+ L3 k: h7 O
  125.     {; u! M! z& x* A& x- l% L) @) G
  126.       id="app";
    : b& R% q. F$ R1 w* M( O
  127.       hint="账号";" H) c1 c7 ^0 |$ n0 K8 R6 }/ Z* r. q
  128.       hint颜色1=0xFFE91E63;" b& k( N- r6 y1 Q  U
  129.       hint颜色2=0xff8b8b8b;" y3 k/ m$ y6 J; P8 Z
  130.       字体颜色="#000000";! b& X% c* f- Q/ M5 |1 f8 w% S& N
  131.       线的颜色1="#FFE91E63";, _* p* q' c; j  s
  132.       线的颜色2="#ff8b8b8b";: ^2 g" O6 ^, f- w! V
  133.     };7 Z/ W/ e% _; t1 l! t; e. r6 X
  134.   };0 f! @0 |' ^/ q2 W/ R. [
  135.   {
    5 I$ m1 ?4 g$ C( T
  136.     PretendEditText& W! z2 p8 w% z: p8 R9 e* J
  137.     {$ Z9 U7 b( K+ H1 \% @, V2 w
  138.       id="ap47p";( v6 w+ b. S& M5 D) q/ e
  139. . ]$ e7 R% K1 m; i; C
  140.       hint="密码";
    2 a% {: ]& E8 N& A) h4 ]
  141.       password=true;
    3 ~  V9 C, Q# d6 F- a# Y' [8 M
  142.       字体颜色="#000000";
    ' Q; e* c- Z5 t3 I7 r" A
  143.       hint颜色1=0xFFE91E63;7 h! p* |  {+ I7 |
  144.       hint颜色2=0xff8b8b8b;
    $ ?% c4 c1 B1 c9 g
  145.       线的颜色1="#FFE91E63";
    . W) F1 n& e$ G. ^1 \, J
  146.       线的颜色2="#ff8b8b8b";
    0 n# g$ F# \/ W. Q: b8 J
  147.     };, N% Z" P% g% @
  148.   };, e6 }' Y- d" x
  149.   {/ {1 k( |" N9 ^+ b( B
  150.     Button;
    2 S0 W: ]$ k0 |  }6 t
  151.     id="apo";
    0 A( L, A- K8 u0 M% L4 D  a; |( C
  152.     layout_marginLeft="10dp";
    8 E! D7 V' h% G- y: T
  153.     layout_width="fill";
    ' Z/ {! c) i' D; U! B+ ~5 x' d
  154.     text="确定";
    5 b! q; e2 p: I! u! O8 _0 _
  155.     layout_marginRight="10dp";; P9 u8 Q9 r8 M. l( _- S
  156.     layout_marginTop="56";
    ! h8 K/ e3 S& R( s. E; \! [$ G+ U: ^
  157.   };5 `: S7 o! i0 x/ T# N
  158. };
    / J4 [9 a7 ~! T( d0 n. ]& o: ]7 Y
  159. * y2 c/ C, W( Z: q6 U1 I# u
  160. activity.setContentView(loadlayout((layout)))
    9 i  N8 C5 y& J1 b! x9 \
  161.   w" e& z! Z& h! t1 i9 `
  162. function apo.onClick()
    5 v  I4 i; f* x3 P) x
  163.   取消焦点(app)
    + w, ~6 R4 ?+ g$ O
  164.   取消焦点(ap47p)6 y  b7 U7 I$ A$ V7 ?+ @
  165. end0 U, n; b2 |% B5 |% f0 {
  166. 5 l; O2 V5 y+ z; [* [- X7 ~
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区

GMT+8, 2022-7-1 21:25 , Processed in 0.067607 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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