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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1445|回复: 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可以实现浮层效果0 g* F* b& }; x7 J' F0 d
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。
2 v; I+ c4 R3 R# X二、主要方法有:
8 N: Q4 h8 h! P/ r1、可以自定义view,通过LayoutInflator方法;
" P  o1 E( k$ I7 d# cView popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);
* x% W* X. V0 W/ i: a1 p2、可以出现和退出时显示动画;
: O, u6 H2 {! c1 |. N4 OpopupWindow.setAnimationStyle(R.style.AnimationFade);
4 l2 N! x- Q1 W* _- d7 Z1 ^3、popupWindow.setOutsideTouchable(true)
  P1 g: T* I) E7 a这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。
7 z  v0 I' q, {8 f* Z当然这里很明显只能在Touchable下才能使用
( t7 Z7 `7 `3 p& ~+ L4、popupWindow.setFocusable(false);! Y+ G. }2 a" W& J' `( d
说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失
; q5 |' {% }9 |6 b1 C& K- {% s# m但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉  @+ e6 O1 d- s, H3 k: f6 E0 S
三、代码
8 O! x  ?- Y: k4 l1、创建$ ~) i) {4 `( n  H; ^% Z
PopupWindow popupwind=new PopupWindow(view,宽度,高度);5 r7 H- h2 i2 p' C/ z5 n" I
2、显示/ O3 q, m6 J; u5 {
popupWindow.showAsDropDown(view); & L+ q# F3 o# b+ t7 G$ s# l0 `
或者
5 g7 J0 w4 J" [+ t, B/ H4 PpopupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量 / W4 M7 [" ^) a% I/ A; T
或者4 W% r# ?6 C% w5 c) R6 z) u
popupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y, o  D" ^$ G' w+ e! K9 l
3、消失3 \0 _, `+ D5 m  i
popupwind.dismiss();8 l7 V* q- N3 ]- @9 @& H8 ^
4、设置背景4 r; F0 ?9 _! T. Y
popupwind.setBackgroundDrawable
7 J7 L* j' ?+ P7 G; cIntent传值) ?8 R# Z1 r1 r# z/ B
一、通过putExtra()方法传值
- y, Q8 o$ V: m# p传值:
' i7 V1 E" R. Q9 v- xIntent intent=new Intent();; z0 c( X  _! h' D; W/ i
intent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记
3 x$ n" E" A! k" l; @- f9 Y4 a  k6 p% Q0 p6 ]
取值:1 F- f0 Q" o# s0 W. E* b( k
Intent intent=getIntent();6 J8 r! Q4 f; G" ^2 Q6 h. c; F
String stringValue=intent.getStringExtra("extra"); 得到值
/ E) q% q, L: f# U3 {二、对象的传值) L) b8 L1 s9 V3 n! C
ActivityA:1 b" G5 P6 y$ ^
Intent intent=new Intent(); $ y: \/ e$ z. }6 r! t  C
intent.setClass(ActivityA.this,ActivityB.class);
% V/ W# u1 c& d( HStudent s=new Student("shao",20);8 X0 z0 t! m8 j
intent.putExtra("标记", s); 2 z/ q" m9 F2 A# {! ?$ \/ D
startActivity(intent);
, I; g# U7 S$ J* S0 I3 N2 oActivityB:) I' D: U8 S1 b# t) _
Intent intent=getIntent();
2 c9 `9 i1 M- @  z' w' M3 mStudent s=(Student)intent.getSerializable("标记");
2 N* Y; ~. `8 A1 ?$ J) K4 a7 f4 N注意:
* T" d4 q, E1 X* `9 r1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。
9 p4 y5 ?% F% w1 C: ~- z6 o# T$ G" \2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。: E+ U2 Y' ~2 K- h8 q3 P* c
3、在进行对象传递的时候,取值的时候记得强制转换! }8 [: u  z% g- m6 k
三、Bundle传值) p2 ?& z4 O6 u- Z5 r/ \
传值:
0 q' y' G" C9 }" `- KIntent intent=new Intent();
, q" R: i; @' w# v* RBundle bundle=new Bundle();
& ^$ q5 U! l, j2 X$ Nbundle.putDouble("标记",内容);
5 b$ F4 V6 ~+ x, tbundle.putString("标记","内容");
+ O7 O9 G0 r5 _3 v( eintent.putExtras(bundle);
: M' A& r; Z; l& W2 i取值:
" h' W' b2 k- G, aBundle bundle=this.getIntent().getExtras();
4 P; [& {4 @# WString s=bundle.getString("标记");" g, b( F' O2 a8 \
Double d=bundle.getDouble("标记");( a) r; o6 z$ l" u; \
四、Intent和Bundle的区别' O- w( X, A5 u' O# |
举个例子先:& E. G9 D6 b3 T' ?# N; v
我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。, @/ ]5 p$ g7 \4 }
如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法
+ Z( i" w" b& [: _那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?# V" z4 Q: T" B9 k  J
正则表达式1 S% G8 m, r  D7 r% M2 ~
一、利用正则表达式判断
; e. c+ O2 m$ ?, W6 [8 _Pattern p; 模式对象
  B! A4 @7 H$ A3 mMatcher m; 匹配对象+ R3 C( m" _4 Y  X# ~; h
p=Pattern.compile("正则表达式"); 初始化模式对象
4 [+ H- H5 `& Fm=p.matcher("需要验证的内容"); 初始化匹配对象
' H$ x/ }) P. c. g$ p6 l5 J5 W. s3 y2 u9 mm.matcher() 如果符合条件,返回true,否则返回false1 i! z  [' A6 x
m.find() 如果如果找到子序列符合匹配条件返回true) n) n/ Y' U  E& _* V. d: C- j
二、各种正则表达式/ p4 C: W  k; [& F4 D
1、数字、字母和下划线
8 k9 v5 M) R# `# q! ]2 o" {# ~3 d; Q[A-Za-z0-9_]+
; d5 g. m; |7 d) q* D2、数字和字母. K1 J: M" @/ q
[A-Za-z0-9]+
/ ~6 _3 D) n! k6 M3、邮箱
% {6 I8 g' O/ k5 r$ v/ S^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$
0 c' T* M- K/ x
头像被屏蔽

禁止发言

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

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

GMT+8, 2018-6-23 02:30

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部