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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1529|回复: 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可以实现浮层效果
& `- K0 T/ F, uPopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。/ E. U1 X: C+ W! A  K' E+ _
二、主要方法有:
7 j) E: x: J0 n# z- `7 F1、可以自定义view,通过LayoutInflator方法;6 u: p# P( y* Y( Q, f
View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);
! v0 W- L8 T. P3 q5 Y% k, [2、可以出现和退出时显示动画;* L, `) O' Z. c; u* u) I" z4 H
popupWindow.setAnimationStyle(R.style.AnimationFade);
; r1 w0 ?4 W9 h7 f! }6 j3、popupWindow.setOutsideTouchable(true)
! l7 z  l3 R/ |5 _这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。" y0 Y# V4 {1 p, S8 I3 W
当然这里很明显只能在Touchable下才能使用
- [% e( D2 w$ |1 ~  A% P+ B$ R" x; g4、popupWindow.setFocusable(false);
5 `1 c7 x' f- c: h$ J+ L# _说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失
& S( e- K8 }$ C& O8 V. F但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉
! Q0 u/ A8 D) }2 d) l三、代码
6 M( t- V: C0 o! T( ]1、创建/ H- c; j6 x7 O! A4 y
PopupWindow popupwind=new PopupWindow(view,宽度,高度);: ]2 F4 W! O' }) B# r! c3 C
2、显示% r( K! ^  C) L, g
popupWindow.showAsDropDown(view); ' }& {5 S$ T% a! v/ B! w! V
或者
( F2 e4 L2 Z) z. L' u2 [popupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量 & H6 @4 e) S! L: H5 P
或者( L, Z0 ^- D9 a8 j: r7 \! Y
popupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y% i7 f2 Z8 S; e# E  y
3、消失3 i- B( v8 }! [
popupwind.dismiss();
$ c& ^0 P7 {+ c) D7 X4、设置背景
7 J) X8 v+ ?9 l& K0 q4 hpopupwind.setBackgroundDrawable) b1 u" ]  _+ x3 w  o
Intent传值
' h: m! y- d2 |$ [1 g" n一、通过putExtra()方法传值
0 I) b1 D4 E. M1 J7 P传值:9 i3 S$ |$ C6 C: m& x+ x
Intent intent=new Intent();
' o, Q( k& `( u3 Q0 Zintent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记
' {) E; e! t) [- i) K) e
% S# i1 U8 n: q. b% V3 L* I取值:
5 x8 K# y9 }/ C) g! B: `Intent intent=getIntent();& z% p* ?  O4 _
String stringValue=intent.getStringExtra("extra"); 得到值8 d- {( E* ~% N& Y+ Y6 W
二、对象的传值
/ q2 S# z3 w* o$ R- u9 g0 ~ActivityA:. r1 B" K! T3 e1 k9 ]& p
Intent intent=new Intent(); 5 d8 m! I- ?! t* r' J# |$ K
intent.setClass(ActivityA.this,ActivityB.class); ' e1 H, v% m2 u2 ^, G4 ]
Student s=new Student("shao",20);8 [- p  |/ [/ B  y. }
intent.putExtra("标记", s);
0 d  \- k& L. O" ~! V8 [startActivity(intent);! f# y6 c8 A# R! n
ActivityB:# p6 u# c9 F" m, x) i7 `/ W$ ~; g
Intent intent=getIntent();
+ D( o4 Z1 D4 w; N: P. U% dStudent s=(Student)intent.getSerializable("标记"); ! f* J8 Q- G. Y3 V7 p; H3 Z1 g
注意:
* ^+ y2 ^7 e) i3 d1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。" p" `) I( ^* s1 t  F& |" t% w
2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。
7 {+ ?7 j& T9 m( y& f! ~3、在进行对象传递的时候,取值的时候记得强制转换
% K, f# Z4 p# ~* q' L% x( N/ d三、Bundle传值/ i5 g# l9 O. m  }# b5 b. \3 c
传值:
; y* a. m6 f$ Z+ u" SIntent intent=new Intent();
8 w3 P& L) a- C) O( K! N1 xBundle bundle=new Bundle();. `) p2 d8 x! U7 w3 \0 u$ l+ [; p
bundle.putDouble("标记",内容);
7 H# ?) z7 r( R& e1 abundle.putString("标记","内容");+ o) g( {8 v, x& C4 }( D  |9 P% \
intent.putExtras(bundle);
/ ]: B6 r( A8 c/ }取值:- h: x2 _: A6 _
Bundle bundle=this.getIntent().getExtras();* b2 c- b' x5 q' \0 N0 x( }
String s=bundle.getString("标记");
5 G6 n+ n- p- e4 O3 w9 ]" Q. sDouble d=bundle.getDouble("标记");. {+ A6 M2 o' T; ^9 P# f! d. {
四、Intent和Bundle的区别/ M0 S+ ?6 C6 p9 @
举个例子先:
' A, S0 d0 f  u9 F9 G我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。! j  j4 K* e/ n' H# K; B
如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法
( H6 Q' E) u) K那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?6 e( j( ]3 a, L8 N. k; K) {- {9 d
正则表达式
8 _) j- _5 ~' }一、利用正则表达式判断
4 ]' F8 a8 t# g% |% d& o5 UPattern p; 模式对象) I* b. y$ A5 ]6 ^1 `7 g3 i
Matcher m; 匹配对象
& E  W5 p- ?+ L3 P* r+ Op=Pattern.compile("正则表达式"); 初始化模式对象
- u. M6 R' c  I4 Em=p.matcher("需要验证的内容"); 初始化匹配对象7 ?7 y' L: D- V  e
m.matcher() 如果符合条件,返回true,否则返回false! a% O; V- C8 L
m.find() 如果如果找到子序列符合匹配条件返回true1 q' e  e* o9 `1 U8 ]+ h
二、各种正则表达式! r+ E8 w; J; @& }; s& K
1、数字、字母和下划线/ o+ @( Y" y1 {) r/ K  V+ D2 K
[A-Za-z0-9_]+
& y+ o# s; d: }2、数字和字母! D' p9 @/ l( q- Y7 w& D
[A-Za-z0-9]+4 R9 ^! k. R5 v; ^0 J3 W! K
3、邮箱
% }$ v% f6 V9 w6 y# M, {* _^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$
& a4 c% ~! q: T) M! [2 I* ^0 O
头像被屏蔽

禁止发言

UID
115225
星币
59
积分
348
阅读权限
0
注册时间
2016-7-25
最后登录
2017-10-24
发表于 2016-7-29 16:28:42 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

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

GMT+8, 2018-10-23 15:31

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部