大哥,你是先构造后传参的。所以myView的构造中先输出所以是0啊。还有,其实这个问题我也没看大明白楼主想说些啥,猜测...
解决方案 »
- Android 开发环境搭建困难
- 重编译framework-res.apk
- andorid 与windows 应用程序 如何通信
- 怎么一下子将SQLITE里面的某一个表的数据全部读出来,用LISTVIEW显示出来
- android是如何加载xml文件的??
- 不用js的方式 webview如何得到提交表单的值
- Android通过网络发送请求的问题
- 求助, 如何通过Adb命令读取联系人列表
- 如何在一个登陆页面,如果用户在EditView中输入了值点击Button按钮便跳转到另一个Activity,如果不输入值,则不跳转
- 求助安卓手机QQ聊天记录导出
- 如何获得执行动画之后的view的位置?
- 关于监听GestureDetector onFling事件的问题?
screenWidth = getScreenWidth();
screenHeight = getScreenHeight();
的时候,还没有执行
myview.setScreenWidth(screenWidth);
myview.setScreenHeight(screenHeight);
这两句,所以取到的当然是0了。你在main类最好,取这两个值就是你想要的了。
这里构造函数有问题:
screenWidth = getScreenWidth();
screenHeight = getScreenHeight();
System.out.println(screenWidth);
System.out.println(screenHeight);
在创建对象的时候,你getScreenWidth()和getScreenHeight()的值都是默认返回0的,所有不对
你的输出语句在myview类的构造函数里边,这个时候是没有获取到那些值的,所以会输出0,但后来你调用两个方法进行宽高的设置时,输出语句已经执行完毕了
myview=new myView(this);
这里构造函数有问题:
public myView(Context context) {
super(context);
myHolder = getHolder();
myHolder.addCallback(this);
screenWidth = getScreenWidth();
screenHeight = getScreenHeight();
System.out.println(screenWidth);
System.out.println(screenHeight);
传的值不对。值并没有传过去。你试着把宽度和高度付给一个Context对象然后用myview=new myView(/*new Context()*/);
screenHeight=display.getHeight();//这里获取宽高
/**呵呵 */
System.out.println(screenWidth+"______");
System.out.println(screenHeight+"______");
myview=new myView(this);//构造函数中直接就调用myView类中的宽高变量,但是还没有执行到下面两行,所以是0,java默认初始化...
//设置手机屏幕的宽和高
myview.setScreenWidth(screenWidth);//
myview.setScreenHeight(screenHeight);//这两句走完才将myView里的宽高变量赋值成功反正你myView构造也没做什么尺寸变化的设置,所以可以忽略,setScreen这两句之后,onDraw绘制再去用这个尺寸画图
public myView(Context context) {
super(context);
mContext = (main)context;
myHolder = getHolder();
myHolder.addCallback(this);
//screenWidth = getScreenWidth();
//screenHeight = getScreenHeight();
screenWidth = mContext.screenWidth;//main中的screenWidth定义为public
screenHeight = mContext.screenHeight;//screenHeight也要public
System.out.println(screenWidth);
System.out.println(screenHeight);
}就行了