Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/51: Рейтинг темы: голосов - 51, средняя оценка - 4.53
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29

Наложение изображений

18.02.2013, 17:53. Показов 10979. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как наложить изображение на изображение. Пробую вот так: но последующая картинка стирает предыдущую.
Java
1
2
3
4
5
6
7
8
9
10
11
12
ImageView btn1 = new ImageView(this);
    btn1.setLayoutParams(LayoutParams1);
 
    InputStream in2 = getClass().getResourceAsStream("/res/raw/_ramka.png"); 
    Bitmap bmp2 = BitmapFactory.decodeStream(in2);
    btn1.setImageLevel(2);
    btn1.setImageBitmap(bmp2);
    
    InputStream in = getClass().getResourceAsStream("/res/raw/"+str+".png"); 
    Bitmap bmp = BitmapFactory.decodeStream(in);
    btn1.setImageLevel(1);
    btn1.setImageBitmap(bmp);
Например, в одном файле хранится рамка, а в другом картинка....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2013, 17:53
Ответы с готовыми решениями:

Наложение изображений на кнопке из кода
Други, подскажите начинающему. Как можно наложить на кнопку бэкграунд и иконку. Т.е. 2 изображения из кода. Кнопки создаются динамически...

Наложение изображений друг на друга
Здравствуйте. Задача такова. В приложение загружается произвольное изображение из галереи пользователя. На него накладывается...

Наложение на ScrollView
Добрый день. Вот такая проблема, у меня сверху ScrollView лежит еще один блок LinearLayout. Как сделать чтобы в этих блоках...

45
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 18:30
ставьте рамку как background.
1
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
18.02.2013, 20:00  [ТС]
Спасибо за подсказку. Попробовал сделать вот так:
Java
1
2
3
4
5
6
7
    ImageView btn1 = new ImageView(this);
    btn1.setLayoutParams(LayoutParams1);
   InputStream in = getClass().getResourceAsStream("/res/raw/"+str+".png"); 
    Bitmap bmp = BitmapFactory.decodeStream(in);
    btn1.setImageBitmap(bmp);
 
    btn1.setBackgroundResource(R.raw._ramka);
Но, и в этом случае, если загружается изображение, то подложка стирается. А хорошо бы научиться складывать изображения. Например, на рамку сверху накладывать изображение так, чтобы оставалась рамка.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 20:12
в последнем коде ничего стираться не должно.

Добавлено через 44 секунды
контент в отметили в имедже с рамкой?
или хотя бы сделали рамку больше чем изображение?

Добавлено через 3 минуты
http://habrahabr.ru/post/113623/
1
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:29
вообщето в API есть уже готовое решение для вашей задачи, зовётся LayerDrawable кстати его же можно создать в xml а не из кода http://developer.android.com/g... #LayerList
настоятельно рекомендую
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 22:39
если нужна, например, рамка, всегда юзается nine-patch, для него ни кода ни xml не нужно, в LayerList не указать с какого места должен начинаться контент и какая область рамки должна растягиваться.
хоть бы по моей ссылке перешли прежде чем такое писать.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:41
Цитата Сообщение от V0v1k Посмотреть сообщение
LayerList не указать с какого места должен начинаться контент
а я знаю что можно, да что уж там,сам делал и из xml и из кода
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 22:42
Цитата Сообщение от YAUHEN Посмотреть сообщение
а я знаю что можно, да что уж там,сам делал и из xml и из кода
подскажите как.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:48
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<[URL="http://developer.android.com/guide/topics/resources/drawable-resource.html#layerlist-element"]layer-list[/URL]
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <[URL="http://developer.android.com/guide/topics/resources/drawable-resource.html#layerlist-item-element"]item[/URL]
        android:drawable="@[package:]drawable/[I]drawable_resource[/I]"
        android:id="@[+][[I]package[/I]:]id/[I]resource_name[/I]"
        android:top="[I]dimension[/I]"
        android:right="[I]dimension[/I]"
        android:bottom="[I]dimension[/I]"
        android:left="[I]dimension[/I]" />
