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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
#1

Рисование - Android

06.02.2013, 10:51. Просмотров 1733. Ответов 19
Метки нет (Все метки)

Здравствуйте, можно ли кинуть поверх бэкграунда прозрачный слой и рисовать на нем?
на канве вроде нельзя прозрачность ставить..
или если можно на andengine рисовать на спрайтах..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 14:33     Рисование #2
просто рисуйте поверх, в чем проблема.
или вы хотите прозрачность нарисовать?)
прозрачную красную линию голубого цвета)
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
06.02.2013, 19:30  [ТС]     Рисование #3
нет, шеф,
нужно типа рисовать через стекло) по другую сторону стекла ставим фон, с этой рисуем, бэк не изменяется
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 20:04     Рисование #4
не вижу разницы в конечном результате...

Добавлено через 6 минут
просто рисуете сначала фон, потом остальное.
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
06.02.2013, 20:34  [ТС]     Рисование #5
V0v1k, можете подробней объяснить суть?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 20:38     Рисование #6
Java
1
2
canvas.drawBitmap (background, matrix, paint);
canvas.drawBitmap (foreground, matrix, paint);
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
06.02.2013, 21:02  [ТС]     Рисование #7
Спасибо,а прозрачность как задается?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 21:12     Рисование #8
прозрачность - это отсутствие рисунка, просто не рисуйте и будет вам прозрачность)

или может вы хотите что-то ПОЛУпрозрачным нарисовать?
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
06.02.2013, 21:52  [ТС]     Рисование #9
что то мы о разном думаем...попробую сделать на C# проттотип, потом отпишусь)
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
07.02.2013, 12:25     Рисование #10
У Paint есть свой Alpha. Попробуйте его задать
Java
1
2
Paint p = new Paint();
p.setAlpha(127);
а потом рисовать на канвасе этим пейнтом.
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
07.02.2013, 17:42  [ТС]     Рисование #11
мне не кисти надо прозрачность ставить, а второго слоя, на котором будут рисовать....
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.02.2013, 17:53     Рисование #12
ну елки, нарисуйте полностью прозрачный прямоугольник на весь дисплей и представьте что это слой)

какого именно эффекта вы хотите добиться я не понимаю.
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
07.02.2013, 19:34  [ТС]     Рисование #13
Цитата Сообщение от V0v1k Посмотреть сообщение
ну елки, нарисуйте полностью прозрачный прямоугольник на весь дисплей и представьте что это слой)

какого именно эффекта вы хотите добиться я не понимаю.
Вот, про это я и говорил, просто думал как нибудь аппаратно это можно задать, спасибо.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 11:00     Рисование #14
Цитата Сообщение от fiphiker Посмотреть сообщение
Здравствуйте, можно ли кинуть поверх бэкграунда прозрачный слой и рисовать на нем? на канве вроде нельзя прозрачность ставить..
Конечно можно. Делаете ImageView (или просто View) на весь экран и в ней рисуете. Причём свой бэкграунд можете засетить в контейнер который содержит ваш компонент в котором будете рисовать, но можете и бэкграунд рисовать в ручную, разницы в перфомансе не будет скорее всего.
Прозрачность устанавливать можно.
Код Java(TM) 2 Platform Standard Edition 5.01 2 3 c.drawColor(Color.TRANSPARENT, Mode.CLEAR);
с - ваш канвас. эта функция зальёт ваш канвас любым цветом. Выше описано как сделать прозрачным.
PS если вам надо рисвать много быстро и ещё с анимациями - сразу предупрежу вам нужен SurfaceView (рисовать в обычном View в UI треде можно только простейшие вещи).
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
08.02.2013, 18:22  [ТС]     Рисование #15
Почему то выводится так: http://s49.***********/i125/1302/56/4caefd6e4185.jpg
делаю так
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
package com.example.touchdrawv2;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PorterDuff.Mode;
import android.util.Log;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
 
public class TouchDrawv2 extends Activity implements SurfaceHolder.Callback {
 
