Android - Простой Custom View вопрос - PullRequest
0 голосов
/ 26 июля 2011

У меня есть пользовательский вид, в котором я рисую карту, а затем масштабирую вид до 1,5-масштабного коэффициента.

После масштабирования (масштабирование) - я получаю ширину и высоту вида, и она такая же, как и исходный размер. Таким образом, у меня есть:

canvas.scale(1.5, 1.5, 0, 0);
measure(getWidth()*1.5, getHeight()*1.5);

и он вызывает измерение с правильными размерами:

@Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(heightMeasureSpec, MeasureSpec.EXACTLY));
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);

    }
}

Но после завершения onMeasure, если я получу ширину и высоту просмотра, он снова будет таким же, как и раньше ...

И мне нужно, чтобы это был масштабированный размер ...

Ответы [ 3 ]

0 голосов
/ 26 июля 2011

Чтобы изменить размер представления, вам нужно снова выложить его родительский элемент.Сделайте два вызова для вашего просмотра: сначала укажите новый размер просмотра View.setLayoutParams(LayoutParams), затем вызовите View.requestLayout().

0 голосов
/ 27 июля 2011

Существует метод getMeasuredWidth / Height (), который должен дать вам измеренные значения View во время рисования.

0 голосов
/ 26 июля 2011

Я не уверен, но я думаю, что вам нужно использовать Матрицу здесь, применить ее к своему изображению / холсту, а затем использовать метод postscale () , чтобы сделать его эффективным. Надеюсь, это поможет

...