2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
1

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

18.02.2013, 17:53. Показов 9475. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2013, 17:53
Ответы с готовыми решениями:

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

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

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

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

45
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 18:30 2
ставьте рамку как background.
1
2 / 2 / 0
Регистрация: 30.12.2012
Сообщений: 29
18.02.2013, 20:00  [ТС] 3
Спасибо за подсказку. Попробовал сделать вот так:
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 4
в последнем коде ничего стираться не должно.

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

Добавлено через 3 минуты
http://habrahabr.ru/post/113623/
1
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:29 5
вообщето в API есть уже готовое решение для вашей задачи, зовётся LayerDrawable кстати его же можно создать в xml а не из кода http://developer.android.com/g... #LayerList
настоятельно рекомендую
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 22:39 6
если нужна, например, рамка, всегда юзается nine-patch, для него ни кода ни xml не нужно, в LayerList не указать с какого места должен начинаться контент и какая область рамки должна растягиваться.
хоть бы по моей ссылке перешли прежде чем такое писать.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:41 7
Цитата Сообщение от V0v1k Посмотреть сообщение
LayerList не указать с какого места должен начинаться контент
а я знаю что можно, да что уж там,сам делал и из xml и из кода
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.02.2013, 22:42 8
Цитата Сообщение от YAUHEN Посмотреть сообщение
а я знаю что можно, да что уж там,сам делал и из xml и из кода
подскажите как.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:48 9
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 10
а как быть с адаптацией размеров рамки под размер контента? а с коректным растягиванием рамки?

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

Добавлено через 1 минуту
мягко говоря hard code.
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
18.02.2013, 22:55 11
Цитата Сообщение от 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  [ТС] 12
Все понял. Фон нужно было сделать прозрачным у картинки для наложения.

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


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

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

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



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



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

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


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

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

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

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

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

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

Добавлено через 59 секунд
или что вы имели ввиду?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2013, 23:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru