在基于ARM的设备上,getHeight()始终为0 onMeasure

时间:2017-03-01 10:59:26

标签: android arm android-animation

我有一个项目,我必须在其中填充一杯啤酒和泡泡&嘶嘶声效应。

我正在使用图书馆:https://github.com/andyb129/BeerProgressView &安培;在实现该库之后,动画不适用于基于臂的设备,即arm64-v8a& armeabi-V7A。

这是我的代码: https://drive.google.com/open?id=0B5kjnHTF2m1DWVNfQWtpYmlielk

我尝试将库添加为模块,并尝试使用gradle添加库。

此外,还在GitHub页面上询问了问题:https://github.com/andyb129/BeerProgressView/issues/7

示例代码正在运行: https://drive.google.com/open?id=0B5kjnHTF2m1DMXBIR2hwdUVleFU

如果有人能指出我的错误,我将非常感谢你。

要显示进度:自定义视图代码为:

 public void setBeerProgress(int beerProgress) {
        mBeerProgress = beerProgress;
        if (mBeerProgress > mMax){
            mBeerProgress = mMax;
        }
        if (mBeerProgress < 0){
            mBeerProgress = 0;
        }
        float pecent = mBeerProgress * 1.0f / mMax;
        mBeerProgressHeight = pecent * mBeerHeight;
        invalidate();
    }

在上面的代码中,mBeerHeight始终为0.

所以我提前搜索,

@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        mBeerWidth = (int) (getWidth() - mHaftBorderRadius);

        Log.d(TAG, "Pawan getHeight(): "+getHeight());
        mBeerHeight = (int) (getHeight() - mHaftBorderRadius);

        mBorderRectF.set(mHaftBorderRadius, mHaftBorderRadius, mBeerWidth, mBeerHeight);
    }

这里,在上面的代码中,getHeight()始终为0 ....: - (

1 个答案:

答案 0 :(得分:0)

终于得到了答案:

参考: getWidth() and getHeight return zero after onMeasure() (specific devices)

最新代码:

@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

//        mBeerWidth = (int) (getWidth() - mHaftBorderRadius);
        mBeerWidth = (int) (getMeasuredWidth() - mHaftBorderRadius);
        Log.d(TAG, "Pawan getMeasuredHeight(): "+getMeasuredHeight());
//        mBeerHeight = (int) (getHeight() - mHaftBorderRadius);
        mBeerHeight = (int) (getMeasuredHeight() - mHaftBorderRadius);




        mBorderRectF.set(mHaftBorderRadius, mHaftBorderRadius, mBeerWidth, mBeerHeight);
    }

getMeasureWidth()&amp; getMeasureWidth()将为您提供正确的宽度和宽度。高度。