如题,
这里上传一段主要代码,求解view在什么条件下才能取到宽度和高度,要getWidth()和getHeight()
private WindowManager wm = null;
private WindowManager.LayoutParams params = new WindowManager.LayoutParams();
private FrameLayout mFrameLayout; public void initView() {
mFrameLayout = new FrameLayout(getContext());
wm = (WindowManager) getContext().getSystemService(Activity.WINDOW_SERVICE);
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
| WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.width = WindowManager.LayoutParams.FILL_PARENT;
params.height = WindowManager.LayoutParams.FILL_PARENT;
params.alpha = 80;
params.gravity = Gravity.LEFT | Gravity.TOP;
params.format = PixelFormat.TRANSLUCENT;
}
class MyViewTouchListener implements View.OnTouchListener {
//在进入touch事件前,已经调用过initView()函数了
int eventaction = event.getAction();
public boolean onTouch(View v, MotionEvent event) { switch (eventaction) {
case MotionEvent.ACTION_DOWN:
wm.addView(mFrameLayout, params);
mFrameLayout.removeAllViews();
mFrameLayout.setVisibility(INVISIBLE);
//从log里可以看出在第一次touch down的时候,取到的大小总是0, 以后的touch down事件就能取到正常值
Log.i(TAG,"...mFrameLayout width........"+mFrameLayout.getWidth()+"....mFrameLayout height..."+mFrameLayout.getHeight());
break;
case MotionEvent.ACTION_MOVE:
。
case MotionEvent.ACTION_UP:
。
case MotionEvent.ACTION_CANCEL:
。
}
return false;
}
} 从log里可以看出在第一次touch down的时候,取到的大小总是0, 以后的touch down事件就能取到正常值了
这到底是为什么,难道第一次没有onDrow(), 第二次就onDrow()了?!! 请高手解惑
这里上传一段主要代码,求解view在什么条件下才能取到宽度和高度,要getWidth()和getHeight()
private WindowManager wm = null;
private WindowManager.LayoutParams params = new WindowManager.LayoutParams();
private FrameLayout mFrameLayout; public void initView() {
mFrameLayout = new FrameLayout(getContext());
wm = (WindowManager) getContext().getSystemService(Activity.WINDOW_SERVICE);
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
| WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.width = WindowManager.LayoutParams.FILL_PARENT;
params.height = WindowManager.LayoutParams.FILL_PARENT;
params.alpha = 80;
params.gravity = Gravity.LEFT | Gravity.TOP;
params.format = PixelFormat.TRANSLUCENT;
}
class MyViewTouchListener implements View.OnTouchListener {
//在进入touch事件前,已经调用过initView()函数了
int eventaction = event.getAction();
public boolean onTouch(View v, MotionEvent event) { switch (eventaction) {
case MotionEvent.ACTION_DOWN:
wm.addView(mFrameLayout, params);
mFrameLayout.removeAllViews();
mFrameLayout.setVisibility(INVISIBLE);
//从log里可以看出在第一次touch down的时候,取到的大小总是0, 以后的touch down事件就能取到正常值
Log.i(TAG,"...mFrameLayout width........"+mFrameLayout.getWidth()+"....mFrameLayout height..."+mFrameLayout.getHeight());
break;
case MotionEvent.ACTION_MOVE:
。
case MotionEvent.ACTION_UP:
。
case MotionEvent.ACTION_CANCEL:
。
}
return false;
}
} 从log里可以看出在第一次touch down的时候,取到的大小总是0, 以后的touch down事件就能取到正常值了
这到底是为什么,难道第一次没有onDrow(), 第二次就onDrow()了?!! 请高手解惑
解决方案 »
- (类型转换)时间SimpleDateFormat.format()返回值,转int型,大神指点
- IConnectivityManager 链接电脑,USB数据绑定
- Android通讯
- 应用程序退出不了,应用程序中包括线程和服务
- 怎么让多个activity界面 像浏览网页一样前进后退刷新停止
- SharedPreferences的数据究竟存去哪了?
- android1.5 cupcake编译出问题,请帮我看看~~
- 有既支持Iphone又支持android开发的工具软件吗
- 问如何访问跟apk一起打成包的图片文件?
- 新手求教,如何解决此处错误
- Android中调用urlConnectoin.getInputStream 报错java.io.EOFException
- TabHost和独立的Activity跳转问题
不知道和你的这句代码是不是有关,
可以适当调一下
把这句话去掉,或是设为VISIBLE,都一样,在第一次还是取不到值
wm.addView(mFrameLayout, params);
把这句提前调用试试 。
你可以在一初始化mFrameLayout时就addview,然后隐藏