</layer-list>
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension"

вместо dimension подставь свой паддинг
из кода

Добавлено через 1 минуту
всё зависит от того какая рамка, если просто жырный stroke одного цвета поверх другого - то можно обойтись и так

Добавлено через 1 минуту
только когда будете создавать дроваблы из кода - не забывайте setBounds вызывать, без них не заведётся
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 22:51
а как быть с адаптацией размеров рамки под размер контента? а с коректным растягиванием рамки?

Добавлено через 1 минуту
а как быть с банальной заменой адной рамки на другую? высчитывать новые размеры линейкой?

Добавлено через 1 минуту
мягко говоря hard code.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:55
Цитата Сообщение от V0v1k Посмотреть сообщение
адптацие размеров рамки под размер контента
сетишь рамку в качестве бэкграунда вьюхе и ставишь паддинг


Цитата Сообщение от V0v1k Посмотреть сообщение
а с коректным растягиванием рамки
всё коректно растянется если это простейшая рамка (2 цвета)

если это не простая рамка - то конечно надо nine-patch

Цитата Сообщение от V0v1k Посмотреть сообщение
а как быть с банльной заменой адной рамки на другую
а в какхи случаях это необхадимо?

Добавлено через 2 минуты
Цитата Сообщение от V0v1k Посмотреть сообщение
мягко говоря hard code.
вовсе нет, я не считаю признаком плохого тона использовать xml вместо png там где это возможно
0
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
18.02.2013, 23:03  [ТС]
Все понял. Фон нужно было сделать прозрачным у картинки для наложения.

Метод работает
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 23:05
Цитата Сообщение от YAUHEN Посмотреть сообщение
сетишь рамку в качестве бэкграунда вьюхе и ставишь паддинг
ну вот уже и сами отказались от своей идеи.


Цитата Сообщение от YAUHEN Посмотреть сообщение
а в какхи случаях это необхадимо?
заказчик сказал заменить на воооон ту, голубенькую с закрутасами по углам)

Цитата Сообщение от YAUHEN Посмотреть сообщение
вовсе нет, я не считаю признаком плохого тона использовать xml вместо png там где это возможно
использовать числа(которые могут и не совпасть при банальном изменении девайса или размеров) вместо того чтобы четко указать с какого по какой пиксель, высчитывать их линейкой...
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 23:08
Цитата Сообщение от V0v1k Посмотреть сообщение
ну вот уже и сами отказались от своей идеи.
вообщето я имел ввиду сетить дровабл ранее полученый описанным мной путём

Цитата Сообщение от V0v1k Посмотреть сообщение
заказчик сказал заменить на воооон ту, голубенькую с закрутасами по углам)
я оговорился, если рамка простая



Цитата Сообщение от V0v1k Посмотреть сообщение
которые могут и не совпасть
в каком случае и какие числа не совпадают?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 23:14
Цитата Сообщение от YAUHEN Посмотреть сообщение
вообщето я имел ввиду сетить дровабл ранее полученый описанным мной путём
и как это поможет одному слою четко входить в рамки другого слоя?

Цитата Сообщение от YAUHEN Посмотреть сообщение
в каком случае и какие числа не совпадают?
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension"

Добавлено через 2 минуты
Цитата Сообщение от YAUHEN Посмотреть сообщение
я оговорился, если рамка простая
давайте не будем искать сложных решений для простых задач)
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 23:15
Цитата Сообщение от V0v1k Посмотреть сообщение
и как это поможет одному слою четко входить в рамки другого слоя?
дроваблом является лэйр дровабл который вы описали в хмл или из кода так что там уже всё наложено



Цитата Сообщение от V0v1k Посмотреть сообщение
android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension"
и что может не совпасть?

