Я пытаюсь скрыть часть изображения, чтобы пользователь не видел ее. Сначала я скопировал пиксели Bitmap на другой битмап, не копируя только те пиксели, которые мне нужны, и сделав второй растровый рисунок правильным размером при создании. Это сработало, но у меня много больших изображений, и, к сожалению, это приводит к OOM. Поэтому вместо этого я подумал об использовании ClipDrawable для рисования изображения и создания пикселей, которые мне не нужны невидимы.Использование ClipDrawable для скрытия части и ImageView
Код выглядит следующим образом
ClipDrawable clipDrawable = new ClipDrawable(new BitmapDrawable(resources, bitmap), gravity, orientation);
clipDrawable.setLevel(level);
// Cannot use as the imageview source. Must use background or else we don't get anything on the screen.
picture.setBackground(clipDrawable);
// This is super important. Do not modify this! Without it you will not get the fullscreen image working and the ImageView will be deleted
// from the parent layout.
picture.setImageResource(android.R.color.transparent);
Идея заключается в том, что я рассчитать уровень в зависимости от размера изображения, так что я скрываю пиксели, мне не нужно. И это работает. Только я не понимаю, почему мне нужно использовать
picture.setBackground(clipDrawable);
picture.setImageResource(android.R.color.transparent);
вместо более нормальный:
picture.setImageDrawable(clipDrawable);
Если я сделать второй более нормальный пример, то я не получаю ничего в ImageView, но если я установил его как фон и поместил на него прозрачный образ, тогда он будет работать. Поскольку я хочу еще больше манипулировать ImageView с помощью класса масштабирования, которому требуется изображение, заданное как src, а не как фоновое изображение, у меня не может быть обоих, либо я получаю показ ClipDrawable, либо у меня есть увеличение изображения.
Любая помощь будет оценена!