Для решения аналогичной проблемы разместил большие картинки в assets/img и работаю с ними напрямую через BitmapFactory.decodeStream().
Далее проверяю и сравниваю размеры изображения и размеры экрана. Если первые больше вторых, уменьшаю картинку:
Bitmap.createScaledBitmap()
Такой подход избавляет от зоопарка картинок для разных размеров экранов и не забивает память. По окончанию использования, высвобождаю память.
Да, я упомянул отдельно эту тему. Срабатывает простейший подход с определением модуля дельты сдвига по осям, какой модуль больше, в том направлении движение. И пока не сработал MotionEvent.ACTION_UP двигаем в выбранном направлении или диаметрально противоположном, а остальные два не меняем.
if (Math.abs(deltaX) > Math.abs(deltaY) && isMoveBegin){
isXMove = true;
isYMove = false;
}
Далее проверяю и сравниваю размеры изображения и размеры экрана. Если первые больше вторых, уменьшаю картинку:
Bitmap.createScaledBitmap()
Такой подход избавляет от зоопарка картинок для разных размеров экранов и не забивает память. По окончанию использования, высвобождаю память.
if (Math.abs(deltaX) > Math.abs(deltaY) && isMoveBegin){
isXMove = true;
isYMove = false;
}