Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
#1

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

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

Здравствуйте, для фона бокового меню нужно поместить картинку, что б по вертикали растягивалась, а по правой стороне обрезалась, пытаюсь как то через imageview сделать. Кто подобные задачи решал?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2016, 23:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Imageview растянуть изображение по вертикали и обрезать по горизонтали (Программирование Android):

Прокрутка по горизонтали и по вертикали одновременно - Программирование Android
Поддерживает ли Android прокрутку по вертикали и по горизонтали одновременно? Если да, то как это сделать? В ScrollView можно только одну...

Смещается изображение за границы ImageView - Программирование Android
Моя головная боль - это рисование лайаутов. В очередной раз встал в ступор... Почему изображение из ImageView выходит за рамки самого...

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

Скопировать картинку из одной ImageView в другую ImageView - Программирование Android
В ImageView поставлена картинка методом setImageResource. По нажатию на неё, нужно такую-же картинку поставить в другую вью, а в первой...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
11.02.2016, 10:00 #2
xaat, добрый день!
Что за боковое меню? Какого примерно размера картинка? Должны ли сохраняться пропорции?
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 438
11.02.2016, 10:03 #3
Товарисч хочет в дравер боковой поместить картинку, я так понял. Но лучше этого не делать. Не по фен шую так скажем.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
11.02.2016, 10:44 #4
Цитата Сообщение от DemD10 Посмотреть сообщение
Но лучше этого не делать. Не по фен шую так скажем.
Че это? Фен шуй у нас гугл придумывает, а у него везде там есть картинки.

Добавлено через 18 минут
xaat, а растянуть очень просто - добавляем в xml ImageView, вешаем на него картинку и добавляем параметр
XML
1
android:scaleType="fitXY"
И картинка растянется на весь ImageView.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
11.02.2016, 11:00 #5
Цитата Сообщение от Spelcrawler Посмотреть сообщение
И картинка растянется на весь ImageView.
В общем, если взглянуть на http://developer.alexanderklimov.ru/.../imageview.php, то это не так, как просит автор. Возможно, следует это сделать программно вроде того, что здесь: http://stackoverflow.com/questions/1...l-to-match-par.
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,745
Завершенные тесты: 1
11.02.2016, 11:55 #6
ТСу надо бы уточнить что именно он подразумевает под боковым меню
куда картинка ставится - в шапку или под меню
иначе напрасная трата времени
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
11.02.2016, 12:30  [ТС] #7
Добрый день всем.
xaat, добрый день!
Что за боковое меню? Какого примерно размера картинка? Должны ли сохраняться пропорции?
Товарисч хочет в дравер боковой поместить картинку, я так понял. Но лучше этого не делать. Не по фен шую так скажем.
Да именно так, кроме того что делать это у меня нет особого желания ), как и возможности не делать)
Нужно под Drawer, положить фон, Drawer без шапки. И "просят" что б картинка растягивалась по высоте и ширине пропорционально, но то что не влезает, справа обрезалось. Картинку фоном сделать то не проблема, но вот обрезать ее как? Сейчас пытаюсь создать свое Imageview
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,745
Завершенные тесты: 1
11.02.2016, 12:54 #8
а если так
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>
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
12.02.2016, 11:10  [ТС] #9
Паблито,
Не взлетело в таком варианте. Паблито можешь отписаться мне в личку?

Сделал через свой 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);
    }
}
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,745
Завершенные тесты: 1
12.02.2016, 15:51 #10
что значит не взлетело?
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
12.02.2016, 21:23  [ТС] #11
что значит не взлетело?
Не заработало в нужно мне виде, возможно у меня руки чуть не так). Сделал как сделал, не сильно красиво, но работает.

Паблито,
И всем остальным, спасибо за помощь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2016, 21:23
Привет! Вот еще темы с ответами:

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

Текст в блоке по вертикали и горизонтали - HTML, CSS
Уже битый час сижу гуглю, но так и не смог найти ничего путного.. Нужно просто отцентровать текст внутри блока по вертикали и горизонтали....

Центрирование изображения по вертикали и горизонтали - HTML, CSS
Здравствуйте! Мне нужна помощь. Есть каталог товаров в интернет-магазине, необходимо правильное отображение картинки товара. Я добился...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.02.2016, 21:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru