如何在单独的线程中使用从onmeasure获得的值

时间:2013-07-19 13:13:03

标签: android

我正在使用这种omeasure方法来查找vew的宽度,并返回正确的值。

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {


        parentWidth = MeasureSpec.getSize(widthMeasureSpec);
        parentheight = MeasureSpec.getSize(heightMeasureSpec);
        this.setMeasuredDimension(
                parentWidth, parentheight);
        //Log.d("Measure", "width = " + parentWidth + ", height = " 
                //+ this.getMeasuredHeight());
    }

现在我想在以下if语句

中使用值parentWidth
public void run()
{
    a.flag2=true;
    while(a.flag2)
    {   
        try
        {
            sleep(200);
        }
        catch(Exception e)
        {
        }

    if(!a.flag1)
    {
        a.leftx+=10;
        a.rightx+=10;
        if(!a.flag3)
        {
            a.strt-=15;
            a.arc+=15;
        }   
        else
        {
            a.strt+=15;
            a.arc-=15;
        }

    }

    if(a.flag1)
    {
        a.leftx-=10;
        a.rightx-=10;
        if(!a.flag3)
            a.arc+=15;
        if(a.flag3)
            a.arc-=15;
    }   

    if(a.rightx==432)
    {

        a.topy+=60;
        a.bottomy+=60;
        a.flag1=true;
        a.strt=180;
        a.arc=315;  
    }

    if(a.leftx==0)
    {
        a.topy+=60;
        a.bottomy+=60;
        a.flag1=false;
        a.strt=45;
        a.arc=315;

    }
    if(a.bottomy>=660)
    {
        a.topy=60;
        a.bottomy=120;
    }

    if(a.strt==0 || a.arc==360)
    {
        a.flag3=true;
    }

    if(a.strt==45 || a.arc==315)
    {
        a.flag3=false;
    }
    if(a.n3==a.rightx&&a.n5==(a.topy+a.bottomy)/2)
    {
        a.i+=1;
        int low=1;
        int high=10;

        a.n=a.r.nextInt(high-low);
        a.n3=(a.n*10)+150;
        a.n5=(a.n*60)+90;

        a.f1=(float)a.n3;
        a.f2=(float)a.n5;



    }
    a.postInvalidate();
    }
}
}

这个if语句是在一个线程类中定义的。但不知何故,parentWidth的值没有被读取。如果我像“a.rightx == 432”那样对它进行编码,那么它就可以了。但是我不想硬编码它。我应该如何在这个线程中获得parentWidth的值?

0 个答案:

没有答案