Цитата Сообщение от V0v1k Посмотреть сообщение
давайте не будем искать сложных решений для простых задач)
для меня и то и другое - просто
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
18.02.2013, 23:17
Полностью согласен с V0v1k. 9 patch - наше все. После того как с десяток приложений с кучей экранов сверстаете - поймете. И память экономят очень, кстати. А про наложение изображений - тут вариантов куча. Самый практичный V0v1k показал - задник - на бекграунд, переднее изображение на src. Можно еще каждое изображение сделать отдельным ImageView и разместить одно над другим во FrameLayout или RelativeLayout. Не забываем регулировать размеры изображений, отступы и предусматривать прозрачные фоны в верхних изображениях
1
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 23:25
Цитата Сообщение от YAUHEN Посмотреть сообщение
и что может не совпасть?
контент. на одном девайсе будет налезать на рамку, на другом отставать от рамки например.


Цитата Сообщение от YAUHEN Посмотреть сообщение
для меня и то и другое - просто
ну да, поставить пару точек в nine-patch то же самое что писать xml-ки и хардкодить размеры, расчитывать их линейкой и перерасчитывать при изменении контента или рамки.

Добавлено через 1 минуту
Цитата Сообщение от kvaka Посмотреть сообщение
После того как с десяток приложений с кучей экранов сверстаете - поймете.
вот именно, в нем говорит нехватка опыта)

Добавлено через 26 секунд
а еще встретит заказчика который будет дизайн менять каждую неделю....

Добавлено через 1 минуту
Цитата Сообщение от YAUHEN Посмотреть сообщение
я оговорился, если рамка простая
ладно, скажу по другому, лучше использовать более универсальный и устойчивый к изменениям метод...
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 23:31
Цитата Сообщение от V0v1k Посмотреть сообщение
контент. на одном девайсе будет налезать на рамку, на другом отставать от рамки например.
если задать дименшны в лэйер дровабле через dp ссылкой на ресурсы дименшнов и задать такой же паддинг во вьюшке которая будет в качестве бэкграунда держать ваш дровабл то ничего вылазить и налазить не будет, конечно если использовать px - так не получится. но думаю не стоит вам более опытнм обьяснять почему люди используют dp вместо px раз уж вы начали говорить про опыт.

Цитата Сообщение от V0v1k Посмотреть сообщение
а еще встретит заказчика который будет дизайн менять каждую неделю...
я не буду использовать nine-patch там где это избыточно.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 23:42
Цитата Сообщение от YAUHEN Посмотреть сообщение
я не буду использовать nine-patch там где это избыточно.
избыточность - это написание xml-лок там где они не нужны.

Добавлено через 2 минуты
Цитата Сообщение от YAUHEN Посмотреть сообщение
если задать дименшны в лэйер дровабле через dp ссылкой на ресурсы дименшнов и задать такой же паддинг во вьюшке которая будет в качестве бэкграунда держать ваш дровабл то ничего вылазить и налазить не будет
ага, будет прямо поверх рамки (закрывать рамку)

Добавлено через 59 секунд
или что вы имели ввиду?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2013, 23:42
Помогаю со студенческими работами здесь

Наложение элементов интерфейса
Вопрос вот в чем: можно ли расположить элементы интерфейса, чтобы их области пересекались? Например можно ли расположить пару кнопок...

ActionBar Tabs наложение вкладок
Здравствуйте! Вот мой листенер на табы: package com.contedevel.timetable; import android.app.ActionBar.Tab; import...

Наложение изображения на определенную область по клику
Здравствуйте, возникла проблема, над которой бьюсь второй день и никак не могу найти способ, как реализовать следующую задачу: Задача...

OpenGL наложение текстуры, падает приложение
после того как выполняю gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, uvCoordsBuffer);, метод drawElements крешит приложение с логами, вобще...

Убрать наложение цвета при скроле до конца
Не знаю как это называется, но есть такая штука, когда тянешь RecyclerView до конца то снизу или сверху появляется градиент (типа...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru