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

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

Войти
Регистрация
Восстановить пароль
 
mikl35
4 / 4 / 0
Регистрация: 30.05.2014
Сообщений: 129
#1

Вывод смайликов в SMS чате - Программирование Android

16.05.2015, 19:17. Просмотров 633. Ответов 1
Метки нет (Все метки)

Здравствуйте, все вроде работает, но при вводе несколько подряд или не подряд смайликов выводится больше смайликов и текстовое представление смайликов сдвигается вправо. Сначало в переменную String ввожу текст сообщения и там есть текстовые символы отображаемых смайлики, например улыбка :-). Далее сообщение присваиваю переменной типа SpannableString. После ищу в тексте String первое вхождение смайлика и заменяю его символом ноль при этом запоминаю начало позиции и конца смайлика и заменяю в переменной типа SpannableString уже на нужный смайл. Но при вводе несколько смайлов выводит больше смайлов чем нужно. Представлю код где идет проверка на смайлы в тексте и формирование текста со смайликами.
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 //Установка текста SMS с смайликами
    public boolean setsmssmiles(String text){
        boolean rez=false;
        int sm;
        textsms=new SpannableString(text);//вводим текст сообщения в котором будут отображаться и смайлы
        //обозначение смайлов на русском и английском
        String [] smilesrus={":-)", ":-(", ";-)", ":-П", "=-Др", ":-*", ":Др", "Б-)", ":-$", ":-!", ":-[", "Др:-)", ":-\\", ":'(", ":-Х", ":-Д"};
        String [] smileseng={":-)", ":-(", ";-)", ":-P", "=-O", ":-*", ":O", "B-)", ":-$", ":-!", ":-[", "O:-)", ":-\\", ":'(", ":-X", ":-D"};
        for(int i=0;i<smileseng.length;i++){
            do{
                sm=text.indexOf(smilesrus[i]);//проверяем вхождение символа смайла в тексте сообщения
                if(sm>=0){//если символ смайла есть
                    ImageSpan iconrus=new ImageSpan(this, R.drawable.s1, ImageSpan.ALIGN_BASELINE);
                    switch (i){//вводим необходимый смайл в iconrus и заменяем в тектсе сообщения символы смайла на ноль
                        case 0:
                            iconrus=new ImageSpan(this, R.drawable.s1, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-\\)","0");
                            break;
                        case 1:
                            iconrus=new ImageSpan(this, R.drawable.s2, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-\\(","0");
                            break;
                        case 2:
                            iconrus=new ImageSpan(this, R.drawable.s3, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(";-\\)","0");
                            break;
                        case 3:
                            iconrus=new ImageSpan(this, R.drawable.s4, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-П","0");
                            break;
                        case 4:
                            iconrus=new ImageSpan(this, R.drawable.s5, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst("=-Др","0");
                            break;
                        case 5:
                            iconrus=new ImageSpan(this, R.drawable.s6, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-\\*","0");
                            break;
                        case 6:
                            iconrus=new ImageSpan(this, R.drawable.s7, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":Др","0");
                            break;
                        case 7:
                            iconrus=new ImageSpan(this, R.drawable.s8, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst("Б-\\)","0");
                            break;
                        case 8:
                            iconrus=new ImageSpan(this, R.drawable.s9, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-$","0");
                            break;
                        case 9:
                            iconrus=new ImageSpan(this, R.drawable.s10, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-!","0");
                            break;
                        case 10:
                            iconrus=new ImageSpan(this, R.drawable.s11, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-\\[","0");
                            break;
                        case 11:
                            iconrus=new ImageSpan(this, R.drawable.s12, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst("Др:-\\)","0");
                            break;
                        case 12:
                            iconrus=new ImageSpan(this, R.drawable.s13, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-\\\\","0");
                            break;
                        case 13:
                            iconrus=new ImageSpan(this, R.drawable.s14, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":'\\(","0");
                            break;
                        case 14:
                            iconrus=new ImageSpan(this, R.drawable.s15, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-Х","0");
                            break;
                        case 15:
                            iconrus=new ImageSpan(this, R.drawable.s16, ImageSpan.ALIGN_BASELINE);
                            text=text.replaceFirst(":-Д","0");
                            break;
                    }
                    textsms.setSpan(iconrus, sm, sm+smilesrus[i].length(), Spannable.SPAN_COMPOSING);//вводим смайл в текст со смайлами
                    rez=true;
                }
                else sm=-1;
            }while(sm>=0);
        }
 
        return rez;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2015, 19:17     Вывод смайликов в SMS чате
Посмотрите здесь:
Разделение сообщений в чате на группы Android
Реализация отправки фото в чате wifi-direct Android
Android Отодвигание listView при написании сообщений в чате
SMS-отправка Android
Android + GPS + SMS + PC Android
Перехват входящего sms Android
Реализовать отправку SMS Android
Отслеживание отправки SMS Android
Отправка SMS на эмулятор Android
Sms manager get av detects( Android
Android Программное удаление SMS
Android Получить текст из SMS

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fangahra
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 1
16.02.2017, 17:31     Вывод смайликов в SMS чате #2
text=text.replaceFirst(":-Х","0");

Вы три символа ":-Х" меняете на 1 "0".
надо тогда text=text.replaceFirst(":-Х","000");
Ответ Создать тему
Опции темы

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