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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1358|回复: 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可以实现浮层效果
8 ~# i6 W/ T  TPopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。' c. B. P& e) t/ ^# i2 T8 |! r9 p
二、主要方法有:
8 K. x8 ]% k  t: Y9 A! s4 ]1、可以自定义view,通过LayoutInflator方法;
+ ]; d/ R6 |) u/ \View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);
2 ]6 ^' R- ?6 r* J2、可以出现和退出时显示动画;( U$ s. R. O9 B# C0 G% x- S
popupWindow.setAnimationStyle(R.style.AnimationFade); 6 X* i3 e8 A9 ]; A  U. W' H
3、popupWindow.setOutsideTouchable(true)
3 k$ x6 d, n5 D这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。( `7 V! p$ S8 ~- u
当然这里很明显只能在Touchable下才能使用( c  r% M' [6 N
4、popupWindow.setFocusable(false);
# A2 Z: K# n4 \) n7 h) e0 U说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失
* e2 M8 }0 t  C9 M" X但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉# V' T, ~% M& a" E1 Q) R* h7 Z( [
三、代码
) J; q5 Q. I- u( M! A1、创建, {& b8 d0 n1 W  W+ ^- P5 p
PopupWindow popupwind=new PopupWindow(view,宽度,高度);
+ `( C# T) E2 j2、显示# o. c, y+ h4 i' I/ ^
popupWindow.showAsDropDown(view);
6 Z. W9 N- i# G; `8 R* Z" ], `或者  ^( |% a* c7 c; o8 p: X
popupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量 9 \. s6 @) T4 v. ^- ~
或者& o% f/ f1 O; Z+ C& L) }
popupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y
, z" ]( n. O1 b3 ~0 G3、消失
8 E- q8 A& w$ B% vpopupwind.dismiss();
* Q0 c6 c! A# C, p4、设置背景
7 o" [* F/ I* ?( b0 g. zpopupwind.setBackgroundDrawable% W7 d, v' r; b, \% ]
Intent传值5 M) r9 M  Z/ [+ W; c1 x. N
一、通过putExtra()方法传值- q. j% d5 p4 E- N( y4 `
传值:
0 w1 W# c* B  d. x' G7 a% ?Intent intent=new Intent();
  N) T  W6 s; S2 Bintent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记
9 G; V% Y* H$ v, N) E) ~1 n1 B) F6 |) {$ T9 s* `: b3 y* s
取值:: q  _7 g% x( J; B. K
Intent intent=getIntent();
1 ~1 o) A& {/ Z6 q: ^# }, GString stringValue=intent.getStringExtra("extra"); 得到值
9 }7 Y  P/ w5 R6 X3 j8 `0 `3 `' R$ U二、对象的传值2 ?8 P( B( j. d4 p" D2 q# s
ActivityA:
5 g2 V! F; b+ P, VIntent intent=new Intent();
/ F1 u5 i: N8 i1 L+ d0 G, G9 ~: rintent.setClass(ActivityA.this,ActivityB.class); . M) q  z; e5 ?" y5 t2 Y
Student s=new Student("shao",20);
7 G, i* [1 i7 I3 Sintent.putExtra("标记", s);
5 l6 ^% O, r  dstartActivity(intent);
* P) j. O0 ^+ |* h/ iActivityB:
8 t( [2 O3 R* N+ h0 KIntent intent=getIntent(); 8 j: x3 [# c. Q
Student s=(Student)intent.getSerializable("标记"); + T9 ?; m! {/ `' j) h' p- i# P1 Z
注意:
- R7 F' B5 W5 N5 l$ b0 n1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。9 f8 y7 A1 P4 `) J- \' w
2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。" x3 `" a# p: S' l
3、在进行对象传递的时候,取值的时候记得强制转换6 p# m( x2 Y7 U  Y* i/ n
三、Bundle传值! i8 i. a0 s& K$ W* [
传值:6 [6 {/ j. h8 v9 }. P
Intent intent=new Intent();+ W) s2 C8 r( S. G8 Z! e  e3 d6 }
Bundle bundle=new Bundle();/ C/ P! v$ k  R
bundle.putDouble("标记",内容);
5 h0 U- I# p$ k2 Gbundle.putString("标记","内容");
! X3 f8 W9 x& `- T( W5 A8 Vintent.putExtras(bundle);
7 d$ t. I4 C8 E6 Z) w( h% O! Z% _/ ^取值:! A! D7 a5 Q* N7 G$ p0 [
Bundle bundle=this.getIntent().getExtras();& m" e3 \; K0 f- E3 x3 {1 n% Y
String s=bundle.getString("标记");( Z) a1 G0 v; I$ U
Double d=bundle.getDouble("标记");
* V+ R1 S- e* s0 g四、Intent和Bundle的区别; ]& ]9 {. K! C8 N, U' r3 [4 I
举个例子先:
2 I  [$ N# O2 G我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。0 i$ i! W' Y$ W3 A! c  W
如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法
+ w+ }6 i, G. X% t9 D& `+ A( `那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?: g# x, Q- ~( G; y* f
正则表达式
4 Y$ h2 X9 f3 j4 |. o一、利用正则表达式判断
* }* n6 u' @9 p" \( ePattern p; 模式对象' m8 p' v- @$ K9 t
Matcher m; 匹配对象
4 z! Z9 |: I8 N" C) dp=Pattern.compile("正则表达式"); 初始化模式对象
7 J7 ^% M3 H! U1 X) L0 om=p.matcher("需要验证的内容"); 初始化匹配对象
# z7 R5 E2 H# K5 Km.matcher() 如果符合条件,返回true,否则返回false7 p  h+ |) }  N, O9 @6 ^/ R- h
m.find() 如果如果找到子序列符合匹配条件返回true) s+ O2 a1 o( ~9 b8 s2 H
二、各种正则表达式0 h* J  I7 Z' m5 g4 y& o
1、数字、字母和下划线
9 i+ R# l' ~# l' y  \) Y8 `* m# O[A-Za-z0-9_]+* u8 ]4 B; X, o+ r
2、数字和字母+ A6 e7 q7 O% l. o6 w. K& o
[A-Za-z0-9]+" l: H1 l8 U) ^1 u: r1 s
3、邮箱
* {9 h* I4 K+ s  |^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$* {- ^% L5 l* A; m! v7 ^
头像被屏蔽

禁止发言

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

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

GMT+8, 2018-1-17 13:25

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部