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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1624|回复: 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 S! Y( l0 W- s/ {2 pPopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。
7 d, J/ C' v! g' {) b二、主要方法有:+ Y* n* e6 J4 H
1、可以自定义view,通过LayoutInflator方法;
, S2 p6 O' l+ c! VView popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);1 i3 L$ {! C. {
2、可以出现和退出时显示动画;8 M7 ]5 |. I. w1 u% }/ Y. H
popupWindow.setAnimationStyle(R.style.AnimationFade);
0 k; I( t7 ?% s- ^; Z0 h3、popupWindow.setOutsideTouchable(true), c+ v4 s/ p! F. n& D& Z; R
这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。
: b. i3 B* ^' f! ]当然这里很明显只能在Touchable下才能使用; m. r: e9 @3 q
4、popupWindow.setFocusable(false);
3 B, E' O" o' v; a; ]9 B6 M说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失0 H1 }& O: _1 S; v7 Z7 @2 k
但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉
- E# x- U/ X! Y+ Q# E# _6 r2 B三、代码
- ?  C! e' ^( \) G, b0 V1、创建
$ ^; S5 J, e3 @9 I5 e* M* TPopupWindow popupwind=new PopupWindow(view,宽度,高度);
9 Z# D/ a0 G+ K) ^4 u2、显示
+ C6 M. T  B- O2 A, Q& VpopupWindow.showAsDropDown(view);
  i+ q9 {, b; B- b/ e' u或者
* z7 c; V5 g+ B- ?popupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量   i* ]( R8 H1 E8 S
或者
$ D4 l7 w* r2 ?9 N9 J# l& _popupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y
3 J, K6 g5 r( Q% `* J, I+ |3、消失
$ g6 ~# u- c; y2 h3 Hpopupwind.dismiss();
" `% J) c7 {. r  t" R* |4、设置背景" v; ^* Z, S0 n" I- U5 J7 h
popupwind.setBackgroundDrawable2 w6 u" G5 {3 {: }
Intent传值
( m$ \9 J0 l( |9 X! o9 N: T6 r一、通过putExtra()方法传值% W9 l  G. c: Y
传值:
9 E# u3 m1 D! ]: J) q6 Q+ E6 m- d+ Y1 `# [Intent intent=new Intent();
2 P1 C/ n3 I+ Q9 p! b) A- m. jintent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记
2 Y, c) V; _6 |: d5 j3 Q0 Z2 T" @& Z& e2 O) U0 D: N
取值:4 m- t9 t; ]* P+ I
Intent intent=getIntent();
0 i% }$ [7 P$ [String stringValue=intent.getStringExtra("extra"); 得到值
1 f3 X* ?# ~6 ?+ Y+ J. M6 g二、对象的传值0 S# _" m, h& ?3 n
ActivityA:
3 }: |- Y( d9 b3 H9 W0 |! k7 {: hIntent intent=new Intent();
" A+ u8 r* ]& zintent.setClass(ActivityA.this,ActivityB.class);
  B& i8 c. g& N& C7 AStudent s=new Student("shao",20);: g  @  I7 g2 F( k! `+ v# `) k" R& _
intent.putExtra("标记", s);
  m- d( g! O& \# P7 [startActivity(intent);  v9 Z- x! _- F4 U5 S% s
ActivityB:
5 Z( G& j4 a. W) S. VIntent intent=getIntent();
' m. n' g; s. n- W7 UStudent s=(Student)intent.getSerializable("标记");
& r4 {- i( w/ d" E4 P5 D; R1 T注意:
% t# ]7 U3 H" [! b5 d* `1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。4 x/ ]" [2 G) s) C% I/ P1 p
2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。3 m: u9 Y, w) i/ ^$ R0 b% H' q
3、在进行对象传递的时候,取值的时候记得强制转换
; g8 e5 J4 n# Q  Q三、Bundle传值
) D- Q# F( v$ W" g. k传值:8 b. R# e7 F( m* R
Intent intent=new Intent();: [- p7 Z$ C0 K: Y: ?7 c( B( c' r
Bundle bundle=new Bundle();
  W4 a) M* q1 A" rbundle.putDouble("标记",内容);3 V& d9 ?% G0 A8 q6 ^
bundle.putString("标记","内容");( }% u" W& }4 G& f" Y
intent.putExtras(bundle);
# q7 I  m4 C* m5 S取值:
) f6 Z5 l4 a% Z8 D1 K5 Z1 gBundle bundle=this.getIntent().getExtras();
$ {+ T# b, X0 B$ O; @# U6 ^String s=bundle.getString("标记");
( m; X/ @5 {) ~- h, f, b+ I8 T  {Double d=bundle.getDouble("标记");
( U: Y# \3 u. `7 W+ u, }四、Intent和Bundle的区别
) W  }. ^# p7 f( i& t/ E! G举个例子先:" u( l4 l4 A7 x
我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。
: M4 C+ ^1 B# P3 y如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法
2 r$ C& s# `& f7 c/ f那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?
" X( x  v7 `4 y9 [5 U  Z* k正则表达式9 H& o3 k# a% \7 w3 Y
一、利用正则表达式判断( i. @9 O+ k6 S: [
Pattern p; 模式对象2 @; E7 }! ^" F& a# T4 P
Matcher m; 匹配对象
7 ^  b. H9 ^* r; b: [9 wp=Pattern.compile("正则表达式"); 初始化模式对象
8 I) g3 D; B& }m=p.matcher("需要验证的内容"); 初始化匹配对象
/ }# u( M2 O( }m.matcher() 如果符合条件,返回true,否则返回false
. G8 }& z+ s' V7 j/ Rm.find() 如果如果找到子序列符合匹配条件返回true1 \4 N$ G3 L! o8 `- f# B
二、各种正则表达式- q  Z- H2 Z3 {' j+ H
1、数字、字母和下划线
' {* P2 k% \9 \, G6 L9 J5 n# B[A-Za-z0-9_]+' e* t% g4 n. B- t& S1 j3 I$ S
2、数字和字母; A/ D! e' ~( y
[A-Za-z0-9]+
- R& j( Z% s& \" M! L; c3、邮箱
4 E0 l# m7 f. d4 o. X^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$
8 m* n5 {4 U4 B3 C3 {. Q

Rank: 4

UID
115225
星币
59
积分
348
阅读权限
40
注册时间
2016-7-25
最后登录
2017-10-24
发表于 2016-7-29 16:28:42 |显示全部楼层
好帖还是要收藏,请继续
1 k/ u' J7 l1 Y  K' y+ q9 t2 m4 X2 a$ K
* Z# g2 d  l/ P2 e0 V, C
0 D7 q5 {7 ?% W/ i7 b
& |8 Y, [4 m+ Q8 q" |+ }% v

1 _; u& u8 g; W& J1 O0 z6 y
/ ?& m1 o- j( d7 |% \: V/ ?0 n
9 R8 `: f# [7 B* {
+ t& F; r% a( Q8 w) ]3 P9 V
4 a% H+ f/ }3 q& B- B
+ k9 D3 P- i% G) k5 _9 M" ]2 U! r) [$ O/ K
7 R3 Z- A8 W% S- F
同心米粉 广西米粉 藤县米粉

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

GMT+8, 2019-2-22 20:31

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部