    private static final String TAG = "Svetlin SurfaceView";
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        SurfaceView view = new SurfaceView(this);
        setContentView(view);
        view.getHolder().addCallback(this);
    }
 
    public void surfaceCreated(SurfaceHolder holder) {
        tryDrawing(holder);
    }
 
    public void surfaceChanged(SurfaceHolder holder, int frmt, int w, int h) { 
        tryDrawing(holder);
    }
 
    public void surfaceDestroyed(SurfaceHolder holder) {}
 
    private void tryDrawing(SurfaceHolder holder) {
      
 
        Canvas canvas = holder.lockCanvas();
        if (canvas == null) {
            Log.e(TAG, "Cannot draw onto the canvas as it's null");
        } else {
            drawMyStuff(canvas);
            holder.unlockCanvasAndPost(canvas);
        }
    }
 
    private void drawMyStuff(final Canvas canvas) {
 
       // canvas.drawRGB(255, 0, 0);
        canvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);
    }
}
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 18:48     Рисование #16
Цитата Сообщение от fiphiker Посмотреть сообщение
Почему то выводится так: http://s49.***********/i125/1302/56/4caefd6e4185.jpg делаю так
по умолчанию сюрфейс вью так устроен что под ним ничего нету, даже бэкграунда контейнреа (под ним пустотааа ) так что если вы хотите эфект рисования поверх чего то (картинки фотки например) то полагаю что вам сначало надо наприсовать эту вашу картинку на сюрфейсе (Canvas.drawBitmap) а потом поверх этого рисовать то что надо.
Если вы хотите что бы сюрфейсвью был прозрачный и под ним было что то - его надо делать поверх всего (такое тоже возможно, если вам это надо - отпишитесь). Состаяния что бы сюрфейс вью был между вьюхами - скорее всего добится нельзя.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.02.2013, 19:06     Рисование #17
Цитата Сообщение от YAUHEN Посмотреть сообщение
что бы сюрфейсвью был прозрачный
можно подробнее?

Добавлено через 3 минуты
нашел такое
mPreviewThemeSurface.setZOrderOnTop(true); // necessary
mPreviewThemeSurface.getHolder().setFormat(PixelFormat.TRANSPARENT);
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 19:10     Рисование #18
Цитата Сообщение от V0v1k Посмотреть сообщение
можно подробнее?
для начала вам надо опредилится надо вам это или нет (определяется так - если у вас на бэкграунде (то что будет под сюрфейсом) должно размещаться куча всего что должно быть видно и поверх этого должен быть сюрфейс - то вам скорее всего действительно надо рисовать сюрфейс поверх всего, ИНАЧЕ - сюрфейс на него бэкграунд а на бэкграунд всё остальное)

Java
1
2
SurfaceView.setZOrderOnTop(true);
SurfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);
Добавлено через 1 минуту
Цитата Сообщение от V0v1k Посмотреть сообщение
нашел такое mPreviewThemeSurface.setZOrderOnTop(true); // necessary mPreviewThemeSurface.getHolder().setFormat(PixelFormat.TRANS PARENT);
всё правильно нашли
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
08.02.2013, 21:01  [ТС]     Рисование #19
Цитата Сообщение от YAUHEN Посмотреть сообщение
(такое тоже возможно, если вам это надо - отпишитесь)
да, мне надо чтоб был слой на который грузим бэк и слой на котором рисуем(прозрачный чтоб видеть рисунок на нижнем слое), то есть наложение
Спасибо за ответы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2013, 21:40     Рисование
Еще ссылки по теме:

Android Рисование на кнопке
Рисование в элементе view Android
Android Рисование на canvas - подтормаживание
Android Рисование маршрута на Google Map
Android Рисование в NestedScrollView

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.02.2013, 21:40     Рисование #20
просто рисуете сначала фон, а потом на фоне рисуете что хотите.
Yandex
Объявления
08.02.2013, 21:40     Рисование
Ответ Создать тему
Опции темы

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