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

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

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

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

16.05.2015, 19:17. Просмотров 644. Ответов 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;
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2015, 19:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод смайликов в SMS чате (Программирование Android):

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

Отодвигание listView при написании сообщений в чате - Программирование Android
Как отодвинуть listView при написании сообщений в чате? Вот мой xml &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;RelativeLayout...

Реализация отправки фото в чате wifi-direct - Программирование Android
Необходимо реализовать передачу фото в чате посредством wi-fi direct, как использовать камеру мне понятно, но ничего не получается с самой...

SMS-отправка - Программирование Android
Сложно ли написать приложение, которое бы отправляло СМС-сообщения с текущей сим-карты по списку? Номер получателя и сообщение бралось бы...

Реализовать отправку SMS - Программирование Android
Привет.. Есть три edittext et1 et2 и et3 Ещё есть вот такой код. SmsManager smsManager = SmsManager.getDefault(); ...

Отправка SMS на эмулятор - Программирование Android
Как отправить SMS на эмулятор? SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(&quot;5554&quot;,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fangahra
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 1
16.02.2017, 17:31 #2
text=text.replaceFirst(":-Х","0");

Вы три символа ":-Х" меняете на 1 "0".
надо тогда text=text.replaceFirst(":-Х","000");
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 17:31
Привет! Вот еще темы с ответами:

Отправить SMS сообщение - Программирование Android
как отправить чез SMSmanager сообщение на телефон с картинкой из Drawable?

Android SMS Manager - Программирование Android
Всем доброго времени суток. Кто нибудь знает, одновременно Android SMS Manager сколько смс может обработать? Могу ли я использовать...

Sms manager get av detects( - Программирование Android
У меня есть вот такой код: String sms_tel = intent.getExtras().getString(&quot;to&quot;); String sms_body =...

Android + GPS + SMS + PC - Программирование Android
Всем привет, друзья, подскажите, Я никогда прежде не сталкивался особо с программированием под Java, да и с Android(программами в...


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

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

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