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

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

Войти
Регистрация
Восстановить пароль
 
anknskn
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 8
#1

Передать рисунок из textview в другое activity - Программирование Android

29.07.2014, 20:46. Просмотров 693. Ответов 4
Метки нет (Все метки)

Здравствуйте!
В TextView методом setCompoundDrawablesWithIntrinsicBound создан рисунок. Его нужно передать в другое Activity, и что-то в нем дорисовать. Используются стандартные методы рисования по канве. Кто-то может подсказать, как это сделать? Заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2014, 20:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать рисунок из textview в другое activity (Программирование Android):

Как передать ссылку на изображение в другое Activity - Программирование Android
Привет, пытаюсь сделать что то типа ежедневника. столкнулся с проблемой. В общем. Имеется 1 Активити, на нем ImageView (смайлик), по...

Передать данные при клике на listview в другое activity - Программирование Android
Подсксжите пожалуйста, как мне при клике на listview заполненный с помощью sdimplecursoradapter передеавать данные в другое activity для...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Расположение TextView в Activity - Программирование Android
Приветствую ув. комюнити! Подскажите пжл как правильно разместить в Android textview, edittext и button по центру экрана, чтобы при...

Изменение TextView во второй Activity - Программирование Android
Добрый день. Есть первая Activity, на ней расположены кнопки. Нажимая на первую кнопку, открывается вторая Activity с определенным...

Spinner переход в другое Activity - Программирование Android
Добрый день. Подскажите пожалуйста как можно прописать преход тапом в списке Spinner до другого Acrivity? ...

4
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
29.07.2014, 22:04 #2
Цитата Сообщение от anknskn Посмотреть сообщение
В TextView методом setCompoundDrawablesWithIntrinsicBound создан рисунок. Его нужно передать в другое Activity, и что-то в нем дорисовать. Используются стандартные методы рисования по канве. Кто-то может подсказать, как это сделать? Заранее спасибо.
Если эта другая активити является частью вашего приложения, то нет проблем: Просто храните ссылку на канву где-нибудь в общедоступном месте, например в наследнике класса Application. И потом в другой активити просто получаете ссылку на эту канву, дорисовываете что нужно и делаете из неё Drawable который потом передаете в метод setCompoundDrawablesWithIntrinsicBound
0
anknskn
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 8
30.07.2014, 17:46  [ТС] #3
Идея понятна, реализация не получается. Прошу прощения за код, но по другому не знаю как объяснить
Рисунок выполняется, например, так (в MainActivity) - просто диагональ по виджету (как пример).
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
...
void drawbit(){
        drawView = new Draw2D(this); 
        Bitmap bmp = Bitmap.createBitmap(wIV, hIV, Bitmap.Config.ARGB_8888); 
        canvas = new Canvas(bmp); 
        drawView.draw(canvas); // зарисовка Bitmap
        Drawable d = new BitmapDrawable(getResources(), bmp); 
      ((TextView) findViewById(R.id.textView1)).setCompoundDrawablesWithIntrinsicBounds(null, d, null, null);
    }
    public static class Draw2D extends View{
        public Draw2D(Context context) {
            super(context);
        }
 
    @Override
    protected void onDraw(Canvas c) {
        super.onDraw(c);
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.WHITE);
        c.drawPaint(paint);
        paint.setColor(Color.BLACK);
        c.drawLine(0, 0, wIV, hIV, paint);
        Resources res = this.getResources();
        bitmap = BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
        c.drawBitmap(bitmap, hIV, wIV, paint);
        }
    }
...
Далее вызывается второе Активити, где нужно провести вторую диагональ.
Что нужно зарегистрировать статический класс наследник Application, я понял, сделал. В нем определено поле класса canvas. Но что-то сделать с ним не получается. Геты-сеты не могу реализовать. Что там писать-читать? Canvas? Bitmam? Откуда во втором Активити брать контекст? Нельзя ли чуть подробнее.
Спасибо.
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
31.07.2014, 12:11 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от anknskn Посмотреть сообщение
Нельзя ли чуть подробнее.
Я тут был малость не в себе когда писал про то, что нужно канву сохранять.
Есть способ проще и работает без всяких наследников Application. Вот код двух активити:

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
public class MainActivity extends ActionBarActivity {
 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity);
            ImageView iv = (ImageView) findViewById(R.id.imageView1);
            final Bitmap bmp = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(bmp);
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.WHITE);
            c.drawPaint(paint);
            paint.setColor(Color.BLACK);
            c.drawLine(0, 0, 100, 100, paint);
            iv.setImageBitmap(bmp);
            iv.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(getApplicationContext(), SecondActivity.class);
                    i.putExtra("MyBitmap", bmp);
                    startActivity(i);
                }
            });
        }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SecondActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        ImageView iv = (ImageView) findViewById(R.id.imageView1);
        Bitmap bmp = Bitmap.createBitmap((Bitmap) getIntent().getParcelableExtra("MyBitmap"));
        Canvas c = new Canvas(bmp);
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        c.drawLine(0, 100, 100, 0, paint);
        iv.setImageBitmap(bmp);
    }
}
Смысл прост:
Рисуем что-то в одной активити, потом передаем готовый битмап в другую активити и уже на нам дорисовываем все что надо.
0
anknskn
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 8
01.08.2014, 06:01  [ТС] #5
Спасибо. Простое и красивое решение. Правда, не в TextView, но так даже проще. Поменяю виджет для вывода и все проблемы решены.
0
01.08.2014, 06:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2014, 06:01
Привет! Вот еще темы с ответами:

Передать из строки ListView в 2 поля TextView? - Программирование Android
Добрый всем! Добавлено через 8 минут есть ListView в нем добавлены/добавляются из полей TextView данные (Name и Email) а так же...

Передать значение из surfaceview в activity - Программирование Android
Всем доброго времени суток. Есть surfaceview и в методе ondraw я меняю одну переменную i, после выполнения определенного условия я ухожу в...

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

Не могу передать данные в другую Activity - Программирование Android
В первой Activity: String table_exam = "position as PS " + "inner join set_exam as SE on PS.id = SE.idposit " + "inner join...


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

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

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