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

星组游戏论坛

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

QQ登录

只需一步,快速开始

查看: 1325|回复: 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可以实现浮层效果+ j$ Y7 W; {) `  i4 v- Z& I
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出窗口,不会使宿主Activity组件失去焦点,也就是说PopupWindow弹出后,你仍可以与宿主Activity进行交互,Dialog却不能做到这一点。
0 D8 h4 X1 ^' X+ b' P8 {5 A二、主要方法有:5 H. @1 Y/ r/ y" d4 z
1、可以自定义view,通过LayoutInflator方法;
: h: G# A1 w/ A# dView popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,false);5 e9 e7 M3 x. j2 V- k$ m
2、可以出现和退出时显示动画;! }- \$ m" }5 n' p5 t7 m
popupWindow.setAnimationStyle(R.style.AnimationFade);
, F0 M  B8 u3 Q" X0 v3、popupWindow.setOutsideTouchable(true)
/ M1 z6 |' u, u3 Z# J+ F$ V0 M这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。
. g' H' B+ h+ C2 X% N当然这里很明显只能在Touchable下才能使用
$ n  ?3 m" O$ V# p' P/ R' {0 k4、popupWindow.setFocusable(false);
' i( d, ?" I* S9 E2 c( k) b3 ^说明PopuWindow不能获得焦点,即使设置了背景不为空也不能点击外面消失,只能由dismiss()消失
) |; c0 n; g3 r6 t但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉4 m5 H( T# G6 y: v: X& l- I
三、代码
  A0 ^8 d) v8 m" \- N$ O1、创建
8 z' c! U4 M" _, U' J1 L# IPopupWindow popupwind=new PopupWindow(view,宽度,高度);
* h2 e8 [% D; I! i$ O, q2、显示% [8 m/ K; l* B/ o
popupWindow.showAsDropDown(view);
) D# O% Z( _! v或者
3 e9 j2 n! q$ N0 u# qpopupWindow.showAsDropDown(view,(screenWidth-dialgoWidth)/2, 0); 设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量 3 g- f+ K1 _# a7 b) x( ~: h6 y
或者
( A( c& r0 c: B- dpopupWindow.showAtLocation(findViewById(R.id.layout),Gravity.CENTER, x, y); 表示弹出窗口以parent组件为参考,位于中间,偏移量为x,y9 |! B0 J( I4 ~1 g
3、消失6 y4 l5 B7 Y- ~) D- B- h
popupwind.dismiss();6 }" j: j" |4 m  T
4、设置背景
+ w0 ^9 b4 T$ \( w* H, Hpopupwind.setBackgroundDrawable
) E8 w3 f6 Q0 H/ vIntent传值# U* s. Y% [) \* a
一、通过putExtra()方法传值' J/ b# v# S6 Y8 [! W. t6 x
传值:8 B* h- g0 ?( K5 `
Intent intent=new Intent();; u) n' g8 S, f/ Q* O$ k9 n
intent.putExtra("extra", "Welcome to ..."); 传进去,extra只是一个标记) `# @( @2 i# `) P
/ [7 S2 [. a, |( a
取值:
4 g% Y8 S8 s; n7 gIntent intent=getIntent();
* d* B3 g' v! N: RString stringValue=intent.getStringExtra("extra"); 得到值3 _9 O4 g& t$ s
二、对象的传值; X! N' e+ T2 \
ActivityA:2 @* F6 f5 t$ c& q1 w5 U1 h, G
Intent intent=new Intent(); 1 ]1 W( [& c' w4 v) }) n% B' o
intent.setClass(ActivityA.this,ActivityB.class);
5 s: T* L# n' i# s, y+ `9 Q7 ~Student s=new Student("shao",20);
% B$ p" H% e0 S, m0 {- Mintent.putExtra("标记", s);
! \) g) q3 _  ^* [7 w: j: W2 SstartActivity(intent);
1 U2 m+ M( ]2 j; N" ]! KActivityB:
. Z- B( P2 h) A$ y0 S" ~% x$ |9 EIntent intent=getIntent();
% o. e( [) t( e* D: A( o# q1 @# q; AStudent s=(Student)intent.getSerializable("标记");
7 {3 N. c$ A7 ?. u注意:" I& O) B  P- F- @
1、在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。
$ B" r. e0 h# S5 q3 G2、在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。
$ ?% i- q: k* E- f  C1 s. L3、在进行对象传递的时候,取值的时候记得强制转换+ H0 H1 y2 Q: ]* K, s
三、Bundle传值
% {% P( t2 h# h& [传值:# \  V; |# K# `1 J7 K; J5 D
Intent intent=new Intent();, a5 ?1 b0 O, {7 X, @1 X
Bundle bundle=new Bundle();
8 q! R4 `5 n5 pbundle.putDouble("标记",内容);4 u  n/ @/ ~" _! K- x- t! D
bundle.putString("标记","内容");; X3 D' v- `! ]- p
intent.putExtras(bundle);
, W5 f, e/ m4 v* A. ]3 p) X6 f取值:
( ]5 q$ |. k9 \8 ]$ ]4 u# e0 ?Bundle bundle=this.getIntent().getExtras();
- h- a# |6 B: f1 o$ kString s=bundle.getString("标记");6 g9 L5 ^, ^1 \4 F. K
Double d=bundle.getDouble("标记");
3 P4 J# T: O6 W( F四、Intent和Bundle的区别
4 k+ ^8 @- h8 {/ s举个例子先:, n1 j! @) v. u; j: a
我现在要从A界面 跳转到B界面或者C界面。这样的话,我就需要写2个Intent。
+ T" u) q& I. |* @: q) v- [如果你还要涉及的传值的话你的Intent就要写两遍添加值的方法
6 n9 q4 C! w" O+ c那么,如果我用1个Bundle直接把值先存里边,然后再存到Intent中不就更简洁吗?! I3 Q# y" X$ p
正则表达式
6 n& W2 K; g! Y. N5 G/ ?一、利用正则表达式判断& \* m/ |. w5 n9 p
Pattern p; 模式对象
8 N& V+ w7 \8 L1 Y4 N9 q; L0 b( lMatcher m; 匹配对象5 h3 P/ @! M5 V: l
p=Pattern.compile("正则表达式"); 初始化模式对象
2 k! Y1 b( U+ C% F9 h/ f& Km=p.matcher("需要验证的内容"); 初始化匹配对象) I4 l; R3 n! `3 q
m.matcher() 如果符合条件,返回true,否则返回false
3 f% J+ _: g0 S% }3 q0 L( g$ `m.find() 如果如果找到子序列符合匹配条件返回true* z( ?& s" K8 |
二、各种正则表达式* \% k0 d1 d' j9 a( A+ O2 l
1、数字、字母和下划线
1 d$ F8 d4 n% o" I1 ~+ t[A-Za-z0-9_]+
1 R5 f1 F4 s1 |2、数字和字母+ V9 W7 _# A5 l4 k8 t. S& {
[A-Za-z0-9]+* g+ D9 }; E7 A  Q
3、邮箱. ~6 N2 l3 Y8 w9 e& X$ {
^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$
; E/ H. c1 \. o( e4 X1 ^5 r( \
头像被屏蔽

禁止发言

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

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

GMT+8, 2017-11-20 19:35

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部