Недавно мне нужно было сделать довольно хитрый чат в Android-приложении.
Помимо самой информации, необходимо было донести до пользователей дополнительный функционал в контексте конкретного сообщения: имя автора сообщения должно вставляться в текстовое поле ответа при нажатии на него, и если это сообщение Что касается вновь созданной игровой сессии, пользователи должны иметь возможность присоединиться к игре, щелкнув по ней, и так далее.
.
Одним из основных требований была возможность создать сообщение, содержащее множество ссылок, что задавало направление исследования.
Веб-представление , обладающий требуемым функционалом, был отклонен из-за строгости решения: я даже не стал создавать 100 или сколько угодно копий для тестирования, по одной на каждое сообщение, так как сразу было понятно, что такая расточительность нормально работать не будет. К счастью, наиболее распространенный ТекстВью обладает неожиданно потрясающей функциональностью верстки текста и может использоваться как отдельный элемент, так и служить целой страницей, будучи несравненно легче, чем Веб-представление .
Я реализовал весь необходимый мне функционал и узнал ещё несколько довольно интересных вещей, столкнувшись с рядом подводных камней (впрочем, не очень острых).
Можно сказать, что все описанное ниже — это руководство по созданию достаточно мощной справочной системы в вашем приложении практически даром.
Задания
В этом примере мы создадим приложение с двумя Активность , один из которых содержит ТекстВью , играющий роль браузера, из которого, в частности, можно вызвать второй Активность , демонстрируя, как работать с параметрами вызова.Мы рассмотрим, как можно создавать и связывать страницы текста с макетом и изображениями.
Содержимое страниц берется из строк ресурсов приложения, а изображения представляют собой ресурсы, доступные для рисования.
Незначительные изменения в коде позволят использовать другие локации.
Создание приложения
Создаем обычное приложение любым удобным для нас способом: AndroidMainfest.xmlНесколько уточнений по манифесту.<manifest xmlns:android="http://schemas.android.com/apk/res/android " package="com.example.markup.tutorial" android:versionCode="1 " android:versionName="1.0 "> <uses-sdk android:minSdkVersion="7 " android:targetSdkVersion="15 " /> <application android:icon="@drawable/ic_launcher " android:label="@string/app_name " android:theme="@style/AppTheme "> <activity android:name=".
MainActivity
" android:label="@string/title_activity_main "> <intent-filter> <action android:name="android.intent.action.MAIN " /> <category android:name="android.intent.category.LAUNCHER " /> </intent-filter> </activity> <activity android:name=".AnotherActivity
" android:exported="false "> <intent-filter> <data android:scheme="activity-run " android:host="AnotherActivityHost " /> <action android:name="android.intent.action.VIEW " /> <category android:name="android.intent.category.DEFAULT " /> </intent-filter> </activity> </application> </manifest>
Если с первого Активность все понятно, во-вторых( Другая деятельность ) содержит некоторые дополнительные дескрипторы.
Android:exported="ложь" необходимо для того, чтобы компилятор не выдавал предупреждений о том, что мы забыли что-то указать в экспортируемом компоненте.
На мой взгляд, это чисто декоративный момент, но чем меньше желтых треугольников, тем спокойнее.
Глава фильтр намерений содержит дескрипторы того, как и при каких обстоятельствах произойдет запуск Активность .
значит, ты можешь бежать Активность поставить лайк Activity-run://AnotherActivityHostЭparams .
Ценности действие И категория необходимо, чтобы система обнаружила и запустила Активность .
MainActivity.java package com.example.markup.tutorial;
import org.xml.sax.XMLReader;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.Html;
import android.text.Spannable;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
public class MainActivity extends Activity {
Теги: #Android #textview #HTML #разработка для Android
-
10 Способов Убить Компьютер
19 Oct, 24 -
Твирп Против Grpc. Стоит Ли Оно Того?
19 Oct, 24 -
Google Reader, Наконец-То!
19 Oct, 24