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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
ASDFD12
41 / 41 / 6
Регистрация: 15.09.2012
Сообщений: 455
#1

Работа с FrameLayout - Программирование Android

02.02.2014, 22:37. Просмотров 2071. Ответов 9
Метки нет (Все метки)

Почему первая картинка не перекрывает вторую?
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
package com.shcherban.box_box;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
 
public class Game extends View {
    String tag="TAG";
FrameLayout frame;
ImageView Windows;
ImageView Mask;
Bitmap fon;
Bitmap photo_box;
Bitmap box_red;
Bitmap bitmap;
Context con;
Canvas canvas1;
 
    public Game(Context context) {
        super(context);
        frame = new FrameLayout(context);
        Windows = new ImageView(context);
        Mask= new ImageView (context);
        
        con=context;
        fon=BitmapFactory.decodeResource(getResources(), R.drawable.fon1);
        photo_box= BitmapFactory.decodeResource(getResources(), R.drawable.box);
        box_red= BitmapFactory.decodeResource(getResources(), R.drawable.box_red);
        // TODO Auto-generated constructor stub
         bitmap=Bitmap.createBitmap(720, 1280, Bitmap.Config.ARGB_8888);
         canvas1 = new Canvas (bitmap);
         canvas1.drawBitmap(fon, 0, 0, null); 
         canvas1.drawBitmap(photo_box, 446, 534, null); 
         Windows.setImageBitmap(bitmap);
         frame.addView(Windows);
         canvas1.drawBitmap(box_red, 446, 534, null);
         Mask.setImageBitmap(bitmap);
         frame.addView(Mask);
         Mask.setVisibility(VISIBLE);
             
    }
    
     public boolean onTouchEvent(MotionEvent e) 
        {
            
            
            //box.MoveBox((int)e.getX(),(int) e.getY());
            //player.MovePlayer((int)e.getX(),(int) e.getY());
            Log.d(tag,"color:"+this.bitmap.getPixel((int)e.getX(), (int)e.getY())+"red:"+Color.red (this.bitmap.getPixel((int)e.getX(), (int)e.getY()))+"green:"+Color.green(this.bitmap.getPixel((int)e.getX(), (int)e.getY()))+"blue:"+Color.blue(this.bitmap.getPixel((int)e.getX(), (int)e.getY()))) ;  
            
            return true;
        }
    
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с FrameLayout (Программирование Android):

Unfortunately FrameLayout - Программирование Android
Ставлю голенький FrameLayout кидает ошибочку Unfortunately has stopped В чем проблема? Android Studio. 03-31 09:52:00.081...

FrameLayout - скрыть кнопки - Программирование Android
Здравствуйте. Что хочу сделать? 1. У меня есть набор кнопок, и в зависимости от выбранного варианта работы, часть этих кнопок может...

Как сделать скроллинг FrameLayout? - Программирование Android
как сделать скроллинг FrameLayout? Суть в том, что содержимое не помещается на экране по вертикали. В FrameLayout вставлено около 20...

Разместить панель внизу FrameLayout - Программирование Android
Имеется такой layout. В нем карта растянута на весь экран, а панель panelTools располагается внизу. <?xml version="1.0"...

Как растянуть FrameLayout на весь экран - Программирование Android
Как растянуть FrameLayout на весь экран. Скрин во вложениях если кому что не понятно)

Добавление View в FrameLayout: ошибка в приложении - Программирование Android
Доброго времени суток! Хочу вот этот класс, который унаследован от View, добавить в уже созданный FrameLayout. Вот так не работает: ...

