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

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

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Картинка по ширине и не сжата - Android

24.07.2013, 23:53. Просмотров 632. Ответов 9
Метки нет (Все метки)

Скажите пожалуйста. Загружаю картинки из интернета в listView и они конечно разного размера загружаются. Каким образом можно сделать так чтобы картинка всегда была по ширине экрана а высота уже в зависимости от того как она расширена по сторонам, но чтобы пропорции картинки не исказились ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2013, 23:53     Картинка по ширине и не сжата
Посмотрите здесь:

Android кнопка-картинка
Android Расположение SeekBar: чтобы картинка на заднем плане была все также растянута по всей высоте и ширине экрана
Картинка Android
TextView обрезается по ширине экрана Android
Android Как нарисовать текст в прямоугольнике с переносом слов по ширине и отрезанием текста по высоте?
Android Как растянуть 3 кнопки по ширине layout?
Картинка в картинке Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2013, 23:55     Картинка по ширине и не сжата #2
поэкспериментируйте с android:scaleType
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.07.2013, 23:58  [ТС]     Картинка по ширине и не сжата #3
Цитата Сообщение от V0v1k Посмотреть сообщение
поэкспериментируйте с android:scaleType
пробовал - подошло более менее android:scaleType="fitXY", но оно растягивается по ширине как надо, а по высоте сжимает и идёт искажение. Как бы чтобы оно ещё и по высоте растягивало сколько нужно?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2013, 00:00     Картинка по ширине и не сжата #4
та вроде "fitXY" растягивает до предела обе стороны, а если нужно только ширину, тогда наверное "fitY", если есть такое.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.07.2013, 00:10  [ТС]     Картинка по ширине и не сжата #5
Цитата Сообщение от V0v1k Посмотреть сообщение
та вроде "fitXY" растягивает до предела обе стороны, а если нужно только ширину, тогда наверное "fitY", если есть такое.
да почему-то не растягивает и "fitY" нет такого только вместе fitXY".
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2013, 00:21     Картинка по ширине и не сжата #6
если ни один scaleType не подошел, тогда нужно писать кастомный дравейбл.
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.07.2013, 02:53  [ТС]     Картинка по ширине и не сжата #7
Цитата Сообщение от V0v1k Посмотреть сообщение
если ни один scaleType не подошел, тогда нужно писать кастомный дравейбл.
а можете привести пример?

Добавлено через 1 час 32 минуты
а то я не делал никогда, кастомный дравейбл.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2013, 03:08     Картинка по ширине и не сжата #8
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
public class Square extends Drawable
{
    private final Paint mPaint;
    private final RectF mRect;
 
    public Square()
    {
        mPaint = new Paint();
        mRect = new RectF();
    }
 
    @Override
    public void draw(Canvas canvas)
    {
        // Set the correct values in the Paint
        mPaint.setARGB(255, 255, 0, 0);
        mPaint.setStrokeWidth(2);
        mPaint.setStyle(Style.FILL);
 
        // Adjust the rect
        mRect.left = 15.0f;
        mRect.top = 50.0f;
        mRect.right = 55.0f;
        mRect.bottom = 75.0f;
 
        // Draw it
        canvas.drawRoundRect(mRect, 0.5f, 0.5f, mPaint);
    }
 
    @Override
    public int getOpacity()
    {
        return PixelFormat.OPAQUE;
    }
 
    @Override
    public void setAlpha(int arg0)
    {
    }
 
    @Override
    public void setColorFilter(ColorFilter arg0)
    {
    }
}
Добавлено через 7 минут
вот пример реализации аналога android:scaleType="centerCrop" в кастомном View
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
@Override
       protected void onDraw(Canvas canvas) {
             int bitmapWidth = mBitmap .getWidth();
             int bitmapHeight = mBitmap .getHeight();
             int viewWidth = getWidth();
             int viewHeight = getHeight();
             float widthRatio = (float) viewWidth / bitmapWidth;
             float heightRatio = (float) viewHeight / bitmapHeight;
 
             mDrawRect.left = 0;
             mDrawRect.top = 0;
             mDrawRect.right = bitmapWidth;
             mDrawRect.bottom = bitmapHeight;
 
             // scaling
             if (widthRatio != 1 || heightRatio != 1) {
                   float biggestRatio = widthRatio > heightRatio ? widthRatio
                              : heightRatio;
                   mDrawRect.right = (int) ( mRect.right * biggestRatio);
                   mDrawRect.bottom = (int) ( mRect.bottom * biggestRatio);
            }
 
             // centering
             if (mDrawRect .width() > viewWidth) {
                   int widthDifference = mDrawRect .width() - viewWidth;
                   int offset = widthDifference / 2;
                   mDrawRect.left -= offset;
                   mDrawRect.right -= offset;
            }
 
             if (mDrawRect .height() > viewHeight) {
                   int heightDifference = mDrawRect .height() - viewHeight;
                   int offset = heightDifference / 2;
                   mDrawRect.top -= offset;
                   mDrawRect.bottom -= offset;
            }
 
            canvas.drawBitmap( mBitmap, null , mDrawRect , null);
      }
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.07.2013, 05:27  [ТС]     Картинка по ширине и не сжата #9
огромное спасибо, а вот теперь главный вопрос как это применять?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2013, 11:12     Картинка по ширине и не сжата
Еще ссылки по теме:

LinerLayout не полностью заполняет HorizontalScrollView при ширине и длине "match_parent" Android
Картинка в SQLite Android
Android Изображение, растянутое по ширине родителя, со скроллом
Равномерно распределить элементы по ширине Android
Выравнивание текста в TextView по ширине Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2013, 11:12     Картинка по ширине и не сжата #10
первый пример:
Java
1
imageView.setImageDrawable(new Square());
второй: просто копируете в свой кастомный View.
Yandex
Объявления
25.07.2013, 11:12     Картинка по ширине и не сжата
Ответ Создать тему
Опции темы

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