设为首页收藏本站
机战Z2破界篇 星组汉化 下载

星组游戏论坛

 找回密码
 注册(QQ注册+邀请注册)

QQ登录

只需一步,快速开始

查看: 1684|回复: 1

[心得] intent传值、Popwindow、正则表达式 [复制链接]

Rank: 11Rank: 11Rank: 11Rank: 11

UID
98177
星币
23
积分
9
阅读权限
90
注册时间
2013-4-11
最后登录
2014-1-16
发表于 2013-5-8 18:04:14 |显示全部楼层
Popwindow一、PopupWindow可以实现浮层效果
5 n6 E& H9 E7 v. V. L& HPopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。7 V9 N* q7 ^4 F' k" a: d
二、主要方法有:
0 s0 p% T" }, a! A* `* j1 q8 |1、可以自定义view,通过LayoutInflator方法;
: O# }7 \6 u! e( \View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);4 y2 S5 h& n: j  j
2、可以出现和退出时显示动画;
, Q. a- u" b; V9 ^popupWindow.setAnimationStyle(R.style.AnimationFade); # f) w2 w0 r2 S5 f$ H
3、popupWindow.setOutsideTouchable(true)9 m) A9 l; F- ?
这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。4 F# i+ H- `- i! {" Y; _
当然这里很明显只能在Touchable下才能使用
3 r1 i' |6 i+ u( F4、popupWindow.setFocusable(false);
" i: W; i2 u0 u8 D1 X0 Y说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失2 M) z; M1 V' ~6 i
但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉, V( x! F) w9 B4 _& w
三、代码
3 U+ d# {1 e* P0 ~, f" k* f1、创建
1 p! I. s* w" i# h9 zPopupWindow popupwind=new PopupWindow(view,宽度,高度);, D" ]/ m" n$ `2 b3 V; A# B
2、显示9 n6 T- I2 r) [. \/ r- g
popupWindow.showAsDropDown(view);
# w! f; c2 ]4 x. i$ H1 \3 v9 y7 F或者
( v$ j3 Z1 ~) lpopupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量
# y0 [3 a6 W& D: R# v) ~. j2 `或者
; \; H) M+ s+ w9 U- TpopupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y; U6 ~: i7 x8 f/ b) Y/ g  b
3、消失
, \9 J) [! e8 E1 f* e4 ]2 |0 j3 d/ spopupwind.dismiss();; t" d6 g  h1 d# D& {, r% Z- ?8 S+ `5 Z
4、设置背景# o. c1 p! u  i- M- g
popupwind.setBackgroundDrawable
6 O* y8 y5 p: Y! X3 F( t  O5 T3 }; y3 kIntent传值% d% [- _, T- P
一、通过putExtra()方法传值4 `) Y  k5 W& K. d6 B
传值:! B4 k; `1 _+ G
Intent intent=new Intent();$ |  }+ [) t7 S
intent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记
/ Q! E. J$ C/ r9 N7 N6 M) Q. x  s8 l5 O. Y! E- k9 c
取值:
3 U$ O3 m" c: h- G% r5 X" ]0 p- }Intent intent=getIntent();
( D. k$ b! C( H$ X5 s  j# h7 i& FString stringValue=intent.getStringExtra("extra"); 得到值! @: A( Q. S/ A* B7 i
二、对象的传值, @% Y6 U+ @0 Q+ w5 F- w9 m
ActivityA:- w2 o/ h& H. l! q3 E
Intent intent=new Intent(); 7 _7 D7 n* [& w0 D+ g7 {4 k7 h! }
intent.setClass(ActivityA.this,ActivityB.class);
, a' W3 \* k5 X3 M! R; \Student s=new Student("shao",20);6 K! R0 m9 M9 ~6 @+ C# w3 Q
intent.putExtra("标记", s);
0 k7 S3 o5 e: \& {; V$ ostartActivity(intent);
  f* @8 ]! G' h4 i1 H" R* eActivityB:1 a. G; Y4 k/ h
Intent intent=getIntent();
0 o" c$ |/ W1 Q* I6 Z6 E" T, hStudent s=(Student)intent.getSerializable("标记"); 4 W) n6 K3 a$ E3 L
注意:
) O0 k2 T/ \  @$ y) r3 m8 A9 e1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。
+ g' v* z; S+ C2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。! Q1 E: i) D7 h6 ^# s( M
3、在进行对象传递的时候,取值的时候记得强制转换  l2 p6 {1 f$ o6 t1 @
三、Bundle传值
+ Q% }, l5 C5 t: S& q2 {* K, ?$ Q传值:
: {8 O+ b& v8 gIntent intent=new Intent();6 T* I3 e8 s( d! d' y
Bundle bundle=new Bundle();
2 G, u$ c; B. I/ n; Z* \bundle.putDouble("标记",内容);
& \1 |8 _8 r0 q3 O4 u* ]8 hbundle.putString("标记","内容");. U9 ?3 i- f# E( d1 `4 x& a4 F
intent.putExtras(bundle);8 V  t  o8 @  {* F' }2 t' X
取值:
% \6 J2 A( v0 a) X- r  [Bundle bundle=this.getIntent().getExtras();
) X3 m3 a1 T, J; n7 U' YString s=bundle.getString("标记");: E: x6 F& }# j& b. b0 M( u
Double d=bundle.getDouble("标记");
) a9 u4 i3 C3 K$ S# ~1 c四、Intent和Bundle的区别- C% W5 X# o) j
举个例子先:
* @+ ~4 T) n9 F- a: n我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。
  {% A8 {* W/ }( g如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法" D. s3 c9 c: u
那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?5 H1 B" a7 l5 q8 _
正则表达式
) Z: B) \' x/ @. a一、利用正则表达式判断
. X" w) T2 K! o) UPattern p; 模式对象
7 E' C8 x/ ?* b* ?0 y6 pMatcher m; 匹配对象
& ]7 q; A: k* Z* T: Gp=Pattern.compile("正则表达式"); 初始化模式对象
) l. b1 o) d  a) q7 H  Im=p.matcher("需要验证的内容"); 初始化匹配对象% w  `& v0 F  I  i
m.matcher() 如果符合条件,返回true,否则返回false
# T  R+ o0 I9 ~- Km.find() 如果如果找到子序列符合匹配条件返回true& m5 i# B5 \+ I! p, f8 B8 j8 X
二、各种正则表达式3 N3 W9 n( z2 X+ y+ L0 _. l' G
1、数字、字母和下划线' o. Y! V( P) h! @) Z- E- D/ R
[A-Za-z0-9_]+
% s! }6 k  w1 X. l. d8 ?; ?. ^7 @2、数字和字母+ @! ^' d9 P7 s
[A-Za-z0-9]+3 J. Z  F, W% ?% E4 @$ ?9 @
3、邮箱
4 a) F7 d: E! ^3 C' d5 Y5 v^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$% E8 o. C) X. v, w$ d; E

Rank: 4

UID
115225
星币
59
积分
348
阅读权限
40
注册时间
2016-7-25
最后登录
2017-10-24
发表于 2016-7-29 16:28:42 |显示全部楼层
好帖还是要收藏,请继续
% Y6 ^: V: b  p9 [$ N' A- S1 O/ P8 C7 N  N

' W8 ~0 P$ W2 [4 |' M0 H* s9 T5 j* A; ?" f' f0 c1 G

% N  K! g/ U' G+ ^3 o" j  ?5 [# ?' a. K3 I9 z5 e% V  h3 D( Q9 ?! B2 k
$ D# s* b5 w, F5 ~. B+ B
3 i' T3 n+ C, g) k

. O) e; K0 N! _' ~% B. F* W
( b( i: m0 w% f8 \! a  L) _% i; p7 U8 R5 N! v6 d

' U1 }( E( D! O6 X7 h
* m+ Y% N6 G5 }同心米粉 广西米粉 藤县米粉

Archiver|星组游戏论坛 ( 京公网安备110403080002 )  

GMT+8, 2019-5-23 13:03

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部