9
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
02.02.2014, 23:19 #2
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Почему первая картинка не перекрывает вторую?
Должна перекрывать, а где код который непосредственно рисует содержимое FrameLayout'а на вашей активити ? Для наложения одной картинки на другую лучше использовать специальный класс под названием LayerDrawable. Вот небольшой пример использования этого класса
1
ASDFD12
41 / 41 / 6
Регистрация: 15.09.2012
Сообщений: 455
02.02.2014, 23:25  [ТС] #3
Цитата Сообщение от angryrobot Посмотреть сообщение
Должна перекрывать, а где код который непосредственно рисует содержимое FrameLayout'а на вашей активити ? Для наложения одной картинки на другую лучше использовать специальный класс под названием LayerDrawable. Вот небольшой пример использования этого класса
В главном активити написал
Java
1
setContentView(new GameView(this));
Какой код нужно еще?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
02.02.2014, 23:45 #4
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Какой код нужно еще?
Я имею в виду, что в самом классе Game вроде бы нет никакого кода который бы как-то использовал созданный вам FrameLayout. Т.е. он создался, в него добавили пару ImageView и на этом все.
1
ASDFD12
41 / 41 / 6
Регистрация: 15.09.2012
Сообщений: 455
03.02.2014, 00:10  [ТС] #5
Цитата Сообщение от angryrobot Посмотреть сообщение
Я имею в виду, что в самом классе Game вроде бы нет никакого кода который бы как-то использовал созданный вам FrameLayout. Т.е. он создался, в него добавили пару ImageView и на этом все.
Я должен добавить метод рисования.
Java
1
2
3
4
protected void onDraw(Canvas canvas) 
{ 
// но как здесь задать вывод Framelayout ?
}
Добавлено через 7 минут
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Я должен добавить метод рисования.
Java
1
2
3
4
protected void onDraw(Canvas canvas) 
{ 
// но как здесь задать вывод Framelayout ?
}
В случае с xml layout мы также создаем FrameLayout, добавляем туда элементы, и передаем его в метод setContentView, при этом сам xml не содержит кода прорисовки.
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
03.02.2014, 10:22 #6
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Я должен добавить метод рисования
У меня небольшой опыт создания собственных View, но как мне кажется единственный способ что-то вывести на экран - нарисовать это на Canvas который был получен в методе onDraw. Можно преобразовать содержимое FrameLayout в Bitmap, а потом вывести его в Canvas. Сделать это можно так:
Java
1
2
3
        frame.setDrawingCacheEnabled(true);
        frame.buildDrawingCache();
        Bitmap bmp = frame.getDrawingCache();
Но как по мне, это плохой вариант если надо всего-то наложить две картинки друг на друга.
1
ASDFD12
41 / 41 / 6
Регистрация: 15.09.2012
Сообщений: 455
03.02.2014, 11:32  [ТС] #7
но я не определял метод Drav, a передал класс в метод setContentView() и он вывел на экран первый Клемент imageView, вопрос в том почему он не вывел второй imageview?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
03.02.2014, 12:28 #8
Цитата Сообщение от ASDFD12 Посмотреть сообщение
он вывел на экран первый Клемент imageView, вопрос в том почему он не вывел второй imageview?
Я только что попробовал использовать ваш класс Game, и всё равно вижу пустой экран (как и следовало ожидать из этого кода). Точно ничего не забыли когда выкладывали код? А может быть после
Java
1
setContentView(new GameView(this));
забыли удалить строчку типа
Java
1
setContentView(R.layout.activity_main);
1
ASDFD12
41 / 41 / 6
Регистрация: 15.09.2012
Сообщений: 455
03.02.2014, 12:41  [ТС] #9
angryrobot, да немножко напутал, у меня был класс GameView и параллельно создал Game для изучение FrameLayout и в активити не поменял. Теперь тоже пустое окно. То есть получается setContentView служит чем то вроде Canvas для xml-файла? А для обьекта наследующего от View уже нет и надо определять метод рисования. И как тогда мне передать FrameLayout целиком в метод Canvas,кроме предложенного вами способа конвертации FrameLayout в Bitmap (и это не эффективно).?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
03.02.2014, 13:01 #10
Цитата Сообщение от ASDFD12 Посмотреть сообщение
setContentView служит чем то вроде Canvas для xml-файла?
setContentView задает View который будет отображаться на вашей активити. Когда вы передаёте в метод именно xml файл, то он в конечном счёте преобразовывается в один из наследников класса View.
Цитата Сообщение от ASDFD12 Посмотреть сообщение
И как тогда мне передать FrameLayout целиком в метод Canvas,кроме предложенного вами способа конвертации FrameLayout в Bitmap
Подозреваю что никак. Ну по крайне мере мне об этом ничего не известно.
1
03.02.2014, 13:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 13:01
Привет! Вот еще темы с ответами:

При вставке в FrameLayout низ скрывается за кнопками - Программирование Android
народ помогите пожалуйста как можно сделать, чтобы при добавления фрагмента в FrameLayout, чтобы он не уходил ниже кнопок(стрелки назад,...

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления - C#
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с событиями,работа со всеми элементами управления(toolbox).И если...

Работа с Меню. Сохранение, печать, создать новый. Работа с рисованием - Visual C++
В общем сабж. Делается программа, которая должная Сохранять, печатать и очищать поле (создать новый/очистка). Также хочу спросить как...

Количество подведенного и отведенного тепла, работа сжатия, работа расширения - Термодинамика и МКТ
Определить количество подведенного и отведенного тепла, работу сжатия, работу расширения, полезную работу и КПД цикла предыдущей...


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

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

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