0

我正在使用这种 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 的值?

4

0 回答 0