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

登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 1461|回复: 1

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

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-7-1 08:46:20 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. --编辑框封装+ G# Y, J" v2 ~$ M2 L# e! j
  2. --Pretend
    0 G# _7 P/ [; L4 y2 l* f
  3. require "import"8 |" ?! e) [) l9 Y
  4. import "android.app.*"
    4 w4 z4 ^6 U/ O4 O$ \& j: z. s
  5. import "android.os.*"
    ( j# P8 j+ q) U- b. z5 s
  6. import "android.widget.*"
    9 Z& ^, E' y) ^* W
  7. import "android.view.*"! {8 e0 R. e- a: k9 Q5 r) g
  8. 6 _+ y1 V5 |# j% ]- F8 ]
  9. function PretendEditText(t)--编辑框封装
    # h& t. b# u5 Q0 \8 o# o5 j/ Z6 H
  10.   local lay=loadlayout{FrameLayout,8 u7 C; R& {; e4 X  @
  11.     {0 K/ z1 k8 G% S* o2 V2 c# o- s
  12.       RelativeLayout;
    ; {5 O2 X6 Q1 g4 N1 l8 ^; U9 c
  13.       layout_width="fill";4 ]$ ?% Y% O3 F% \: W6 O6 j' ^
  14.       focusableInTouchMode=true;
    1 V) i' T. h4 e" F% H2 n/ i
  15.       focusable=true;
    & p( l8 e3 C/ a1 z
  16.       layout_height="fill";
    6 n) O, X+ F4 I# _. Q
  17.       {
    ) q( n' d% E0 G0 s- e+ l
  18.         EditText;1 F. |1 M0 V$ U
  19.         layout_height="wrap";: M3 p& C  |8 F( Z
  20.         layout_marginTop="56";
    4 b0 b. P% _  Z7 F' e" A" H* c
  21.         layout_centerHorizontal="true";+ I: o' C9 S7 G+ c5 x
  22.         textColor=t.字体颜色 or "#000000";; w- L: K  `1 V% s
  23.         textSize="14dp";
    4 Q* D; z, i) k1 N
  24.         background="0";
    0 k$ u& n/ O) o( q7 ^+ z
  25.         layout_marginLeft="16dp";
    , X1 M, k! R# G4 |8 m# X3 u% X
  26.         layout_width="fill";7 h- q$ m' G5 x  J" H( S, D, j
  27.         layout_marginRight="16dp";
    # T0 t/ h+ ?; R& y) V
  28.         id=t.id;8 I; i# s8 D# T- e8 ~
  29.         password=t.password;
    # `; U5 P7 S" y$ ~4 F+ Y
  30.         singleLine="true";4 G7 m  U% b1 @" o5 J' I
  31.       };; r& _& |6 e$ X3 Y. H- b

  32. , g$ Q2 Q1 \1 Q0 h2 A
  33. 1 c8 [, Q8 x2 }/ m4 v! x$ q% o
  34.       {
    % g# K7 f4 I+ F6 p$ q
  35.         TextView;
    ! b% M/ o  f" y: o" p; A3 W
  36.         layout_height="2dp";" Q( c( F+ b/ [
  37.         layout_alignBottom=t.id;
    ! p! ]# A9 P4 R) u- m2 Q
  38.         layout_centerHorizontal="true";
    8 s% N. Y; _9 Z/ [/ W+ N
  39.         background=t.线的颜色1 or "#009688";
    5 W+ s( [! Q0 h! l1 x& q; S3 T
  40.         layout_marginLeft="16dp";
    ( e3 N, \, j; |& P8 Q
  41.         layout_width="fill";5 H7 f( Q! o( ^0 N! R% q" ^. a
  42.         layout_marginRight="16dp";) R1 D& Z/ c$ H) j) ^$ K
  43.         alpha="1";
    ) ^8 h' z6 ]& F
  44.         id=t.id2;0 d, ?: U) |' Q6 N" t
  45.       };
    ! C! V; v3 m/ b4 P# j

  46. 4 I. [+ l9 A) E% I* i
  47.       {8 ]' `7 ^, V$ \
  48.         TextView;
    ) J( z0 M7 u) u" q9 H
  49.         layout_height="1dp";9 H' v* \4 x/ j4 Y
  50.         layout_alignBottom=t.id;; C; D* V+ m9 }# H) D7 W7 k! W
  51.         layout_centerHorizontal="true";
    9 ~; f/ b: r5 ~8 P  Q( N
  52.         background=t.线的颜色2 or "#000000";. P& O+ ?. a- E
  53.         layout_marginLeft="16dp";/ v  a' m0 I: @, c' O  v
  54.         layout_width="fill";
    * r0 I) P! H% `! K
  55.         layout_marginRight="16dp";) `( I- D& n4 V  k6 N/ K' _
  56.         alpha="0.2";! g- m7 a* X1 _
  57.         id=t.id4;  E; `# z" n3 P9 ?
  58.       };
    $ m; G1 t  w* C. l
  59. ' U- ~% F( p  P$ _) [
  60.       {
    - x; H- m6 k2 R5 ~2 ?4 B- ]: K
  61.         TextView;; t8 Q2 }  T! }0 s* o6 c( H1 \- ?
  62.         id=t.id3;# k) y  w/ A7 t" Y, U
  63.         layout_marginLeft="24dp";) a9 U* V+ T* ]4 m2 G3 f3 ^
  64.         text=t.hint or "Pretend封装";0 v6 D& F) K$ i9 c( Z' }6 N/ ^
  65.         layout_alignBaseline=t.id;0 S' f3 @( i, [# q$ b0 U% \" U
  66.         textSize="14dp";
    $ g7 V+ f* }: ]5 i: c6 M
  67.       };
    : J9 B4 o6 V( K) y
  68.     };}6 h. z' h- T% \" Z

  69. 7 K/ V4 a! l$ u
  70.   值=true
    5 H- |+ D" z0 M7 `: I1 R1 T
  71. " Q% V' c$ r. D9 C8 c! k
  72.   lay.getChildAt(0).getChildAt(0).setOnFocusChangeListener{
    5 R: l2 R/ k- _% @7 o
  73.     onFocusChange=function( v, hasFocus)0 }3 l! O1 ^# q: a4 M
  74.       if hasFocus then
    8 u7 O& h0 f! z+ H/ @
  75. + w" u2 ]) [' m+ E5 J; b! T5 `% ?
  76.         import "android.view.animation.ScaleAnimation"; w. K7 k4 r5 o" l
  77.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(0.0,1.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))" c, q. m# Z5 G5 M1 Q: q( ^) _# h
  78.         lay.getChildAt(0).getChildAt(1).setVisibility(View.VISIBLE)
    % Y6 \3 x6 Z9 U* E7 t
  79.         if lay.getChildAt(0).getChildAt(0).Text=="" then
    2 R! D" |- g1 Q
  80.           import "android.view.animation.TranslateAnimation"4 L; B, S4 E* r* \& G! R
  81.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,0,-56).setDuration(100).setFillAfter(true))) B& u! ^& [: z3 c
  82.         end
    * y+ w  z* J1 w, q2 Y  n
  83. , k  O2 w* W* Y
  84.        else+ \, s  [2 ?  p% J0 q: c6 M

  85. 8 `" b- i: M" t, D# a
  86.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(1.0,0.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))5 o: q7 {4 b- m8 Q% W( m
  87.         lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE)
    & L- y% z. z3 O. F
  88.         if #lay.getChildAt(0).getChildAt(0).Text==0 then
    * K! V! U$ W8 S& g# w( b# e
  89.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,-56,0).setDuration(100).setFillAfter(true))
    # K# R7 G9 S8 A& W) x3 w$ S) m% m
  90.          else" n0 l( s" J. h3 R
  91.           lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688)* _' V3 K4 @7 C4 X. [
  92.         end9 s0 j5 y+ K: v' t9 C+ N

  93. ; y( t! Q3 _, d  W
  94.       end
    * W+ J+ Y* T) b5 P& d& l3 p
  95.     end}. k' O+ N2 R" w/ O  |" m& Y. i: x
  96.   lay.getChildAt(0).getChildAt(0).addTextChangedListener{# F# N# f# @4 k3 |( f, e. y# m
  97.     onTextChanged=function(s)
    5 u6 o0 Z' ]4 ~/ i
  98.       内容=tostring(lay.getChildAt(0).getChildAt(0).Text). J* x' G4 m5 D/ V" z, \
  99.       if #内容==0 then
    1 @0 E7 Z+ [! C7 z8 k  T
  100.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色2 or 0xff8b8b8b)) U  b" i+ F' e: i/ g
  101.        else
    / w0 E" |3 d+ B8 R. m% g# E
  102.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688)
    1 d- q# X8 Q0 T" q& G
  103.       end
    : |. N  Z$ d5 p, W" l: W
  104.     end# k: F) M! L* N7 Q1 |. W$ W
  105.   }
    # V  S* _5 V- L( e% Z8 g2 [( s
  106. ) f& ?$ t# I5 L9 o1 O3 y

  107. - v% v- k: y* x" T$ t* H. c$ C
  108.   lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE), G( M# s& o+ T" S

  109. 2 l+ C' P: J$ s' ^" |0 Y/ k
  110.   function 取消焦点(app)6 u. ]( T8 M0 Y8 Z# d6 M  \
  111.     app.setFocusable(false);
    / v( \- G0 p& a7 H" j- I
  112.     app.setFocusableInTouchMode(true);& j2 i% r- ~6 I0 Z
  113.   end+ F- W: w: O# W" u: h" `
  114. $ Y0 @: m$ D/ [* O" }0 }5 F
  115.   return function() return lay end' H# }- G( ?  U; c- Y+ J9 c- e  G
  116. end: {. `4 p8 H- |6 ]) ~
  117.   q! ~- x) S0 j9 q8 x' Q! c
  118. --主布局,导入封装模块必须在布局前面% X+ w3 \8 Z4 d( ?
  119. layout={: ^( e! R- d! G( L$ P! G
  120.   LinearLayout;
    * ^$ ~) B6 h& `
  121.   gravity="center";  a& F1 A% f7 _. Z6 P8 |
  122.   orientation="vertical";
    6 z3 v! [. _& o6 f: V% Q' f$ U! w
  123.   {
    + n9 E6 A, e( _1 O+ [
  124.     PretendEditText
    0 T: {$ h  s0 W3 W6 h; P& H( O  J
  125.     {% e3 t% Z8 Q1 i; g& Q
  126.       id="app";
    2 \3 n! x3 o8 U
  127.       hint="账号";
    ; C, W, l9 R- O$ c. t
  128.       hint颜色1=0xFFE91E63;8 m9 n- n: h$ Y6 m* n
  129.       hint颜色2=0xff8b8b8b;% S: f& P% A2 S6 E" c
  130.       字体颜色="#000000";- x. F8 X1 R* }( e
  131.       线的颜色1="#FFE91E63";! ^8 g7 ^! A; u# i4 Q% X
  132.       线的颜色2="#ff8b8b8b";7 u6 ~0 \6 x5 u8 G1 j0 y' f; o: r
  133.     };1 b' y# U- [3 y2 K( w" s) C/ R
  134.   };
    0 l9 D8 u( o, Y/ [
  135.   {
    + ]0 x, O. W" m2 \
  136.     PretendEditText2 c$ F- q$ T" I  t% b
  137.     {3 a, |6 C& {' s6 S
  138.       id="ap47p";- u# j# H" }) y% Y
  139. 5 k2 O) `' \# q* O
  140.       hint="密码";0 ~' o( ]( d4 N# m* ?
  141.       password=true;
      z& Q1 X3 j* e' [2 H4 _& R$ Z
  142.       字体颜色="#000000";, g; k8 p' i( b! L
  143.       hint颜色1=0xFFE91E63;" ~, i: ^0 F- a( O, R
  144.       hint颜色2=0xff8b8b8b;9 Q: k- N( F- W' q. {# }, h
  145.       线的颜色1="#FFE91E63";8 r6 B! B0 s) Y, q! ^8 S* |
  146.       线的颜色2="#ff8b8b8b";% ]# S% z) ?6 W6 S; o. h& O
  147.     };0 k" D* v! p$ Z7 w- a
  148.   };: l0 q" S+ l; k
  149.   {
    6 K( t7 y( G0 K+ @
  150.     Button;$ ^+ a7 t  k* X4 i) M  N- h5 q, m3 w
  151.     id="apo";4 ]! L8 w. X  K7 k$ L
  152.     layout_marginLeft="10dp";
    1 n7 C& Q! d! V3 H* v. b5 `; ^  R8 L9 T
  153.     layout_width="fill";
    / H' P( f' j( s* `, b
  154.     text="确定";; b, I2 E; |( B8 v6 K" @/ b" N  U
  155.     layout_marginRight="10dp";7 O% r$ n" ?1 s1 R
  156.     layout_marginTop="56";( [* o( H! Z# U
  157.   };9 d0 m5 r7 N- v3 D4 Y
  158. };2 r4 j2 f3 [1 ]7 }

  159. ' {6 t( T4 z3 k. q% Y& ^/ @' H3 D) B
  160. activity.setContentView(loadlayout((layout)))9 h4 v( g6 F6 ?1 s' Q+ R

  161. 4 G$ y) d; M. u) P& Y5 b3 u
  162. function apo.onClick()
    % ?) G, o& B" y  |  W
  163.   取消焦点(app)
    7 U$ _( p3 j0 C. {% K" E
  164.   取消焦点(ap47p)" X, o8 ?6 \7 I" j2 t. Q
  165. end% x" t7 r, {# E( \

  166.   Q( E1 r" u+ |2 Y' W& D. C
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区 |网站地图

GMT+8, 2024-3-29 16:59 , Processed in 0.051592 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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