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