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

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

Войти
Регистрация
Восстановить пароль
 
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
#1

Масштабирование картинок, отрисованных на кнопках - Программирование Android

08.09.2015, 10:31. Просмотров 471. Ответов 9
Метки нет (Все метки)

Здравствуйте. Есть кнопки с отрисовнными на них картинками
XML
1
android:drawableLeft="@drawable/icon_temp_btn_on_off"
, где drawable/icon_temp_btn_on_off
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/therometr_Pic_Black" 
     android:state_pressed="false"/>
 
     <item android:drawable="@drawable/therometr_Pic_White"
    android:state_pressed="true"/>
</selector>
естественно на разных диагоналях экранов они либо смотрятся маленькими либо не влезают в кнопку. Подскажите как сделать так, чтобы картинки эти масштабировались в зависимости от размеров дисплея. И возможно ли сделать так: загрузить одну, заведомо большую картинку, с хорошим разрешением и как то настроить так, чтобы она уменьшалась под размер кнопки, а не обрезалась краями кнопки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2015, 10:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Масштабирование картинок, отрисованных на кнопках (Программирование Android):

Масштабирование картинок из drawable - Программирование Android
Здравствуйте! Суть в следующем, есть самодельное меню из картинок, при портретной ориентации находится вверху при ландшафтной слева. ...

Как рисовать на кнопках - Программирование Android
Есть кнопка на которой картинка и текст. Хочу картинку РИСОВАТЬ самому. Не сохраняя в файлы, а только для отображения - текст, линии,...

Изменение цвета текста на кнопках-заголовках TabLayout - Программирование Android
Разметка у меня такая: &lt;android.support.design.widget.TabLayout android:layout_width=&quot;match_parent&quot; ...

Перемещение картинок на кнопках - Delphi
Доброго времени суток. У меня такой вопрос. Есть 16 кнопок спидБаттон в ряд. У каждой есть своё изображение (Glyph) и мне нужно сделать...

Масштабирование картинок - jQuery
Помогите, пожалуйста. У меня имеется несколько картинок. Мне нужно сделать выбранную картинку масштабируемой с использованием библиотеки...

Масштабирование картинок и разные разрешения экранов - HTML, CSS
Имеется вот такой участок кода &lt;div class=&quot;blockwrap&quot;&gt; &lt;div class=&quot;centerblock&quot;&gt; &lt;a href=&quot;/&quot;...

9
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 598
08.09.2015, 11:45 #2
Цитата Сообщение от VV0lk Посмотреть сообщение
естественно на разных диагоналях экранов они либо смотрятся маленькими либо не влезают в кнопку. Подскажите как сделать так, чтобы картинки эти масштабировались в зависимости от размеров дисплея. И возможно ли сделать так: загрузить одну, заведомо большую картинку, с хорошим разрешением и как то настроить так, чтобы она уменьшалась под размер кнопки, а не обрезалась краями кнопки?
Странно, что Вы знаете о селекторах, но не знаете структуре ресурсов. Вам всего-навсего необходимо для положить картинки в drawable для нужного типа экранов, например: /drawable-mdpi - это для экранов средней плотности, плотности на текущий день варьируют от ldpi (мало устройств) до xxxhdpi

Добавлено через 1 минуту
И просто совет Вам из личного опыта: используйте префексы у картинок, то есть не arrow, в ic_arrow, не button, а bg_button и т.д.
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
08.09.2015, 11:46 #3
Честно говоря мне лень проверять с селектором, но у меня прямо в рабочей программе вот так вот drawableLeft добавляется картинка на кнопку и она масштабируется нормально.
Находится она в drawable. Автоматом масштабируется, без кучи картинок под все плотности.
0
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 598
08.09.2015, 11:49 #4
Цитата Сообщение от Паблито Посмотреть сообщение
Честно говоря мне лень проверять с селектором, но у меня прямо в рабочей программе вот так вот drawableLeft добавляется картинка на кнопку и она масштабируется нормально.
Находится она в drawable. Автоматом масштабируется, без кучи картинок под все плотности.
Работать будет и без кучи плотностей, но иногда это просто необходимо, например, сохранить толщину обводки или детализацию понизить картинки. Android довольно эффективно сжимает картинки, но все же обработка картинки высокого разрешения на слабом устройстве будет излишней нагрузкой.
0
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
08.09.2015, 11:59  [ТС] #5
Нет, о структуре ресурсов я конечно знаю. Но как подобрать размер картинки для этих плотностей? Вот например ставлю я в визуальном редакторе девайс с экраном 4,65" 720p подгоняю размер картинки под него, чтоб смотрелось хорошо (допустим это 49х49 пикселей), а на сколько дальнейшие размеры уменьшать/увеличивать? Например каких размеров сделать эту картинку для xdpi или для xxxhdpi ?
Честно говоря мне лень проверять с селектором, но у меня прямо в рабочей программе вот так вот drawableLeft добавляется картинка на кнопку и она масштабируется нормально.
Находится она в drawable. Автоматом масштабируется, без кучи картинок под все плотности.
Вот и я в принципе так хотел, но не получается! Вот мой код разметки бокового Fly-Out меню с кнопками, может в разметке дело?
Кликните здесь для просмотра всего текста
XML
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
79
80
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="300dp"
    android:layout_height="fill_parent"
    android:background="#ff2A5FB1"
    android:id="@+id/FlyOutMenu"
    android:padding="4dp"
    android:weightSum="100">
    <TextView
        android:text="Меню Графиков"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:textColor="#ffc1c1c1"
        android:padding="4dp"
        android:background="#ff2A5FB1" />
    <View
        android:layout_width="wrap_content"
        android:layout_height="2dp"
        android:id="@+id/view1"
        android:background="#ffc1c1c1" />
    <Button
        android:text="Температура нагревателя"
        android:layout_width="match_parent"
        android:id="@+id/button1"
        android:drawableLeft="@drawable/icon_temp_btn_on_off"
        style="@style/styleFlyOutMenuButton"
        android:layout_weight="25"
        android:gravity="center"
        android:layout_margin="2dp"
        android:layout_height="0dp" />
    <View
        android:layout_width="wrap_content"
        android:background="@drawable/separator"
        android:layout_height="2dp" />
    <Button
        android:text="Давление"
        android:layout_width="match_parent"
        android:id="@+id/button2"
        android:drawableLeft="@drawable/icon_pressure_btn_on_off"
        style="@style/styleFlyOutMenuButton"
        android:layout_weight="25"
        android:gravity="center"
        android:layout_margin="2dp"
        android:layout_height="0dp" />
    <View
        android:layout_width="wrap_content"
        android:background="@drawable/separator"
        android:layout_height="2dp" />
    <Button
        android:text="Напряжение"
        android:layout_width="match_parent"
        android:id="@+id/button3"
        android:drawableLeft="@drawable/icon_voltage_btn_on_off"
        style="@style/styleFlyOutMenuButton"
        android:layout_weight="25"
        android:gravity="center"
        android:layout_margin="2dp"
        android:layout_height="0dp" />
    <View
        android:layout_width="wrap_content"
        android:background="@drawable/separator"
        android:layout_height="2dp" />
    <Button
        android:text="Температура окр. среды"
        android:layout_width="match_parent"
        android:id="@+id/button4"
        android:drawableLeft="@drawable/icon_temp_btn_on_off"
        style="@style/styleFlyOutMenuButton"
        android:layout_weight="25"
        android:gravity="center"
        android:layout_margin="2dp"
        android:layout_height="0dp" />
    <View
        android:layout_width="wrap_content"
        android:background="@drawable/separator"
        android:layout_height="2dp" />
