使用onDraw方法ScaledRelativeLayout错误的比例

时间:2016-04-04 09:41:36

标签: android canvas android-custom-view ondraw

我成功创建了一个ViewPager,其中包含不同比例的项目(currentItem的比例为1.0f,其他比例为0.85f)。我使用这个自定义布局:

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RelativeLayout;

public class ScaledRelativeLayout extends RelativeLayout {
    private float scale = MainActivity.BIG_SCALE;

    public ScaledRelativeLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ScaledRelativeLayout(Context context) {
        super(context);
    }

    public void setScaleBoth(float scale) {
        this.scale = scale;
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
    }
}

它在我的Nexus 7(2012)上工作,但不在我的智能手机上,我无法理解为什么......我在想,也许我在onDraw方法中做了一个糟糕的比例经过一番搜索,我试试这个:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    canvas.scale(scale, scale, getWidth() / 2, getHeight()/2);
    canvas.restore();
}

没有任何效果,任何想法?

1 个答案:

答案 0 :(得分:0)

我通过扩展FrameLayout而不是RelativeLayout成功扩展我的布局,我不知道......如果有人可以解释为什么它使用FrameLayout但不能使用RelativeLayout ......