Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
anknskn
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 8
#1

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

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

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

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

Передать объект из BaseAdapter по нажатию кнопки в другое activity через
Здравствуйте, помогите со следующей задачей: Есть объект с ценой и...

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

Как из одного Activity перенести фотку в другое Activity?
Собственно необходимо отобразить фотографию в activity2, которую загрузили в...

Расположение TextView в Activity
Приветствую ув. комюнити! Подскажите пжл как правильно разместить в Android...

4
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
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 / 54
Регистрация: 08.10.2013
Сообщений: 565
31.07.2014, 12:11 #4
Лучший ответ Сообщение было отмечено anknskn как решение

Решение

Цитата Сообщение от 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
Привет! Вот еще темы с решениями:

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

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

Передать из строки ListView в 2 поля TextView?
Добрый всем! Добавлено через 8 минут есть ListView в нем...

Передать значение из surfaceview в activity
Всем доброго времени суток. Есть surfaceview и в методе ondraw я меняю одну...


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

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

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