</LinearLayout>
0
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 598
08.09.2015, 13:03 #6
mdpi = 1
ldpi = 0.75
hdpi = 1.5
xhdpi = 2
xxhdpi = 3
1
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
08.09.2015, 13:14 #7
у тебя размеры кнопок заданы в пикселях, там не хватает букв "dp", поэтому на экранах кнопки получаются разные
я в шоке...как люди вообще живут, так писать...

и дополнительное чтиво, читать внимательно, а не пробежаться по диагонали
http://developer.android.com/guide/p...s_support.html
1
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
08.09.2015, 14:10  [ТС] #8
у тебя размеры кнопок заданы в пикселях, там не хватает букв "dp", поэтому на экранах кнопки получаются разные
я в шоке...как люди вообще живут, так писать...
Где это?! У кнопок
XML
1
2
android:layout_width="match_parent"
android:layout_height="0dp"
а android:layout_weight="25" Это Вес кнопок по высоте в родительском лейауте. Чтобы 4 кнопки (по 25% каждая) всегда занимали всю площадь, в не зависимости от размера.
и дополнительное чтиво, читать внимательно, а не пробежаться по диагонали
http://developer.android.com/guide/p...s_support.html
Спасибо. Почитаю.
1
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
08.09.2015, 14:58 #9
я виноват, недоглядел
скопировал себе разметку и подставил большую картинку - действительно она занимает все место на кнопке и не масштабируется
у меня просто картинка маленькая в проекте и смотрится везде нормально

если принципиально надо картинку рядом с текстом то проще всего, мне кажется, сделать так
вместо
XML
1
2
3
4
5
6
7
8
9
10
<Button
        android:text="Температура нагревателя"
        android:layout_width="match_parent"
        android:id="@+id/button1"
        android:drawableLeft="@drawable/icon_temp_btn_on_off"
        style="@style/styleFlyOutMenuButton"
        android:layout_weight="25"
        android:gravity="center"
        android:layout_margin="2dp"
        android:layout_height="0dp" />
писать
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    <LinearLayout
        style="@android:style/Widget.Button"
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="25"
        android:orientation="horizontal">
 
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_bla_bla" />
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Температура нагревателя" />
 
    </LinearLayout>
0
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
08.09.2015, 15:03  [ТС] #10
Была у меня такая мысль, но как тогда отслеживать "Click" по Layout-ам и менять цвет текста и картинок при касании? Так что остается только рожать множество картинок под разный dpi ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2015, 15:03
Привет! Вот еще темы с ответами:

Масштабирование картинок в зависимости от размера экрана устройства - DLE
DLE 9.3. Можно ли сделать так, чтобы картинки масштабировались в зависимости от размера экрана устройства? Сейчас wrapper шириной 1200...

Удаление отрисованных на форме линий - C#
Здравствуйте. Помогите с программой. Есть форма, на ней 2 кнопки. При нажатии на первую кнопку должны выводится на форму линии (пока...

Как изменить текст в системных кнопках? Например, при удалении файла есть 2 кнопки ("да" и "нет"). Как текст в этих кнопках заменить на свой? - C#
Не надо говорить, что так сделать нельзя. Сам видел программу &quot;BazarBox&quot;. Она меняет их текст) Прошу помочь)) Прогу приложил)...

Перемещение и удаление отрисованных на PictureBox фигур - C#
Столкнулся с необходимостью нанесения на PictureBox нескольких составных фигур, каждая из которых состоит из эллипса и текстовой подписи...


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

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

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