设置监听器的几种方式

因为前面一个项目,纠结于获取屏幕坐标纠结了好久,突然发觉竟然是因为然发觉竟然是因为如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到数字。

下面引用下别人博客里面获取绝对坐标(当前窗口,整个屏幕)的方式:

getLocationOnScreen 计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
getLocationInWindow 计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标

getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲里的坐标
int[] location = new  int[2] ;
view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
location [0]--->x坐标,location [1]--->y坐标

回到主题---设置监听器的几种方式:

一:在OnCreate里面创建监听器并实现

view.setOnClickListener(new OnClickListener()

{

@Overrid

public void onClick(View v)

{

//功能代码段

}

});

二:在OnCreate里面只是将控件与监听器绑定,在OnCreate外对监听器进行实现(一)

由于有可能会遇到我的开头提到的问题,所以需要采用第二种方式才能获取正确的坐标。

view.setOnClickListener(new btnOnClickListener());

在OnCreate外进行实现:

class btnOnClickListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//功能代码段
}

}

三:在OnCreate里面只是将控件与监听器绑定,在OnCreate外对监听器进行实现(二)

btn1.setOnClickListener(this);

btn2.setOnClickListener(this);

public void onClick(View v){

if(v == btn1){

//设置btn1的动作}

else if(v == btn2){

//设置btn2的动作}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值