]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryActivity.java
More robust code to get display density.
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivity.java
index 42012d3ec7e4e333428de50ae20fccd1ae13886c..37c4755ec49bdbd379011f64759a94186aff8127 100644 (file)
@@ -42,6 +42,7 @@ import android.text.Spannable;
 import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 import android.text.style.StyleSpan;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.ContextMenu;
@@ -432,24 +433,25 @@ public class DictionaryActivity extends ActionBarActivity {
 
         setListAdapter(new IndexAdapter(index));
 
+        // Pre-load the Transliterator (will spawn its own thread)
+        TransliteratorManager.init(new TransliteratorManager.Callback() {
+            @Override
+            public void onTransliteratorReady() {
+                uiHandler.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        onSearchTextChange(searchView.getQuery().toString());
+                    }
+                });
+            }
+        }, DictionaryApplication.threadBackground);
+
         // Pre-load the collators.
         new Thread(new Runnable() {
             public void run() {
-                android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
+                android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE);
                 final long startMillis = System.currentTimeMillis();
                 try {
-                    TransliteratorManager.init(new TransliteratorManager.Callback() {
-                        @Override
-                        public void onTransliteratorReady() {
-                            uiHandler.post(new Runnable() {
-                                @Override
-                                public void run() {
-                                    onSearchTextChange(searchView.getQuery().toString());
-                                }
-                            });
-                        }
-                    });
-
                     for (final Index index : dictionary.indices) {
                         final String searchToken = index.sortedIndexEntries.get(0).token;
                         final IndexEntry entry = index.findExact(searchToken);
@@ -1429,7 +1431,7 @@ public class DictionaryActivity extends ActionBarActivity {
         // Log.d(LOG, "html=" + html);
         startActivityForResult(
             HtmlDisplayActivity.getHtmlIntent(getApplicationContext(), String.format(
-                    "<html><head></head><body>%s</body></html>", html),
+                    "<html><head><meta name=\"viewport\" content=\"width=device-width\"></head><body>%s</body></html>", html),
                                               htmlTextToHighlight, false),
             0);
     }
@@ -1472,7 +1474,12 @@ public class DictionaryActivity extends ActionBarActivity {
 
         private void getMetrics() {
             // Get the screen's density scale
-            final float scale = getResources().getDisplayMetrics().density;
+            // The previous method getResources().getDisplayMetrics()
+            // used to occasionally trigger a null pointer exception,
+            // so try this instead.
+            DisplayMetrics dm = new DisplayMetrics();
+            getWindowManager().getDefaultDisplay().getMetrics(dm);
+            final float scale = dm.density;
             // Convert the dps to pixels, based on density scale
             mPaddingDefault = (int) (PADDING_DEFAULT_DP * scale + 0.5f);
             mPaddingLarge = (int) (PADDING_LARGE_DP * scale + 0.5f);