登录  | 立即注册

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

查看: 889|回复: 0

[lua教程] 【lua教程】自绘制开关

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-7-1 08:23:33 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. require "import"* o/ E9 [& D% a* I& o
  2. import "android.app.*"
    $ c: J0 K$ q; E. c; @; `
  3. import "android.os.*"
    9 m8 |; c2 j' o- e
  4. import "android.widget.*"
    1 w) J' _) Q- K4 p1 j/ }) F
  5. import "android.view.*"
    % a3 F2 X, w1 P2 d7 j  h( t
  6. import "android.graphics.drawable.GradientDrawable"/ F- f6 g) B$ O. W
  7. ) D3 N; v8 L& j6 D6 c/ }
  8. activity.setTitle('AndroLua+')
    $ S7 O4 u0 ^% R2 @
  9. activity.setTheme(android.R.style.Theme_DeviceDefault_Light)--设置md主题
    ( b' T" Q3 n& ~
  10. activity.setContentView(loadlayout({. Y" X, V% M7 u9 o+ X" D+ h
  11.   LinearLayout;
    . n  m0 H+ y5 T/ d
  12.   gravity="center";
    8 i4 d1 `6 Y  Z( S4 ?/ |6 |
  13.   layout_height="fill";
    ; B, x, A8 h9 _, P/ I
  14.   layout_width="fill";- Z: w# a. ~0 ~6 g* h$ U
  15.   orientation="vertical";
    9 j' A* |. h9 l, M* W" \3 y
  16.   --BackgroundColor="#ffffff00",
    : V/ M' r. c$ v* S% w
  17.   id="fhhk";% K/ H# d9 V! S4 ~7 K( y+ T' z
  18.   {1 m: ?7 w7 v7 h9 v9 Q
  19.     Switch;9 k0 o7 [! x2 z$ p3 V
  20.     id="Grt";2 X  @" f5 w7 X* w" n+ G  w
  21.   };$ J+ K: Q9 Y* @8 z
  22.   {5 m- [5 C+ u- y1 ?1 u0 d. W- u9 a
  23.     Switch;8 Q5 V2 f" ^/ J5 \) M- y  _( p" E
  24.     id="Grt1";
    7 C2 w4 B. S8 V( |7 n
  25.   };
    ; \5 b# p3 X2 z  ^+ ~' ?
  26.   {
    % k' R8 a9 P5 \9 N% Y
  27.     Switch;  a  E# s- M+ }' u; q
  28.     id="Grt2";! W/ k+ j4 f. ]8 I& r$ V" O
  29.   };
    : C, o" j% |: V$ Q4 G* n' \& r
  30.   {+ Q/ f$ c# O- ^, ?, w
  31.     Switch;
    7 {3 G9 z8 V/ l
  32.     id="Grt3";2 h  N, N; ?5 p* z1 w
  33.   };7 P7 u5 H" Z4 ]1 t
  34.   {
    4 _  Q0 E6 h/ B, p" J$ S
  35.     Switch;" E9 U1 c" X( \' b, P: @
  36.   };+ M" E0 e- H  ], A& n0 U- }6 ?
  37. }))
    " W& Z( C7 h8 [+ |
  38. ' c9 k# e3 A, ]' h0 r5 G; e
  39. --转换像素单位
    ( z" X; f8 {4 W6 Z$ `
  40. dip={toPx=function(context, dpValue)
    3 e8 E% H0 e. X
  41.     scale = context.getResources().getDisplayMetrics().density;
    - i: {7 U" P" A# T# r, k
  42.     return dpValue * scale + 0.55 i. K6 `( w8 r$ ^0 L) A' u
  43. end}% f+ d( @" W$ X3 Z% }
  44. ( k0 N  M0 R! ?( H* j; A
  45. function CircleBack_SeekDra(InsideColor,Ad_Size,ble,Colorse3)
    % ]2 O9 v6 A6 l6 ~. K% O% ^* k
  46.   local colors = InsideColor
    : E& `1 w, p$ K% i; d' p/ d) e/ s
  47.   local Sizes=dip.toPx(this,Ad_Size)--设置开关大小
    9 c& X+ H4 b% }  N* ~. m
  48.   local Stroke=dip.toPx(this,7)--设置拖块边距
    6 z7 w4 ?/ `) J5 ^* B4 N- |
  49.   local Track_Stroke=dip.toPx(this,0)--设置背景边距
    1 L* r$ l' D( C+ B
  50.   local drawable = GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,{});' V8 p( w9 Y( z4 k
  51.   drawable.setCornerRadius(Sizes/2);, b3 B+ h3 B7 C  I& @! V
  52.   drawable.setColor(InsideColor)
    ( h  k0 V: r3 y0 p! b! f0 G
  53.   if ble
    6 A  t2 ?4 n4 e( `6 w
  54.     drawable.setStroke(Stroke, 0x00ffffff)$ Q; u# }- i0 f. T; u, X
  55.     drawable.setSize(Sizes,Sizes)
    + x5 N% J% U- r  I4 r3 }) n2 N! Q
  56.    else
      ~0 A' F" X9 q( j- h0 q8 R
  57.     drawable.setAlpha(60)8 ]; ?( `2 T+ S8 A
  58.     drawable.setStroke(Track_Stroke, 0x00ffffff)
    4 ?5 G( h) Q* T) Z. |
  59.   end' K8 y8 g8 S% M7 G& t" E4 o* A$ I
  60.   drawable.setGradientType(GradientDrawable.RECTANGLE);
    , c% ?& M9 W6 J/ D( D, I
  61.   return drawable
    2 T  y5 P: f. {* f. j
  62. end
    $ V  C5 O" c% f$ G

  63. 2 g! l) Z# K1 `6 m  t( L$ D' {' \  a
  64. Switch_x=function(view,Colors,Colors2,Colors3,Ad_Size)
      t/ v# X/ j. _( j: K
  65.   pcall(function()
    9 h0 M6 _: p. @6 Q, d$ b
  66.     if view.isChecked()
    , z2 Q$ _# O2 y
  67.       Colorse=Colors
    % X5 a1 N7 X! t6 f5 ^
  68.       Colorse2=Colors  x8 b6 i! E; O& X2 C
  69.      else
    . J9 R+ o8 P1 [* ?" u9 w% z
  70.       Colorse=Colors2
    . a* e6 s4 d( b$ I9 o
  71.       Colorse2=Colors3
    $ a: H. h; `! G) V3 L9 v
  72.     end
    : o1 b# P3 x% H
  73.     local padd_W=dip.toPx(this,Ad_Size/2.5): x8 j+ `- y5 ?1 a- R2 F9 v
  74.     view.setThumbDrawable(CircleBack_SeekDra(Colorse,Ad_Size,true))
    / `* O2 `' v8 V) c
  75.     .setTrackDrawable(CircleBack_SeekDra(Colorse2,Ad_Size,false)), h3 ], B3 W+ a& W
  76.     .setPadding(padd_W,padd_W,padd_W,padd_W). [- ~* N  T: x( y/ s2 t: i
  77.   end)
    % z2 H/ A& X% t- b
  78. end
    ( w$ Q# ~+ W7 P* Q! U
  79. " I, S! _  k7 [! _% ]4 p
  80. Grt.setOnCheckedChangeListener({& w7 [, A6 ^2 j. ?" K
  81.   onCheckedChanged=function(buttonView, isChecked)! N3 e) j" ^7 \9 x& [( {$ A
  82.     Switch_x(Grt,Ad_Color,Ad_Color2,Ad_Color3,Ad_Size,Ad_Padding)--更新状态
    " u( k! h9 P5 v/ j) G5 x
  83. end})
    0 X. N9 P* r, W% k  T( K% H7 Q: B
  84. Grt1.setOnCheckedChangeListener({& G8 I! d" I5 U# M
  85.   onCheckedChanged=function(buttonView, isChecked)
    ! E& I0 L$ O. K2 ?4 i
  86.     Switch_x(Grt1,0xffff6e17,0xFFECECEC,0xff000000,35,7)--预加载
    6 P' c# M3 p" e
  87. end})
    5 g' o1 p& n- m8 h* h0 Q2 t+ F  B+ E
  88. Grt2.setOnCheckedChangeListener({% y1 H8 a: b& R) N. k$ F# `& C
  89.   onCheckedChanged=function(buttonView, isChecked)$ ^' `* o% G8 \* w' P7 t* R
  90.     Switch_x(Grt2,0xff2ecbff,0xFFECECEC,0xff000000,45,7)--预加载/ {" f5 I, [4 w
  91. end})  t" n: B4 B/ Y7 m/ C; W
  92. Grt3.setOnCheckedChangeListener({
    5 ^1 w1 Y, ?$ f% q9 L( e7 l; V9 q
  93.   onCheckedChanged=function(buttonView, isChecked), V  \4 I. y% ?2 {
  94.     Switch_x(Grt3,0xffae5dff,0xFFECECEC,0xff000000,55,7)--预加载
      X+ O8 |( j' Y3 Y1 y
  95. end}): n# ?; g, }3 B# L* R8 Y
  96. / K& u7 e) w; Y1 W
  97. Ad_Color=0xffff0000--边框颜色与拖块选中颜色
    5 i" B. {1 A% V7 t
  98. Ad_Color3=0xff000000--设置底部背景未选中颜色
    , O9 E3 v) N/ I/ J5 I. K5 b  w7 O
  99. Ad_Color2=0xFFECECEC+ Y. Q+ n8 F3 G( x2 H! X. U
  100. Ad_Size=25--按钮的大小dip
      b& s+ g, M5 |  x6 I& C7 e/ L" A# X
  101. Ad_Padding=7--设置拖块边距范围dip
    0 d1 t( U- t: Y
  102. Switch_x(Grt,Ad_Color,Ad_Color2,Ad_Color3,Ad_Size,Ad_Padding)--预加载! ^: m  N: J, F( K
  103. Switch_x(Grt1,0xffff6e17,0xFFECECEC,0xff000000,35,7)--预加载
    6 Z) u; J' Z% Q, w
  104. Switch_x(Grt2,0xff2ecbff,0xFFECECEC,0xff000000,45,7)--预加载
    " [: w5 p9 o& Q1 z. D' f5 W
  105. Switch_x(Grt3,0xffae5dff,0xFFECECEC,0xff000000,55,7)--预加载
    ; h2 [9 G: D$ l* ]& `. \! f- ~

  106. " E3 e# }* t& W. Z$ V. k3 t0 Y
  107. 来源:代码手册 Robin
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 08:18 , Processed in 0.055308 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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