Я создаю пользовательский компонент, который расширяет ImageView на Android. Функция компонентов довольно сложна - всегда заполнять высоту своего контейнера путем масштабирования, но обрезать пустое пространство по ширине. Он также автоматически применит преобразование поворота на 90 градусов, если ширина больше высоты, прежде чем применять любое масштабирование.Где вы должны применять преобразования при расширении Android ImageView?
Я знаю, как сделать эти преобразования и вывести их результаты в файл, чтобы я знал, что они работают правильно. То, что я не знаю, это где/какие методы делать это при расширении представления.
Я не включая код преобразования на данный момент, потому что это не представляется актуальным, но ниже показывает, где я называю эти преобразования в настоящее время
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (!mConversionComplete) {
applyTransformations(widthMeasureSpec, heightMeasureSpec);
}
Drawable imageDrawable = getDrawable();
if (imageDrawable != null) {
int height = MeasureSpec.getSize(MeasureSpec.AT_MOST);
int width = (int) Math.ceil((float) height * (float) imageDrawable.getIntrinsicWidth()/(float) imageDrawable.getIntrinsicHeight());
setMeasuredDimension(width, height);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
В настоящее время я делаю преобразование из onMeasure как мне нужно, чтобы быть (см. ниже). Я записываю ли я обращался преобразования, так что я их только один раз, но я думаю, что, вероятно, «право» место, чтобы сделать это, не является onMeasure
int targetHeight = MeasureSpec.getSize(heightMeasureSpec);
int targetWidth = MeasureSpec.getSize(widthMeasureSpec);
Вы читали пользовательский вид [учебник] (http://developer.android.com/training/custom-views/index.html)? –
Эй, да и попытался применить преобразования в onDraw, но не повезло. Учебник - это то, что заставило меня подумать, что «Мое мнение» может быть правильным, но реализация показалась мне взломанной, поэтому я подумал, что проконсультируюсь с некоторыми людьми здесь. –