登录  | 立即注册

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

查看: 1487|回复: 1

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

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-7-1 08:46:20 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. --编辑框封装8 {. _6 R6 h$ ^( I* X7 ^, d  X
  2. --Pretend
    5 X+ L1 n. z! R) E% w5 X8 D
  3. require "import"
    ( U$ s* y- h) o2 L
  4. import "android.app.*"( C& H- K+ g: F+ W+ b
  5. import "android.os.*"
    6 S( s7 q5 l7 t! o
  6. import "android.widget.*"
    $ `+ u* ]3 _3 Y, o, ]" g$ @
  7. import "android.view.*") ], k! G# T0 v. n7 E
  8. . ~; d* t  a# I8 h+ S' ]& V
  9. function PretendEditText(t)--编辑框封装( }0 C" i7 q" t1 W+ q7 j
  10.   local lay=loadlayout{FrameLayout," p: `. y/ p5 V( c8 R0 @6 C  D7 L
  11.     {
    + k0 Q2 X* q' z8 L* h- M. p, ?: s, H! K
  12.       RelativeLayout;3 N4 c3 Y# s0 F: Q6 H
  13.       layout_width="fill";
    7 I+ L. b2 z( c( V; g; H: Q
  14.       focusableInTouchMode=true;8 l2 T! z  U, d1 c2 ?1 E- k
  15.       focusable=true;
    ' r1 B! [" F, n7 l$ Y8 |
  16.       layout_height="fill";/ f/ O/ H7 r: x& d" {
  17.       {
    / ]1 {, K3 U( v5 V/ @
  18.         EditText;
    . m; @2 H, B- d4 H3 ]
  19.         layout_height="wrap";
    ' A1 q3 j; o1 l. v4 {& x# r
  20.         layout_marginTop="56";1 N5 H+ ^* X: T8 L5 _
  21.         layout_centerHorizontal="true";
    $ Y+ [# i4 ]/ }# F- Y2 r& B
  22.         textColor=t.字体颜色 or "#000000";
    / Z6 p& E& _* |4 z9 n. M$ u/ h
  23.         textSize="14dp";2 Y' ?2 h3 q, h, M( {8 U/ T
  24.         background="0";' t9 J/ j+ \4 ~
  25.         layout_marginLeft="16dp";4 G9 N" U- q0 w2 |5 S9 m
  26.         layout_width="fill";
    $ d* u4 |5 i+ X8 l
  27.         layout_marginRight="16dp";7 D; B4 n: g, \1 `( n) \
  28.         id=t.id;$ }# x1 V3 v: b9 S; x1 r* z1 P0 q
  29.         password=t.password;4 Z0 g/ A( Q6 {; N* [2 }8 R9 F
  30.         singleLine="true";8 b1 H. T+ {5 S
  31.       };+ Z# |, W" t# @: X* y

  32. 5 F( t; e9 I+ _# U% V; v

  33.   a4 A; z7 I$ L- s3 d, |% M
  34.       {
    % {, h% q* V4 _+ k3 F; l
  35.         TextView;
    0 |6 Q$ H% i# Q3 g$ y
  36.         layout_height="2dp";
    1 ~& L' @! k5 n, D
  37.         layout_alignBottom=t.id;# P- k5 G" K* g% v- z
  38.         layout_centerHorizontal="true";3 B% x5 ^2 W4 Q" |
  39.         background=t.线的颜色1 or "#009688";  Z( M$ j, M! B% Y
  40.         layout_marginLeft="16dp";
    ) ]) I) C$ \/ F" K
  41.         layout_width="fill";
    7 j9 q, W2 t6 U) o1 S, |6 Z5 o
  42.         layout_marginRight="16dp";
    4 l& |( ?' z0 L0 u' B
  43.         alpha="1";
    ) H- K' ^2 N) f; R3 U
  44.         id=t.id2;6 u/ M# J6 ]! }% \; q4 F0 j
  45.       };  l2 e$ `' [& y; U- L, t. ]9 x

  46. ' d5 A0 w# ^) W& @
  47.       {! c2 g8 z, x. j. G9 t) S
  48.         TextView;
    8 P9 C8 L# t- N6 C* k8 ]2 g
  49.         layout_height="1dp";
    * e3 z" q; n: Z
  50.         layout_alignBottom=t.id;" I" `4 r0 f: t5 ]5 ^
  51.         layout_centerHorizontal="true";: a) C, T9 {8 w7 d7 O8 y, _& W
  52.         background=t.线的颜色2 or "#000000";
    7 F" e. m9 ?' P' r; O% n
  53.         layout_marginLeft="16dp";
    % S2 Q' E& ^6 `* w# v1 {' g
  54.         layout_width="fill";. y, _9 m( K& d5 [. k4 a1 t1 k
  55.         layout_marginRight="16dp";3 H) n. Z6 [% |% K- c" r1 g
  56.         alpha="0.2";
    7 E, j8 A  W' g0 h+ t# P# R; S
  57.         id=t.id4;
    . Y* @. b+ T* D' |; G5 B; B  R
  58.       };
    " l# |  A: p6 A4 O

  59. ! k: ^2 |' F; u, q! S5 T( O9 d
  60.       {
    ; P- G8 p5 \* H+ k" f
  61.         TextView;
    ! T9 G3 r- |3 |& {7 J. X
  62.         id=t.id3;
    ) Y; {/ Z; [& N
  63.         layout_marginLeft="24dp";
    * r) m5 {. ?$ [1 C7 z
  64.         text=t.hint or "Pretend封装";" [0 [5 U: x3 \: J- K
  65.         layout_alignBaseline=t.id;
    ' Z3 r6 K8 ~& X
  66.         textSize="14dp";
    " s- e9 J; m# _; J+ [' l0 e
  67.       };
    2 J0 l0 Z- r" c# }) B
  68.     };}
    # _- y% h  B4 K$ [4 O4 N8 t
  69. 7 @0 |6 ?9 L) z2 O- L2 y
  70.   值=true; ?7 L0 a& D4 m; W6 j

  71. 6 v0 q$ O, v& `% }* z/ W& m  S
  72.   lay.getChildAt(0).getChildAt(0).setOnFocusChangeListener{: U& ?. N, Q2 J3 Y
  73.     onFocusChange=function( v, hasFocus). U, Z5 {) z9 V. a& K! B) j, z
  74.       if hasFocus then( n2 E! d/ w9 G$ x0 D
  75. 1 H! Y4 X: K3 g& L  d
  76.         import "android.view.animation.ScaleAnimation"  G% k+ Q* ~/ y" [
  77.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(0.0,1.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))
    ; q: |0 |3 {, P+ S- H3 J8 f
  78.         lay.getChildAt(0).getChildAt(1).setVisibility(View.VISIBLE)
    / _! N# l0 D6 ]5 X& \" [5 W
  79.         if lay.getChildAt(0).getChildAt(0).Text=="" then
    / u% h+ T1 h- W+ |
  80.           import "android.view.animation.TranslateAnimation"
    7 g4 {% R6 w% {9 m) ]
  81.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,0,-56).setDuration(100).setFillAfter(true)); G$ |2 f0 r. V4 s* |
  82.         end2 X' N9 D* l3 _+ Y! m7 _

  83. # g. X6 ~. x+ [4 z- _
  84.        else
    / }' b: c8 T% M9 @- A6 ?
  85. 1 l' B' z# w6 Z9 {! R4 H7 v$ Q
  86.         lay.getChildAt(0).getChildAt(1).startAnimation(ScaleAnimation(1.0,0.0,1.0,1.0,1,0.5,1,0.5).setDuration(200))0 S: O/ P8 w- p
  87.         lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE)
    2 ?3 A5 b: V: P% x0 U
  88.         if #lay.getChildAt(0).getChildAt(0).Text==0 then
    6 ?' x( Q* N6 p
  89.           lay.getChildAt(0).getChildAt(3).startAnimation(TranslateAnimation(0,0,-56,0).setDuration(100).setFillAfter(true))/ C3 C. }. `; ~/ c1 j( @
  90.          else
    $ k5 T2 z9 F" ^- H& F
  91.           lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688)
    9 ^5 z- {9 b% h! g- \. S; y
  92.         end4 q3 Y+ F4 X" D" G
  93. 8 v: o& ?, C: U2 j9 j) C) R/ x
  94.       end7 i$ u! p5 z+ P0 X' O+ M$ H7 B$ u
  95.     end}
    / i% |4 z) A1 K" l
  96.   lay.getChildAt(0).getChildAt(0).addTextChangedListener{3 s/ M) c7 ?0 N- |+ E
  97.     onTextChanged=function(s)" B5 W2 o) k8 K) z4 p: A
  98.       内容=tostring(lay.getChildAt(0).getChildAt(0).Text)
    ; B- C1 I+ p6 P) q/ b3 q3 l# S
  99.       if #内容==0 then
    9 p& ~+ d# P- r1 }
  100.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色2 or 0xff8b8b8b)+ q# N4 X, i( n1 D3 q
  101.        else3 u6 {1 @+ B4 _8 M  s
  102.         lay.getChildAt(0).getChildAt(3).setTextColor(t.hint颜色1 or 0xff009688)
    - t' b/ H; i; }8 o& b
  103.       end! U& H" w1 A9 S, }- }! P
  104.     end
    9 Q6 x  ^2 ]) M- J& ^) U
  105.   }
    $ F2 Q! h# j) M- v! N) x
  106. + B! {# s( h, ]$ Y* K

  107. . W. e) T$ J2 `
  108.   lay.getChildAt(0).getChildAt(1).setVisibility(View.INVISIBLE)
    % ^% h6 N6 V9 c& Y/ j# z
  109. 1 X: d" C; d3 }1 e- t+ p
  110.   function 取消焦点(app)# B9 s6 E4 W8 q" N' H. _$ o5 U1 `3 {
  111.     app.setFocusable(false);/ P# b9 h! `2 O" z. H5 C5 v
  112.     app.setFocusableInTouchMode(true);4 O% a" G' v5 Q" H- U
  113.   end% k4 n; L  z2 E+ i. A

  114. , Q. z- H; b7 s0 r6 [
  115.   return function() return lay end- O- m& H; \4 \3 M# Y$ {
  116. end
    6 W/ s* n2 P" q% G% @2 A' k2 W

  117. # \! U2 ^3 I$ ~! E* D6 ]
  118. --主布局,导入封装模块必须在布局前面0 p4 H0 ?% I9 Y
  119. layout={  e; T+ {8 O/ z) p8 F8 b$ e
  120.   LinearLayout;* n5 F( l7 G0 I+ \& c  k/ K
  121.   gravity="center";
    : ]8 H- A7 L* f! |% r$ X
  122.   orientation="vertical";
    0 r# h, |" E) n7 a0 C; v
  123.   {% z, y% [6 L+ c0 Q- ^) T
  124.     PretendEditText
    * d1 _9 v7 u# X# X
  125.     {
    2 A, e, _8 i  d* Y  s1 v6 @
  126.       id="app";! J% h% \  v3 p" |9 g+ h+ C9 s
  127.       hint="账号";
    ; Y# A2 d# Y6 F% w
  128.       hint颜色1=0xFFE91E63;
    ! u' S0 R, r- v; ?+ y7 y) N; N
  129.       hint颜色2=0xff8b8b8b;
      i* m: a5 {' N; R: ~
  130.       字体颜色="#000000";$ P6 @$ a7 B+ F5 z7 R  s# n
  131.       线的颜色1="#FFE91E63";1 ?# b9 M7 C: H0 k: h4 e, F
  132.       线的颜色2="#ff8b8b8b";
    9 w( f' h& z# G6 @  k2 N
  133.     };
    8 E0 n+ J( B9 }- z
  134.   };
    & R, e! U7 D5 b5 T) E& J. V( r
  135.   {" e4 m5 _: I1 y$ X2 x/ f# f) V
  136.     PretendEditText( Y0 v5 @# w4 N0 g: R' i
  137.     {: `$ Q: C+ J) o/ l& U4 w. K
  138.       id="ap47p";; `- R+ p+ X* [1 i

  139. * v& }# }; s' p& {  v" F
  140.       hint="密码";
      {! k- }+ b* V
  141.       password=true;1 O$ i: e4 a+ c
  142.       字体颜色="#000000";
    " |3 j) I$ Y* D% N! x! T% p, {. Z
  143.       hint颜色1=0xFFE91E63;" p' H3 C- P! e' U0 U2 C0 y
  144.       hint颜色2=0xff8b8b8b;+ z8 L" L9 ^5 W5 Q1 @
  145.       线的颜色1="#FFE91E63";: D. S3 E9 Q% n& S! E
  146.       线的颜色2="#ff8b8b8b";  {( E. q; ?2 ^6 u. u, X8 r2 |
  147.     };( B4 m# a7 Z8 J6 X9 g! p  V  N
  148.   };2 u7 s: m8 L: D4 }0 P
  149.   {' L/ f2 M' p( j: q6 H7 E' ?& P
  150.     Button;
    6 f4 e/ H( D1 W1 T' K6 q) @8 c
  151.     id="apo";, r, }" ~9 g" M/ o1 q3 o/ h
  152.     layout_marginLeft="10dp";9 m2 f* G' ~5 L- n3 d
  153.     layout_width="fill";
    ' x4 O- m  x7 d  W7 R5 L
  154.     text="确定";
    ( |3 \/ F9 X( J/ |
  155.     layout_marginRight="10dp";
    1 x2 D0 s+ F& Z& T& c" i& O
  156.     layout_marginTop="56";
    ! k* e$ Y. h* b; [" k; B- V! d
  157.   };
    , F, O& e- @" G1 D7 j; k
  158. };0 x: t- v& u; T! b, U
  159. 6 b8 ?' R- G/ ~1 @2 X% \6 v. d
  160. activity.setContentView(loadlayout((layout)))
    ! H  t. }# Z1 j, F" W( i' d& |  ?( q

  161. . n( S+ m! g% C
  162. function apo.onClick()% b) X# y. w; m1 F; h' U
  163.   取消焦点(app)4 ?2 d) T2 O* J6 }
  164.   取消焦点(ap47p)5 x# S+ J; |" z- _( N
  165. end+ z$ L. Q  C& P

  166. : I3 y  g8 H! _. I' D/ @: C- V
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-24 23:29 , Processed in 0.054614 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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