Отобразить половину изображения в нижней части экрана

100
11

Мое требование состоит в отображении половины изображения колеса в нижней части экрана. Я не могу вырезать изображение, так как мне нужно повернуть его во время выполнения. Я пробовал разные варианты с относительной компоновкой (установив это как alignParentBottom как true и предоставив нижнюю границу -ve), линейную компоновку (путем предоставления полей). Он работает для обычных устройств mdpi (320X480), hdpi (480X800). Но когда высота устройства увеличивается, как и для (например, 480X870), все колесо становится отображаемым.

Изображение колеса

Wheel Image

и экран должен выглядеть так:

Output screen

Нужна помощь в этом. Заранее спасибо.

спросил(а) 2013-05-08T12:17:00+04:00 7 лет, 5 месяцев назад
1
Решение
109

Сначала установите imageview, выровняйте основание в относительном расположении в файле XML. Затем программно установите поле для просмотра изображения наполовину (или по вашему желанию) высоты изображения.

int height = imageview.getHeight();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
params.setMargins(0, height/2, 0, 0);
imageview.setLayoutParams(params);

ответил(а) 2019-02-06T16:43:00+03:00 1 год, 8 месяцев назад
41

установить андроид: translationY = "300dp" в XML файле.

Это переместит изображение в нижнюю сторону

ответил(а) 2019-02-06T15:36:00+03:00 1 год, 8 месяцев назад
42

Вы всегда можете обрезать кусок, который вам нужен, с помощью статического метода Bitmap.createBitmap(), а затем назначить его представлению:

Что-то вроде...

// Set some constants
private static final Bitmap SOURCE_BITMAP = BitmapFactory.decodeFile(....); // Get the source Bitmap using your favorite method :-)
private static final int START_X = 10;
private static final int START_Y = 15;
private static final int WIDTH_PX = 100;
private static final int HEIGHT_PX = 100;

// Crop bitmap
Bitmap newBitmap = Bitmap.createBitmap(SOURCE_BITMAP, START_X, START_Y, WIDTH_PX, HEIGHT_PX, null, false);

// Assign new bitmap to ImageView
ImageView image = (ImageView)findViewById(R.id.image_view);
image.setImageBitmap(newBitmap);

Здесь ваш SOURCE_BITMAP является вашим оригинальным рулевым изображением.

Надеюсь, это поможет.

ответил(а) 2013-05-08T12:24:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема