Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
#1

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

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

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

Прокрутка по горизонтали и по вертикали одновременно
Поддерживает ли Android прокрутку по вертикали и по горизонтали одновременно?...

Не загружается изображение в imageview
У меня проблема с imageview. При попытке загрузить туда битмап (любым способом)...

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

Как обрезать изображение?
Добрый день, возник вопрос - как можно обрезать изображение с устройства,...

Есть задача. Увеличить изображение установленное в imageView щипком
Есть задача. Увеличить изображение установленное в imageView щипком.Работаю в...

10
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
11.02.2016, 10:00 #2
xaat, добрый день!
Что за боковое меню? Какого примерно размера картинка? Должны ли сохраняться пропорции?
0
DemD10
59 / 48 / 13
Регистрация: 03.09.2013
Сообщений: 465
11.02.2016, 10:03 #3
Товарисч хочет в дравер боковой поместить картинку, я так понял. Но лучше этого не делать. Не по фен шую так скажем.
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
11.02.2016, 10:44 #4
Цитата Сообщение от DemD10 Посмотреть сообщение
Но лучше этого не делать. Не по фен шую так скажем.
Че это? Фен шуй у нас гугл придумывает, а у него везде там есть картинки.

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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