2010-09-07 5 views
16

Многие приложения для Android теперь отображают модальную версию с последним списком изменений после ее установки или обновления.Показать модальный после установки или обновления приложения

Как отобразить прокручиваемый модальный файл после того, как приложение было изначально установлено или обновлено?

+0

Коммутируемый ответ, поскольку code.google.com больше не доступен – dparnas

ответ

17

Законченных со следующим кодом Часть 1. Проверяется изменения следует рассматривать

 //evaluate if we will show changelog 
    try { 
     //current version 
     PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
     int versionCode = packageInfo.versionCode; 

     //version where changelog has been viewed 
     SharedPreferences settings = getSharedPreferences(SAPNotePreferences.PREFS_NAME, 0); 
     int viewedChangelogVersion = settings.getInt(SAPNotePreferences.KEY_CHANGELOG_VERSION_VIEWED, 0); 

     if(viewedChangelogVersion<versionCode) { 
      Editor editor=settings.edit(); 
      editor.putInt(SAPNotePreferences.KEY_CHANGELOG_VERSION_VIEWED, versionCode); 
      editor.commit(); 
      displayChangeLog(); 
     } 
    } catch (NameNotFoundException e) { 
     Log.w("Unable to get version code. Will not show changelog", e); 
    } 

Часть 2 отображение журнал изменения диалогового

 //load some kind of a view 
    LayoutInflater li = LayoutInflater.from(this); 
    View view = li.inflate(R.layout.changelog_view, null); 

    new AlertDialog.Builder(this) 
    .setTitle("Changelog") 
    .setIcon(android.R.drawable.ic_menu_info_details) 
    .setView(view) 
    .setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      // 
     } 
    }).show(); 

Части 3 макета с журналом изменениями

<?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"> 
    <ScrollView android:id="@+id/aboutscrollview" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent">  
      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
        <TextView android:text="Thanks for installing ..." 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:paddingLeft="15px"    
          android:layout_gravity="center_vertical" 
          android:textColor="#ffffff" /> 
        <TextView android:text="Changes: " 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content"    
          android:paddingTop="15px" 
          android:paddingLeft="15px" 
          android:textStyle="bold" 
          android:textColor="#ffffff" /> 
        <TextView android:text="v2.0:changes..." 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:paddingLeft="15px"  
          android:paddingBottom="10px"    
          android:textColor="#ffffff" /> 
        </LinearLayout> 
      </ScrollView>     
</LinearLayout> 
+0

Спасибо! Работает отлично. –

+0

Почему вы используете длинный макет для диалога вместо использования одной длинной строки и 'setMessage'? – jcw

2

Я думаю, что вы, вероятно, на правильном пути. Для # 1 у меня есть класс, который наследует диалог, и его макет просто имеет ScrollView, содержащий TextView, а затем кнопку «увольнять» после этого.

Что касается №2, то, что я сделал в моей работе, является сохранение настроек для LastVersionNotesSeen, который содержит ... ну, номер версии для последних заметок. :) Если это число меньше текущей версии, я показываю последние версии и обновляю значение текущей версии.

18

Try this:

С Журнал изменений Android вы можете легко создавать, показывать и поддерживать диалог журнала изменений Android.

Особенности является:

  • дисплея только то, что новый или всего журнал изменений дисплея
  • при первом запуске установленного приложения или новой версии приложения
  • записи журнала изменений в упрощенном языке, но и использовать HTML и CSS, если это необходимо ...
+0

Сначала я был немного разочарован, когда увидел, что через год я получил ответ, не принятый. Однако, глядя на это, это потрясающе! Благодаря! – Blumer

+0

Зачем мне это делать? Поскольку этот код Google больше не работает, есть ли более свежий источник этого? –

+0

@TinyGiant Я обновил ссылку в этом посте. – Thomas

2

Для просмотра журнала изменений, вы можете также вы локализованы (т.е. загружены из папки Реза) HTML в диалоге:

  AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setTitle(getString(R.string.changelog_dialog_title)); 
      dialog.setIcon(getResources().getDrawable(R.drawable.icon)); 

      WebView wv = new WebView(getApplicationContext()); 
      wv.loadData(getString(R.string.changelog_dialog_text), "text/html", "utf-8"); 
      dialog.setView(wv); 

      dialog.setPositiveButton(getString(android.R.string.ok), new OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

      dialog.show(); 

Волшебства как код «страницы» HTML in res/values ​​/ strings.xml:

<string name="changelog_dialog_text"> 
<![CDATA[<b>Version 1.3.0:</b> 
     <ul> 
     <li>Change 1</li> 
     <li>Change 2</li> 
     </ul> 
]]> 
</string> 
Смежные вопросы