Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65

Imageview растянуть изображение по вертикали и обрезать по горизонтали

10.02.2016, 23:22. Показов 9731. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, для фона бокового меню нужно поместить картинку, что б по вертикали растягивалась, а по правой стороне обрезалась, пытаюсь как то через imageview сделать. Кто подобные задачи решал?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2016, 23:22
Ответы с готовыми решениями:

Как растянуть скролбар по вертикали или горизонтали?
Вообще как его правильно присобачить? Сейчас он просто прямоугольничком таким маленьким в уголочку, а надо ведь чтобы во всю...

Как скроллить изображение по вертикали и горизонтали?
Привет великие обитатели сего форума, нужна ваша помощь, проблема в следующем. есть форма на ней изображение, данное изображение можно...

Как можно отразить загружаемое изображение по горизонтали/вертикали ?
Здравствуйте, хотел написать мини игру по типу марио, и логично что при движении в разные стороны персонаж должен и смотреть в разные...

10
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
11.02.2016, 10:00
xaat, добрый день!
Что за боковое меню? Какого примерно размера картинка? Должны ли сохраняться пропорции?
0
59 / 48 / 13
Регистрация: 03.09.2013
Сообщений: 474
11.02.2016, 10:03
Товарисч хочет в дравер боковой поместить картинку, я так понял. Но лучше этого не делать. Не по фен шую так скажем.
1
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
11.02.2016, 10:44
Цитата Сообщение от DemD10 Посмотреть сообщение
Но лучше этого не делать. Не по фен шую так скажем.
Че это? Фен шуй у нас гугл придумывает, а у него везде там есть картинки.

Добавлено через 18 минут
xaat, а растянуть очень просто - добавляем в xml ImageView, вешаем на него картинку и добавляем параметр
XML
1
android:scaleType="fitXY"
И картинка растянется на весь ImageView.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
11.02.2016, 11:00
Цитата Сообщение от Spelcrawler Посмотреть сообщение
И картинка растянется на весь ImageView.
В общем, если взглянуть на http://developer.alexanderklim... geview.php, то это не так, как просит автор. Возможно, следует это сделать программно вроде того, что здесь: http://stackoverflow.com/quest... -match-par.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.02.2016, 11:55
ТСу надо бы уточнить что именно он подразумевает под боковым меню
куда картинка ставится - в шапку или под меню
иначе напрасная трата времени
0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
11.02.2016, 12:30  [ТС]
Добрый день всем.
xaat, добрый день!
Что за боковое меню? Какого примерно размера картинка? Должны ли сохраняться пропорции?
Товарисч хочет в дравер боковой поместить картинку, я так понял. Но лучше этого не делать. Не по фен шую так скажем.
Да именно так, кроме того что делать это у меня нет особого желания ), как и возможности не делать)
Нужно под Drawer, положить фон, Drawer без шапки. И "просят" что б картинка растягивалась по высоте и ширине пропорционально, но то что не влезает, справа обрезалось. Картинку фоном сделать то не проблема, но вот обрезать ее как? Сейчас пытаюсь создать свое Imageview
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.02.2016, 12:54
а если так
XML
1
2
3
4
5
6
7
8
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:background="@drawable/bird_bitmap"
        app:menu="@menu/activity_drawer_drawer" />
и в папке drawable лежит сама картинка, в моем случае bird.jpg и создаем файл bird_bitmap.xml
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<layer-list>
    <item xmlns:android="http://schemas.android.com/apk/res/android">
        <bitmap
            android:gravity="fill_vertical|left"
            android:src="@drawable/bird" />
    </item>
</layer-list>
1
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
12.02.2016, 11:10  [ТС]
Паблито,
Не взлетело в таком варианте. Паблито можешь отписаться мне в личку?

Сделал через свой ImageView, поместил его фоном. Может обрезать картинку по любой из сторон. Может кому пригодится.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;
 
//Now to top crop, just call setOffset(0,0) , bottom crop setOffset(0,1),
// left crop is also setOffset(0,0), and right crop setOffset(1,0)
public class CropImageView extends ImageView {
    float mWidthPercent = 0, mHeightPercent = 0;
 
    public CropImageView(Context context) {
        super(context);
        setup();
    }
 
    public CropImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setup();
    }
 
    public CropImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setup();
    }
 
    // How far right or down should we place the upper-left corner of the cropbox? [0, 1]
    public void setOffset(float widthPercent, float heightPercent) {
        mWidthPercent = widthPercent;
        mHeightPercent = heightPercent;
    }
 
    private void setup() {
        setScaleType(ScaleType.MATRIX);
    }
 
    @Override
    protected boolean setFrame(int l, int t, int r, int b) {
 
        Matrix matrix = getImageMatrix();
        float scale;
        int viewWidth = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
        int viewHeight = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
        int drawableWidth = getDrawable().getIntrinsicWidth();
        int drawableHeight = getDrawable().getIntrinsicHeight();
        // Allow for setting the drawable later in code by guarding ourselves here.
        if (getDrawable() != null) {
            drawableWidth = getDrawable().getIntrinsicWidth();
            drawableHeight = getDrawable().getIntrinsicHeight();
        }
 
        // Get the scale.
        if (drawableWidth * viewHeight > drawableHeight * viewWidth) {
            // Drawable is flatter than view. Scale it to fill the view height.
            // A Top/Bottom crop here should be identical in this case.
            scale = (float) viewHeight / (float) drawableHeight;
        } else {
            // Drawable is taller than view. Scale it to fill the view width.
            // Left/Right crop here should be identical in this case.
            scale = (float) viewWidth / (float) drawableWidth;
        }
 
        float viewToDrawableWidth = viewWidth / scale;
        float viewToDrawableHeight = viewHeight / scale;
        float xOffset = mWidthPercent * (drawableWidth - viewToDrawableWidth);
        float yOffset = mHeightPercent * (drawableHeight - viewToDrawableHeight);
 
        // Define the rect from which to take the image portion.
        RectF drawableRect = new RectF(xOffset, yOffset, xOffset + viewToDrawableWidth,
                yOffset + viewToDrawableHeight);
        RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
        matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.FILL);
 
        setImageMatrix(matrix);
 
        return super.setFrame(l, t, r, b);
    }
}
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.02.2016, 15:51
что значит не взлетело?
0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
12.02.2016, 21:23  [ТС]
что значит не взлетело?
Не заработало в нужно мне виде, возможно у меня руки чуть не так). Сделал как сделал, не сильно красиво, но работает.

Паблито,
И всем остальным, спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2016, 21:23
Помогаю со студенческими работами здесь

Растянуть пальцами ImageView
Здравствуйте! А есть какой нибудь способ масштабировать картинку в ImageView в приложении пальцами? Нашел несколько туториалов, что-то про...

ScrollViewer по вертикали и горизонтали
Странно, смотрел примеры, но у меня не выходит, мне нужно чтобы были полосы прокрутки внизу и справа, но я знаю что фото явно больше,...

Прокручиваемый по горизонтали/вертикали диалог
Как создать прокручиваемый по горизонтали и по вертикали диалог (базовый класс CDialog)? Не могли бы Вы показать образец кода или дать...

Текст в центре li по вертикали и горизонтали
Что то я не могу сообразить, как это реализовать. в общем нужно текст в &lt;li&gt; расположить по центру области. Собственно вот миниатюра,...

JS Слайд прокрутка по горизонтали и по вертикали
И снова я Задача вот в чем. Для начала пример, какая прокрутка требуется - http://webdesigntutsplus.s3.amazonaw...src/index.html Нажал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru