четверг, 22 августа 2013 г.

Создание диалогового окна "О приложении"


В этой статье я затрону тему создания диалогового окна "О приложении".

Независимо от того, работаете ли на полной ставке разработчиком или написание программ на смартфоны ваше хобби, время от времени вам придется создавать диалоговое окно «О приложении». Это окно предоставляет полную информацию о приложении установленном на смартфоне. Диалоговое окно развилось в фундаментальный инструмент для пользователей и разработчиков.

Не существует никакого правильного и неправильного способа реализовать окно «О приложении». Диалоговое окно должно показать пользователю сразу заголовок приложения, версию и своего рода контактную информацию. Даже на смартфоне, в котором размер приложения ограничивается разрешением дисплея, диалоговое окно «о приложении» выглядит одновременно просто и с профессиональным подходом. Пользователь смартфона ожидает увидеть ссылки на сайт разработчика и контактную информацию с возможностью нажатия прямо в диалоговом окне.

После переизобретения колеса так сказать при кодировании диалоговых окон «о приложении» для моих первых двух приложений Android, я в конечном счете придумал гибкий своего рода шаблон. Данный подход имеет некоторые преимущества, он приносит единый стиль характерный для моих приложений. Реализация использует raw текстовые файлы для обоих юридический мелкий шрифт (т.е., мое пользовательское соглашение о программном обеспечении) и также для стандартной информации (т.е., заголовок, версия, и т.д.). Последний файл позволяет мне использовать основные HTML-тэги в качестве форматирующих атрибутов. Наконец, с простыми несколькими строками кода, я могу активировать многочисленные интенты (intent,намерения) диалогового окна, включая запуск веб-страниц, набор номера телефонных номеров и создание электронных писем.

Этот туториал покажет вам как создать ваш шаблон диалогового окна «О приложении». Вы можете следовать инструкциям приведенным ниже, и шаг за шагом создать окно, а можете и скачать готовый проект Eclipse.

    1. Создайте новый Android проект в Eclipse.
    2. Создайте файл about.xml в папке /res/layout. Это будет табличный макет с двумя текстовыми полями и одной картинкой. Отметьте, что мы используем атрибут столбца фрагмента так, чтобы наши столбцы таблицы корректировались динамически к контенту, который мы обеспечим в наших необработанных текстовых файлах.

about.xml
<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*">

<TableRow>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/cube"
android:layout_gravity="left|center"/>

<TextView android:id="@+id/info_text"
android:gravity="center"
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</TableRow>


<TableRow>
<TextView android:id="@+id/legal_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="10dip"
android:textStyle="italic"
android:layout_span="2"
android:layout_margin="8dip"
android:textColor="#cccccc"/> 
</TableRow>

</TableLayout> 
    3. В папку /res/drawable положите иконку или картинку которая будет отображаться в диалоговом окне. Как вы видите у меня картинка имеет название cube.png.
    4. В папке /res/layout, есть уже созданный activity_main.xml файл.

activity_main.xml
<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="This is a simple how to for creating an attractive and informative about box."/> 

</LinearLayout>
    5. После написания основного кода, создайте два файла с информацией для вашего диалогового окна. Для этого в папке /res создайте папку и назовите ее /raw. Теперь создайте два текстовых файла legal.txt и info.txt. В этих файла вы должны написать все что хотите отобразить в диалоговом окне.Текст для  legal.txt пишем обычным шрифтом. Однако для отображения информации info.txt, вы должны применить теги HTML для задания атрибутов тексту. Ниже я привожу примеры этих текстовых файлов.
legal.txt
All rights reserved. Not liable for any damage incurred from
use of this software including but not limited to: monetary loss,
temporary paralysis, halitosis, spontaneous combustion,
road rash, and or premature hair loss.
info.txt

My App

Version 1.0 Copyright 2011 www.mywebsite.com 1-800-555-1234
6. Реализация AboutDialog.java класса содержит стандартный конструктор диалога,метод для чтения raw файлов,ну и стандартный переопределенный метод onCreate. В методе onCreate, есть 2 вещи заслуживающих внимания. Первое,это использование Html.fromHtml метода, который заставляет текст info.txt выводиться на экран должным образом. К тому же стоит упомянуть о вызове метода Linkify.addLinks;это удобный статический Android класс, который фильтрует поступающий в него текст и выбирает из него ссылки и телефонные номера. Когда образец распознан, текст автоматически изменяется на ссылку и связан с доступными intent(про intent можно почитать здесь) провайдерами. В примере описанном выше, это означает, что пользователи смогут коснуться ссылки или телефонного номера, и смартфон сможешь открыть меню звонка или перейти по ссылке в браузер.

AboutDialog.java
public class AboutDialog extends Dialog {
    private static Context mContext = null;

    public AboutDialog(Context context) {
 super(context);
 mContext = context;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
 setContentView(R.layout.about);
 TextView tv = (TextView) findViewById(R.id.legal_text);
 tv.setText(readRawTextFile(R.raw.legal));
 tv = (TextView) findViewById(R.id.info_text);
 tv.setText(Html.fromHtml(readRawTextFile(R.raw.info)));
 tv.setLinkTextColor(Color.WHITE);
 Linkify.addLinks(tv, Linkify.ALL);
    }

    public static String readRawTextFile(int id) {
 InputStream inputStream = mContext.getResources().openRawResource(id);
 InputStreamReader in = new InputStreamReader(inputStream);
 BufferedReader buf = new BufferedReader(in);
 String line;
 StringBuilder text = new StringBuilder();
 try {
     while ((line = buf.readLine()) != null)
  text.append(line);
 } catch (IOException e) {
     return null;
 }
 return text.toString();
    }
}
7. Теперь мы должны дописать Main.java который обработает создание стандартного меню Android и вызов диалогового окна "О приложении"  при необходимости.

Main.java
public class Main extends Activity {
    final public int ABOUT = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
 menu.add(0, ABOUT, 0, "About");
 return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case ABOUT:
     AboutDialog about = new AboutDialog(this);
     about.setTitle("about this app");
     about.show();
     break;
 }
 return true;
    }
}

Нет никакой правильной или неправильной реализации диалогового окна "О приложении". Однако, шаблон, представленный в этой статье, служит мне хорошо. Если это соответствует Вашим потребностям, не стесняйтесь добавлять его к своему проекту.

Данная статья дословно переведена,если хотите почитать оригинал, прошу перейти по ссылке.

Комментариев нет:

Отправить комментарий