|
- require "import"6 U* [9 C8 j+ l2 Q, N, A
- import "android.app.*"0 M2 p8 f% o' n2 Q1 R
- import "android.os.*"
{( C% I9 g7 G5 G% i - import "android.widget.*"; Y! N7 Y& H5 N
- import "android.view.*"
1 U5 h6 _* `% i* o, j - 0 F" _7 R, } c. C
- import "com.androlua.*"
' Y: d) A8 l2 a& S2 N& s - import "android.graphics.*"
1 L9 J" D. ^, C; I - : C- S8 }, o, b. g7 j5 h2 ~2 l
& t( z# I ? ^$ N* w) Z! }9 m- --仿一个木函尺子功能,代码有点乱。4 P% F; n+ q* H" _2 R8 S) H" P
- --想做个吸附功能/ u- u2 K" T& I8 g% K
- % [' }- X; `% y3 T; k- U0 U: N- R* G5 U, |
- --各种单位之间转换函数
1 T4 B d7 b, Y* ]8 N; e2 w8 @8 A - function dpTopx(sdp)$ Z, B0 i& x% N! w( E5 [
- import "android.util.TypedValue"8 G P7 ]+ J2 \" B6 J( V7 `/ N3 j) f* |
- dm=this.getResources().getDisplayMetrics()- z( f8 u* p8 I1 e
- types={px=0,dp=1,sp=2,pt=3,["in"]=4,mm=5}
$ p/ H# E" d; M - n,ty=sdp:match("^(%-?[%.%d]+)(%a%a)$")
# j9 C2 [8 P6 V5 y - return TypedValue.applyDimension(types[ty],tonumber(n),dm)
. E, p K, }% ^* g8 R* O7 w - end8 f# ?7 }; B. t1 _" m/ m
. a! Q) l; L9 q7 ~* L s/ _$ k- v
; h+ w: ?* [) a) u J1 E
8 M8 B/ W% \1 a; N- mm=dpTopx("1mm")7 [; Q* ^5 i% e
- t5 A, G8 l. q3 E& d. R, K3 P j- activity.setContentView(loadlayout({
- s( K+ w/ A6 M' o. T9 l9 s9 I* X - FrameLayout,* `+ N9 _5 v# b) j
- layout_height="fill";
7 n9 @. o$ N J7 @# p/ q - layout_width="fill";/ t+ D3 E* I4 S, r4 E
- 1 Y# B9 K- o+ p; L0 \( U* U
- 7 D' G- s/ ^" r N# S
1 S3 w" z0 b0 S! _3 N% i- {
8 A% p2 `+ B1 u' Y/ ]# _# l - LinearLayout;1 `6 i+ E- |9 |8 F/ e
- orientation="vertical";
* `% m8 J5 c2 ~! V5 F3 M' E - layout_height="fill";" A: A( Q- V( f u% l* z4 i" T! E
- layout_width="fill";
9 Z B+ r+ W8 v9 G; r - Gravity="center|top",
: e# v- K! R- G7 d* d - {. q& K) F: a; H& Y1 a& ~. Y4 L- S
- TextView;: |* _. l0 f1 Z6 y" ?
- layout_height="300",; w' V3 | n1 C
- layout_width="fill",
% ~6 a+ }5 W: a - layout_marginLeft="30", p$ ^5 A3 m5 I- I
- id="tv",
3 [ n4 ]1 ]9 j/ W- e1 i( u f+ Z - };. ?+ _4 W/ r. M( ~1 U" C
- },; E, r2 {( K# b$ c
1 m, T2 D2 z1 K: p! k
# }+ k( V. w& k2 \5 z4 b, P- {
6 H) O$ W8 [$ O% N( w - LinearLayout,2 L" P$ }9 t( b |- `" c
- layout_height="fill",
( @9 a a/ ~1 u0 ~' q: M - layout_width="fill",
' w* P/ v2 @3 n: ^ - Gravity="center",& H D9 S( m, O6 ~
- {- ~; G/ ?4 l4 Q4 `0 G& M7 j
- TextView,, t3 k ^: d+ I4 T
- layout_height="300",+ ~: q( F; v2 Y& k4 q8 X
- layout_width="300",9 _- e( @0 O, r" S: s9 U
- text=tostring(0),
9 X6 R! p3 }- h- A [0 E! | - Gravity="center",$ _1 Q- z# U) C3 R6 a5 F8 m+ e+ ?( I
- textColor="#ffffff",
$ O& O( a; {- q3 r. q - textSize="60",
q( B0 w4 [$ ?) v$ T - id="tv4",
" ^9 w# H5 p1 p0 x9 C - },
; |( K( z# [# m4 a# l6 f, Y - }," d+ I6 c' b4 J; D
- * g6 C9 |8 S% R7 E$ H. i. Q/ y" y
8 K) d1 L- O: p
( [8 p5 v0 F3 R- I+ s8 _- {3 ]$ I' T& k" _/ D
- LinearLayout,
: Z0 i) Z0 ~7 c y: O' W+ x( Z' @ - layout_height="fill",
! Q2 f" ?( ^* E( c7 \ - layout_width="fill",
S2 _0 D: @& {# N - Gravity="center",1 l @9 i( i6 b* B2 |
- {
+ }, e: w3 K& Y3 J4 [0 I/ x - TextView,+ Q: [- U8 | ~: n
- layout_height="300",* D' D R* R: Z1 g0 B5 f* j0 y, o
- layout_width="300",: q& [* v0 R' _) i7 F' k
- text=tostring(0), L/ A9 A; H+ B8 D# N9 d- Q# j
- Gravity="center",8 T0 j' d# C( U/ n$ @6 i6 a- q3 P
- paddingTop="150",
& Y5 ?- \9 C& j - paddingLeft="150",2 K8 s" A" \3 V2 K
- textColor="#ffffff",2 j1 G7 M0 j7 Z" y |' c9 F0 z
- textSize="30",
+ R0 d, w* B3 [2 }% Z - id="tv5",/ b0 V9 K d6 D1 l# P
- },& R) e$ [8 h. T1 }
- },1 ?, b) [- E: x
- 5 ]# P1 t+ P1 ~4 \- C
( `# J, Y) ?7 j7 l8 O! D
- O8 ~8 z# f1 {% @% e5 l/ z- {
* J" G* X8 B- O* L7 h1 F; B: T - LinearLayout,
$ S$ @: X) Q% k - orientation="vertical",8 g5 Q5 h& y. E9 u8 [. k
- layout_height="fill",5 g# j& O- U3 u6 v
- layout_width="fill",
1 D+ x0 I' e$ t b H- b- m0 J - id="tv2",
g" _! X$ }9 r) s; V - {
/ y/ T3 f! j2 b8 S$ \ - LinearLayout,
" h$ B, F$ s6 n0 u& q U1 v0 m - layout_height="fill",
7 K! L. _3 O" T- S - layout_width=mm*2,
9 f1 x3 z) L* e1 u0 d! T( ` - Gravity="center",8 ?: q- |0 B* c2 [
- layout_marginLeft="30"+mm,6 b* z B3 W Z2 t3 s9 e0 |& P
- id="tv3",
/ J. N+ ~) N: W- A! n - {6 m# {6 e& m) a
- TextView,) M$ g# X. }# H
- layout_height="fill",- v n/ B* [5 x/ i: K
- layout_width="4",
. p- o5 V9 l4 y( q" p4 N* Y - background="#808080",- ^7 ^. v; n- @
- },# W6 `$ s4 @9 ?! l8 H. h( ~
- },
0 p- C/ [. s b% B6 A - ; m5 l% e h5 c9 U2 j+ T" _- V' z
- },
8 |: e2 S6 b+ F% w/ Q5 j% @: L# u
: b! Y2 f% n& T/ T3 _% B- & x3 o6 A& t# I
5 a0 d6 Q; A' _- i) H) p- }))
' h! z8 R* _9 q3 l; Y - * F u L5 E" h1 h5 h
- v, b m' q' L1 N1 H
7 b% j/ S, `7 q' M1 Q; o; w% n- --横屏模式; \1 M* w3 G1 p* }
- activity.setRequestedOrientation(0);
- y1 \: ^; d e7 o
- l# z% J' R" d4 ], ]! d- # g( \3 X" E; A L
- / P5 s) n2 o5 U, Y4 M* m
- " X) w4 d5 G2 Z6 m4 {
- ; e3 @4 @# H* ]# t
- 3 m+ Z1 I, N7 E' ]8 B4 W0 D
' q1 T# n" x- w, _0 R" `- myLuaDrawable=LuaDrawable(function(mCanvas,mPaint,mDrawable)8 C, @8 _5 c" N6 v( S. \
- 9 U4 ~& ]8 f3 {( T3 h
- --画笔属性
4 L* f' Y1 e) h9 G: V- y - mPaint.setColor(0xFF9C9A9D)8 a5 u7 f# G+ p* R+ a( m
- mPaint.setAntiAlias(true)( p3 X$ `2 j9 i5 v
- mPaint.setStrokeWidth(2)+ O6 L4 w0 I* }+ j& w8 Q
- mPaint.setStyle(Paint.Style.FILL)
; G$ ?( ^3 e2 Z5 q. ` - mPaint.setStrokeCap(Paint.Cap.ROUND)
( n9 }, v( x; D. V - mPaint.setTextSize(28)
" i7 p( S! @* k) w - ) x) ^) k4 h* v$ G' j' _
- ) Q& \, o) O1 L
- MaxPx=mDrawable.getBounds().right-304 g6 ]$ n! Q: a# o6 r% K
- 5 t$ {' c& z; x4 M9 V1 u) ?( Q, O
- MaxMm=math.ceil(MaxPx/100)
/ K6 Z7 x! A6 h - - o$ @' l1 \! p9 O' B& U B+ P
- d9 Q7 w7 j& v8 r2 T% }
- 3 K# e- q" u) `* l" A. [7 Q
- --mCanvas.drawColor(0xffffeeaa)
- f! Y6 K( Y# M, j ?' [. m# A- O
. F$ e: [& c- L3 }- - }' @" Z2 o; B/ }& b; b7 L
l: n& R. O- N1 x! H3 Z u7 g r
) R, Z) {3 |4 p5 @" m- for i=0,MaxMm*10 do) l d7 N6 E/ _* L
# \/ R; w- v5 w& D9 j! h# ? @4 G- if i%10==0 then
, t- t3 S, ]% V* r( W. H( d4 T - % I3 {# D. I" J
- mCanvas.drawLine(mm*i+mm,0,mm*i+mm,80,mPaint)
) W# V/ l4 N" c2 t" x
* ]$ }+ H6 h6 G/ ]7 b. d- - R( Y0 P" v) r( W% N6 U' A
- mCanvas.drawText(tostring(math.modf(i/10)),(mm*i+mm)-mm/2 ,120, mPaint)4 P1 p& X/ Z( _
8 `- r$ V$ v% h$ ]5 E( t, C- elseif i%5==0 then
* r4 F+ F9 @! x- i/ L
& v6 x: ~! x y# h) o4 v- mCanvas.drawLine(mm*i+mm,0,mm*i+mm,60,mPaint)
1 w/ ]8 w0 [4 Z - 8 T; k i; H+ Z: X! u, t9 F) q
- else, @ V, m4 n4 C" i
- 3 ^# a# \- u: H' R0 m5 O+ M
- mCanvas.drawLine(mm*i+mm,0,mm*i+mm,40,mPaint)
4 v; M2 E8 r/ N1 `! m - 4 t1 x: O/ g8 p3 F
- end
0 f E: d; e- @ Y% S7 } - - |9 h" p* r5 g6 y% J' s1 T
- end
- r9 U" t3 G* S( k - 3 k6 ^' T* u* ]+ z9 W K* G
- 7 ~3 Z+ H9 r2 L. E- `3 g7 n& z
, d# D/ G4 G( m' p) P" B+ y
' `" v6 e; c0 X$ M- end)5 F/ n- C$ k; A4 @( {
- 3 Q* z2 v5 ], F, N' `7 ?0 ~; e! d# M
5 r* }% _" v4 N. d/ L
4 [! z- b. R9 E* [6 R- --绘制的Drawble设置成控件背景
) d. `# b7 ~, V" H7 A - tv.background=myLuaDrawable
+ H9 y& ]3 c W2 Y* d& B4 T9 U, ~: T
$ G. ^5 d5 [% N% d- 6 _3 u; Y; U, i/ U! c) S! j
" K" U' M0 f0 a% k, a8 h( T# }' x- 3 ~2 @ g8 Y0 t: z4 x( m2 h! V
3 w* S. p G9 I' O6 d4 f# z- tv2.onTouch=function(v,e)
4 j6 A, o, P( M2 t% o$ P
7 A ^" k5 U, X2 ?- a=e.getAction()&255* n* ` Q: a' u7 k8 l
- & }' v: c7 [/ r& F: s
- switch a6 W3 o. B0 S; M( K; S6 q
- f. F2 G, X W# A. I7 ~$ n8 ~- case MotionEvent.ACTION_DOWN
& _! y& h9 Z4 g
+ q+ b6 h5 r S% w8 E8 |* L- 7 J5 i, L) R$ L6 e0 \: W
- case MotionEvent.ACTION_MOVE
" v: O( C* a6 V% S. d" j - ( Z8 h" R9 |+ I$ |8 z0 Q
- moveX=e.getX(); E( `2 p' ?- \! k& x' g: o# J* G2 O
) o0 [5 A' ~: N1 K% r, z- tv3.setTranslationX(moveX)
; F( K2 f9 s7 j) x4 z5 u& l - 6 a4 D, A! m+ T. ~, j8 r- Y& I
- --print("≈"..math.floor(moveX/mw).."mm")) b t( O: [; v$ p
; U6 l1 R |6 u% I" ~9 g8 H' \- a=math.floor((moveX/mm)/10)* G$ a# @. o0 E7 ]0 q3 ^% F
! i0 o. ^) L* Z- G- --向上取整9 K5 C! y) Z' ~6 a( V; \% v& r: k) Y
- tv4.Text=tostring(math.floor((moveX/mm)/10))$ i6 D" `- e3 B; z
- ! F! J5 c. y1 r$ a. b$ P/ e" O# ]3 C
- --向上取整3 W* H' K% Y5 `" V
- tv5.Text=tostring(math.floor(moveX/mm)-a*10) W- O) e* i- }
( m; }! @ h' A1 L/ |
3 b, |& l4 _5 n, U# ?- case MotionEvent.ACTION_UP
9 v) ^3 y$ V" X6 N1 w, V& y9 ` - - S9 ?& j; L9 Q2 o9 D
- end7 G0 J1 g# G, g
- ) V4 I& t/ m0 i+ t4 t- d
- return true
9 J; w# y9 ^! D6 x; a* _ - end
, i& j, l, o) v" [! X8 {* n - 4 U" }% s% B" s3 D- I# }
! ?7 X$ o, C- F. e ~7 `
3 J% M0 j% s- y/ _
( w) E4 Z! D( t2 e% i) G
" B9 f/ N+ P% G/ l( L. d. C- myLuaDrawable2=LuaDrawable(function(mCanvas,mPaint,mDrawable)
- Q! A8 f3 f K1 W8 U- j, ^ - # T: \+ c3 w# p
- --画笔属性1 D, i5 H% [& Z; T" p% i; e
- mPaint.setColor(0xFF636562)
- p* [3 C) b) J: S/ h9 h4 w3 T - mPaint.setAntiAlias(true). l6 E) i: n( Z
- mPaint.setStrokeWidth(20)
! v9 A3 C* C4 I- T" i) ^3 { - mPaint.setStyle(Paint.Style.STROKE)
# J2 C: r& m9 V/ i
6 ]3 z z* P. T1 p4 P- i8 u- --mCanvas.drawColor(0xffffeeaa)
8 Y ~7 h# b( x3 G! Z5 v - : a' d& l) H2 f8 _% j. B
- mCanvas.drawCircle(150, 150, 100, mPaint);2 E0 u5 H$ e, L3 H9 l; j9 {9 c
% a5 n6 A' h. @. K( S- mPaint.setColor(0xFF9C9A9D), b5 g1 g: L0 ? z( @
- mPaint.setStyle(Paint.Style.FILL)* t/ k g/ O: @
7 P& J0 a; {0 T; I- mCanvas.drawCircle(150, 150, 90, mPaint);
S% v5 T5 z7 }! i2 U% y- y M. {
% e1 Y" K5 e4 ^: }/ d2 j) w- end)+ d# B2 U& {0 A) F
- 2 j" F: T& c) y5 ]
- ! @8 R6 x: ]( C( H1 S
2 t, I( g; \" j2 a- --绘制的Drawble设置成控件背景
F+ D( M+ X7 T$ x+ g+ H - tv4.background=myLuaDrawable20 T6 ^7 [1 w: J( b
% w4 A0 ] w1 Q1 Y/ U- 5 d( _' z4 b2 Y# E4 Z6 N- y* x
- myLuaDrawable3=LuaDrawable(function(mCanvas,mPaint,mDrawable)) W) v4 c* q: t' p4 L
- & @- l5 @0 Y& @% c6 [0 T4 L
- --画笔属性7 X" ?# h5 y! n( U; {1 z
- mPaint.setColor(0xFF434542)6 i6 L4 t! h k1 Q$ G" q
- mPaint.setAntiAlias(true)
* v6 T3 f8 b0 b7 p9 I _* O k( z' K - mPaint.setStrokeWidth(20)
4 U# n7 n: {; V: C: |: T - mPaint.setStyle(Paint.Style.FILL)8 \5 k* w: R( M; T: h
* v# ]' B+ j* W- mCanvas.drawCircle(225, 225, 50, mPaint);! ]# l h: Y/ Q7 C
2 O0 `. y( Z( N& g/ D# u# g8 j- end)) i$ ~; C# U0 s g% T a
: `6 E# [" ]/ \2 @- tv5.background=myLuaDrawable3
% l8 d" G& M3 H$ `4 {+ f" S
复制代码
- E: { P( [2 w5 b- N O |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|