大哥,你是先构造后传参的。所以myView的构造中先输出所以是0啊。还有,其实这个问题我也没看大明白楼主想说些啥,猜测...

解决方案 »

  1.   


    screenWidth = getScreenWidth();
    screenHeight = getScreenHeight();
    的时候,还没有执行
    myview.setScreenWidth(screenWidth);
    myview.setScreenHeight(screenHeight);
    这两句,所以取到的当然是0了。你在main类最好,取这两个值就是你想要的了。
      

  2.   

     myview=new myView(this);
    这里构造函数有问题: 
    screenWidth = getScreenWidth();
    screenHeight = getScreenHeight();
    System.out.println(screenWidth);
    System.out.println(screenHeight);
    在创建对象的时候,你getScreenWidth()和getScreenHeight()的值都是默认返回0的,所有不对
      

  3.   

    在创建myView对象的时候,可以把两个值传进去
      

  4.   

    5楼正解
    你的输出语句在myview类的构造函数里边,这个时候是没有获取到那些值的,所以会输出0,但后来你调用两个方法进行宽高的设置时,输出语句已经执行完毕了
      

  5.   

    同意6楼观点
    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()*/);
      

  6.   

    ....LZ代码写晕了  screenWidth=display.getWidth();//这里
      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绘制再去用这个尺寸画图
      

  7.   

    或者这样写构造:private main mContext = null;
    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);
    }就行了