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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1582|回复: 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可以实现浮层效果
9 U1 j9 g5 C% g9 Q' E4 SPopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。
" Z) x# {! a2 @) U9 a5 F' e$ b二、主要方法有:4 I. X. Q$ ]3 R6 _, f
1、可以自定义view,通过LayoutInflator方法;
3 m% j. }  z  V. z& s! UView popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);; O& k# K( M3 l- I; s' h
2、可以出现和退出时显示动画;( f1 d0 T, U/ H5 y) J/ U
popupWindow.setAnimationStyle(R.style.AnimationFade);
, J; [' H* R& I, y/ q& Y3、popupWindow.setOutsideTouchable(true)9 w' v. i# M7 d4 W+ p& h
这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。
" \# N. C' r2 ^+ l当然这里很明显只能在Touchable下才能使用
+ q9 `6 Z* t+ p: b4、popupWindow.setFocusable(false);
9 Q/ U% k+ D) q说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失
" A" s6 Z2 f* Z4 V/ J4 W2 Q但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉
# w7 d" B8 Q0 u+ V# \- z三、代码" d4 M5 t' F8 `' S
1、创建
# Y# s% W& O! N. a( B6 oPopupWindow popupwind=new PopupWindow(view,宽度,高度);! n; Q. m' t* ]5 J( [9 s, i" h
2、显示; ]* K/ U4 ^7 ]# G0 _, i4 Y
popupWindow.showAsDropDown(view); % i2 m- |6 x2 w. }/ l8 {6 V: A" {
或者
+ d! |$ l: m* |+ L, rpopupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量
# B& ?+ t  J/ i3 [0 q1 l* C/ c或者
7 [/ t  b3 W/ `* G: kpopupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y- w' G$ J/ \% j# c3 ^/ N- v. p
3、消失
# L. B; Q8 x+ Cpopupwind.dismiss();
; T/ |$ \  V+ B) I  y' s4、设置背景
  E& I/ f4 B$ j2 B/ \popupwind.setBackgroundDrawable! t7 |7 ]8 F0 W9 `. e
Intent传值
9 Y* z% e  y# \* J! T/ t% J一、通过putExtra()方法传值
3 Q9 h+ H4 H* F. `" R! b* E9 ^传值:) E- z  J( T( F, E2 }
Intent intent=new Intent();  `$ T. @1 A1 H3 y) b  g! G" s
intent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记; y2 n5 z! i! A. T0 {" A
/ v+ X8 @' t, K7 r1 d
取值:
, l$ k3 e" x; }6 Z* x  YIntent intent=getIntent();5 ?% x* `: D) Y: B" e$ G
String stringValue=intent.getStringExtra("extra"); 得到值
: S( ~; v, @; `二、对象的传值
2 d( W9 l! k+ m$ c# XActivityA:% o& {+ V+ e' n! g  Y+ {) i
Intent intent=new Intent();
3 k! G1 l9 q% f  ^9 R* Eintent.setClass(ActivityA.this,ActivityB.class);
& U6 F6 d/ s! h+ kStudent s=new Student("shao",20);
: k, l+ O  D/ U# H8 }1 `intent.putExtra("标记", s); - s9 ^5 M' g# L) ^/ _
startActivity(intent);
4 K* f* Z; L# M, XActivityB:  w$ W  G# i9 Q6 N
Intent intent=getIntent();
1 F) g4 G# V- t5 M8 iStudent s=(Student)intent.getSerializable("标记");
, v" Z  X! P& G, C; f" a注意:" O( a; W) U+ G
1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。
) l% m2 d6 O) _4 }% g2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。; j* [7 y8 F, v3 H- n1 F
3、在进行对象传递的时候,取值的时候记得强制转换. ^1 l! ]( Y- n) O
三、Bundle传值& g: A7 v4 P- r* n2 ?0 U: Q, i
传值:
  g) W% E! [0 z, [! h! x) x  K. x8 f" RIntent intent=new Intent();
3 _& }8 b7 h' M. H/ l7 ABundle bundle=new Bundle();
& H, Q! v# Y9 E! K8 N; f) c1 wbundle.putDouble("标记",内容);" I  r% ^  L5 I+ R
bundle.putString("标记","内容");. S3 s/ ]! [; z: p2 T8 Y; C
intent.putExtras(bundle);
& ]2 w* E5 B  u: R3 @8 |取值:8 J  a8 Q) ]* f
Bundle bundle=this.getIntent().getExtras();( w- N4 C- m) H" \6 r' ], w
String s=bundle.getString("标记");
4 V# O' o) X2 ]4 Q& Q$ lDouble d=bundle.getDouble("标记");1 U) t4 ~# }- X) N( ^
四、Intent和Bundle的区别
/ k- U& j4 X3 m% t, |! t+ n举个例子先:- m. K& a: J% C3 A
我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。1 N. [& a0 ~7 M2 X
如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法, j' n7 Y! c6 i5 G3 B9 D* i% n
那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?
7 Z* Z6 B8 N( O2 }. \& N+ z" w6 g正则表达式
3 [' y3 O" l/ O" H" W一、利用正则表达式判断: K9 a2 ~4 r8 q- `8 U
Pattern p; 模式对象' l) @" q& f9 n6 H
Matcher m; 匹配对象" s( `' Y( Y' x( g" T
p=Pattern.compile("正则表达式"); 初始化模式对象
' e* `8 l( U1 Om=p.matcher("需要验证的内容"); 初始化匹配对象
" K) {5 F" k" L8 P* C& o7 zm.matcher() 如果符合条件,返回true,否则返回false5 Z0 x5 l% ^! K# B* m
m.find() 如果如果找到子序列符合匹配条件返回true
# E' l9 h$ e2 {- I/ _5 m& H二、各种正则表达式7 A2 V% v' `& e2 q1 x3 {0 b
1、数字、字母和下划线. r' M+ N: |3 |2 j( V
[A-Za-z0-9_]+5 S; B; ~5 r+ o& B
2、数字和字母
% f6 q" a/ C' L6 P[A-Za-z0-9]+' a3 m% d5 R1 h. S
3、邮箱/ T+ F3 s$ e0 a, L& |- x- N
^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$/ {0 ]: n: P8 I, z/ x

Rank: 4

UID
115225
星币
59
积分
348
阅读权限
40
注册时间
2016-7-25
最后登录
2017-10-24
发表于 2016-7-29 16:28:42 |显示全部楼层
好帖还是要收藏,请继续8 O. @4 X0 \7 M- ?6 K9 E* p

/ C+ C  f0 M/ [/ J. f
( g' a+ C& F3 G* |$ Z( W/ N# R# i$ p8 S
1 r. @7 m. m7 Z* R! _% C
! Y0 p$ Q. t+ P( s8 U0 m2 S+ t

  q0 S6 H( X# o0 J  f7 E, S8 K! m# K/ W% I& {3 S
8 N: v3 W) _# e

9 g1 n2 ]8 W. P- C  K; S  j! O" u& k: N' u5 \6 ?

8 ~6 r6 i5 k0 G0 L$ B2 s( L9 X, z
3 h6 g  D" F' z2 j6 j9 |) ?) a; `同心米粉 广西米粉 藤县米粉

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

GMT+8, 2018-12-18 00:59

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部