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

星空社区

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

[lua教程] 【lua教程】绘制纸感标签

[复制链接]

407

主题

472

帖子

1622

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1622

荣誉管理论坛元老

发表于 2021-7-1 08:38:03 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. require "import"
    ) c) P7 d- [, T% S/ u) z, c0 H
  2. import "android.app.*"( R& z. w! S8 D9 @  ^: K
  3. import "android.os.*"1 E% N0 F8 |9 A8 P
  4. import "android.widget.*"
    ! w) u/ |5 S( `: p
  5. import "android.view.*"
    6 |/ I2 O6 G+ U9 N# |% n
  6. --分辨率转换函数- U- r$ z; f& W3 s6 Y
  7. function 转分辨率(sdp)
    3 P) o, d  l* J# k9 A+ k
  8.   --导入所需类  F' p8 U. g/ c8 `
  9.   import "android.util.TypedValue"
    " z; @7 Y+ ~, G$ K  I: d) L

  10. ; J0 b! P& X* K6 @& [
  11.   local dm=this.getResources().getDisplayMetrics()' X) |% P# U* s" \2 ~5 \5 J

  12. 1 G  s) |0 s% J( S0 k4 e
  13.   local types={px=0,dp=1,sp=2,pt=3,["in"]=4,mm=5}5 {9 U9 ^" W& A! W

  14. $ f- K' i/ _3 |8 ~
  15.   local n,ty=sdp:match("^(%-?[%.%d]+)(%a%a)$")
    $ V1 h* n. z. r) a
  16. & O1 C+ [' ]3 F8 q4 b
  17.   return TypedValue.applyDimension(types[ty],tonumber(n),dm)
    8 A" b8 t% h6 N& K3 D, t

  18. * ?8 [' J# J' Z& H9 @  a/ N
  19. end
    6 g# m+ o3 E1 f8 S) |8 B3 b

  20. 1 O" a# V! X3 Y( m

  21. ' m) ^' s% c! w7 X: N9 u' S
  22. function drawTag(); j2 Q/ J+ W" ]8 ?/ V- m
  23. # I+ M/ |. h- f$ s
  24.   import "android.graphics.RectF", A* L) R2 i3 X

  25. ' G, N( n0 R) Y/ f+ v. L
  26.   import "android.graphics.Point"
      A" w' p; D# P) i
  27. 9 x5 B6 p$ _* R0 H) \2 k
  28.   import "android.graphics.Paint"
    ! S6 |7 A8 w) X
  29. " D) I! z; e# `
  30.   import "android.graphics.Path"
    + W" u0 ]/ d% {2 n/ }2 @/ `% }
  31. / w1 [+ K: t# v' A3 I
  32.   import "android.graphics.Color"; Q- V4 O) {: M9 X  w- h
  33. 4 @3 r8 A! i, F4 L- x/ {
  34.   return LuaDrawable(function(c,p,d)! U6 ?6 o- @2 ~8 L/ H  Q1 o

  35. 3 P& P( ]" A1 M$ Q9 p& m
  36.     c.drawColor(0x00000000)
    7 G, Y# R6 d/ M) z. Y" J& X
  37. - i- Z1 i1 E" B7 z; P! y& s7 G
  38.     p.setAntiAlias(true);/ S, i1 H! Z2 g

  39. , Q% t' Y1 n9 m& t4 J
  40.     p.setStrokeWidth(20);
    , E$ c. c7 p5 |  O+ b! ~6 z# ]
  41. : M/ Q3 o" u% }- z, F( B
  42.     p.setStyle(Paint.Style.FILL);! d! B) Z5 T3 \9 Z, F% u# z/ h

  43. 6 O' M8 _$ b3 E, g: w( K6 `2 |
  44.     local quYu=d.bounds
    * B: W- Q* H, f$ s- P( o

  45. 3 b6 U% ]5 [" X% h* o8 l
  46.     local width=quYu.right: N8 g$ y3 ]2 Z6 A

  47. ) `+ c( W6 t! A6 w
  48.     local height=quYu.bottom# J5 t# S  j2 q& G

  49. % d$ r$ L. @1 m, K
  50.     local radius = 转分辨率("12dp")& }& ~# L0 e# C2 w. }

  51. 8 R1 I, W& l# n- \% g8 Q7 K( y
  52.     p.setColor(0xffffffff)
    ( S! ~: I) F  b; E* i
  53. ! K* c& |" d: B2 u: y# b/ l
  54.     p.setShadowLayer(25,0,0,0x22000000)+ ~# c5 P9 m( t* K2 d

  55. * I4 t7 {; v6 C$ f/ Z+ ?- W0 p
  56.     local path=Path();
    ( o) f6 k7 w: y1 G

  57. + u$ R" U& w9 M$ E5 o
  58.     path.moveTo(0,radius/2);# A2 G, J% x$ i2 d3 D! e9 s1 R

  59. - M4 I- o( u7 {9 |$ P( I* w6 {, ^
  60.     path.arcTo(RectF(0,0,radius,radius),180,90);( l" e' n7 M  f; X3 ?
  61. ) i! v4 p6 m: E  ]
  62.     path.lineTo(width-radius,0);  F. ?- c$ e: {6 _

  63. 4 {; q2 {. {% H
  64.     path.arcTo(RectF(width-radius,0,width,radius),270,90);. H" ]% b  f% R* Q

  65.   L  I2 ^; B4 a& N" T; a, D
  66.     path.lineTo(width,height-radius/2);
    5 b3 L( ?6 R! ^. ~  C; t, G+ z

  67. 7 E* a" }& p  I9 J$ g: d, P( J! ?2 o
  68.     path.arcTo(RectF(width-radius,height-radius,width,height),0,90);
    ' o: T+ D0 e: C: k9 P! X9 F

  69. 4 z- M, C/ y  ^4 F
  70.     path.lineTo(width*.06,height);* |& |# B& {& R1 R$ o* d2 E
  71. + q' ~6 B% w) E! P- j* C
  72.     path.lineTo(0,height-width*.06)
    ) p) ~" O4 V( j, }
  73. . y9 Z* L$ u2 `2 Q! {7 ~! N) Y
  74.     c.drawPath(path,p);- |+ Z4 ]* h$ j: V% w) j
  75. $ d4 ]! D; s; C( T
  76.     p.setShadowLayer(15,1,-1,0x22000000)$ @$ y$ h- V- E3 Y; a% l
  77. : r; T  f( L$ |. K* J& ~
  78.     local path2 = Path()
    5 }" |+ ~5 d; p3 b' b0 ?: S

  79.   J$ \) B1 B, b1 g
  80.     path2.moveTo(0,height-width*.06)0 B- t1 d+ o# z9 r7 y. N5 P

  81. ! E* C3 V; n7 o: H( J
  82.     path2.lineTo(width*.06-radius/2,height-width*.06);/ ^; h  l, W% Q+ g

  83. * a+ B) {1 I$ c) T$ f9 `6 d
  84.     path2.arcTo(RectF(width*.06-radius,height-width*.06,width*.06,height-width*.06+radius),270,90);
    & }! f- I2 z2 p6 b4 U
  85. : c* D2 A4 @9 d' M/ T
  86.     path2.lineTo(width*.06,height)& G* A* x1 G/ |, Z8 o* l

  87. ! E0 g2 c0 y& x. Y2 l% p" \
  88.     c.drawPath(path2,p)
    ) P9 i. a# w$ f- r# T6 G: S
  89. , [# Y. g" r, ?2 x: [7 Y6 T) X1 e
  90.   end)+ }& G) R1 v3 [) s. [: s

  91. + l$ {) V- T. v$ }  ~* h- @0 [; |
  92. end
    : t0 v  a$ L: K$ s' L
  93. 6 N$ z. G/ T/ @

  94. . G" E, p2 [  n* b* J; e
  95. 8 R& [* j: }  u& f& z' G
  96. + c' _+ ?* G  c# s( y0 a

  97. 0 r4 S/ h; M7 ]2 R% p8 R
  98. function setTxt(view,view2): P0 `$ N- `- s  `6 N/ u7 H
  99.   local txt={"不好意思,我把你弄丢了。",/ E% ]/ q) s7 Z2 z9 ^, j  x+ E
  100.     "长风破浪会有时,直挂云帆济沧海。",% A  r# y# z/ D# Z' N
  101.     "你是无意穿堂风,偏偏孤倨引山洪。",
    9 d& G$ k1 E2 O# Z/ \3 t$ J
  102.     "愿你天黑有灯,下雨有伞,未来的路有良人相伴。",4 q4 H4 O. A6 I2 {
  103.     "我有一个梦,也许有一天,灿烂的阳光能照进黑暗森林。",
    % }* {# Q1 N+ y5 ~6 h  o, K
  104.     "自古美人如名将,不许人间见白头。",
    9 k/ O5 e% B; T& ?
  105.     "什么都无法舍弃的人,什么都无法改变。",
    8 d$ O2 n6 ]' F+ J6 n( e, f
  106.     "天不生我李淳罡,剑道万古长如夜。",
    4 ^& M9 {, E6 z' F& a( C
  107.     "斑竹枝,斑竹枝,点点泪痕寄相思。",
    3 n4 `- R+ u; C$ @
  108.     "一切都会变好,超级好,爆好,无敌好。",
    ! Q3 W! o' D% ~7 ^
  109.     "把喜欢的一切留在身边,这便是努力的意义。",
    7 |5 |: y9 d. A% C3 M. v* u
  110.     "悲喜自渡,他人难悟易误。",5 x: X6 D; C6 i. t1 s. `; }" v7 S/ I6 D5 b
  111.     "且以深情共白首,愿无岁月可回头"}. ]: D3 g" A- O& f  p* Q
  112.   import "java.io.File"0 F' H, a: J6 `) k3 o4 Z
  113.   import "android.graphics.Typeface"
    6 [0 @  y- H% f8 j& c
  114. -- local bf=File(activity.getLuaDir().."/hkhbt.ttf");+ E( c) h0 ~& X5 R7 n9 i
  115. -- local tf=Typeface.createFromFile(bf)$ ?  I4 p5 D/ P$ b
  116.   view.setTypeface(tf).setLineSpacing(1.6,1.6).setLetterSpacing(0.13);
    4 l* K) F" j7 ]% C- J7 w: d
  117.   view2.setTypeface(tf).setLineSpacing(1.6,1.6).setLetterSpacing(0.13);5 m! p& L* h: v- Q
  118.   Http.get("https://v1.hitokoto.cn/?encode=json","utf8",function(code,content,cookie,header)0 u9 O/ M1 u3 b( n
  119.     if code==200 then- l% E) }2 k) m! y1 X- U
  120.       local cjson=import "cjson"1 o9 O+ L5 |- ~* a7 f, s
  121.       local json=cjson.decode(content)
    0 u- C% S2 Q. [: w% t
  122.       view.setText(json.hitokoto)
    / ^% y( r4 r5 f# W8 g' p- Z
  123.       view2.setText("——"..(json.from or "未知作者"))
    / y1 q% l8 v3 Y) V% E% x6 w- C
  124.      else
    " J! R" @- I5 K' M* d; G2 r3 }
  125.       view.setText(txt[math.random(0,12)])
    % i- C! l- g% l- p, n
  126.       view2.setText("——没有网络")1 M: x, L) m7 Q3 W
  127.     end
    2 o! x5 w, l; I; w, _) ]% Z8 l
  128.   end)
    " g0 s: `, y& d! D; S9 `$ N
  129. end
    . g- z: |6 c" F- ]+ q! L, {' A$ M
  130. ' e$ \' o% g& q$ X

  131. 4 W' ]# i: F9 L! D
  132. * L6 N/ N0 y) i0 q; U$ I

  133. 3 c$ e" {0 U% O

  134. ' I5 c! u1 q  u0 e  a( o7 L. @, K  h
  135. layout={
    ( y; n  m7 r, A0 X! W& s
  136.   FrameLayout;
    # y  O# ]6 p% p1 g4 a$ G
  137.   layout_height="fill";
    & {  N, v# d0 Q( w/ ~1 L: _/ w
  138.   layout_width="fill";! a2 r1 W) P, N' Q
  139.   clipChildren=false;* \8 a/ V0 P- m0 L
  140.   background="#ffffffff";
    - q1 r: ^. j! n& g+ Z
  141.   {: t8 F6 u6 z0 z' \! y+ O
  142.     LinearLayout;
    5 g9 ~7 {- o! ~( f& s
  143.     layout_height="30%w";
    " d$ u0 h, N' f6 m" H
  144.     layout_width="90%w";
    7 C8 T0 ]& S4 C  P( E
  145.     layout_gravity="center";$ B6 d; b" N5 }8 p% ~: J8 V" N
  146.     backgroundDrawable=drawTag();2 _) `0 W4 W7 i, ^1 q
  147.     orientation="vertical";* K6 Z( N3 C6 ]- ]& |( y$ F
  148.     {( V1 b* s1 \& X& q
  149.       FrameLayout;/ O* e! _2 R9 F7 R0 m
  150.       layout_height="fill";
    ( f4 a0 _3 H3 a  n) ]4 ?! H
  151.       layout_width="fill";: t6 Q4 s, T/ f' I- q7 m* R
  152.       layout_weight="1";. v) }* X) a% `) |7 ^. L
  153.       {
    - a$ u' y. F8 X3 ]
  154.         TextView;/ T% m9 E" a( @5 s, c1 Q
  155.         id="yiyan_txt";) B6 p7 A( K3 s9 P4 e
  156.         textSize="13dp";2 S/ e5 D+ P$ I' O# Y0 R- l
  157.         textColor="#ff333333";( U! i# B) B4 m) H$ W: H8 ~3 W
  158.         layout_height="fill";
    6 ]" \( \1 j6 D$ s
  159.         layout_width="fill";* N3 h+ t. Y7 t8 G0 X4 s- v
  160.         layout_margin="15dp";
    4 o8 {) r- D# b" P- \; j9 R
  161.       }2 U# [; r+ W& a6 D* f! s/ p
  162.     },8 D- ~  v: Y$ {  Y
  163.     {
    # {0 _. f2 x* U8 x
  164.       TextView;  W/ r4 `- g9 g& d
  165.       id="yiyan_wri";# Z# \: C/ F" l# ?/ J( v' T; z
  166.       textSize="13dp";$ e' N0 V2 q/ _# H' W
  167.       textColor="#ff333333";+ d8 S9 p+ B8 Q! N. R. j6 c9 V
  168.       layout_height="wrap";! u9 n# B: n: R' ^
  169.       layout_width="fill";) q% D4 k( i& P5 S: H3 y
  170.       layout_marginTop="0dp";6 }8 @0 m0 P  D1 s- e
  171.       layout_marginRight="15dp";
    ) @. v/ U8 v9 `+ y, _7 u. e
  172.       layout_marginLeft="25dp";) |9 Y- e( N( h) N9 w: g" Q: Y9 ]
  173.       layout_marginBottom="10dp";7 N4 g% A1 p$ ]$ g9 L' Z7 ?6 e& F
  174.       gravity="center|right";
    5 A. X' L) O  ~
  175.     }9 j/ x& U+ D8 e
  176.   }5 `2 Z. l1 e8 B& o8 u$ K
  177. }' |) x$ v! X$ O9 G
  178. activity.setTheme(android.R.style.Theme_DeviceDefault_Light)--设置md主题
    , v/ s2 t% _, I* W% g
  179. # N  P4 Y0 T& r" {, i
  180. activity.setContentView(loadlayout(layout))! h7 f4 ^- D) `; D# H

  181. 8 Q* R& [6 p+ A8 r7 h
  182. setTxt(yiyan_txt,yiyan_wri), R5 S* X- v0 Q7 o, p5 r
  183. . W4 X# p9 c8 g3 k
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2022-7-1 22:53 , Processed in 0.064586 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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