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;
}
void updateLangButton() {
- final LanguageResources languageResources =
- DictionaryApplication.isoCodeToResources.get(index.shortName);
- if (languageResources != null && languageResources.flagId != 0) {
- languageButton.setImageResource(languageResources.flagId);
+ final int flagId = IsoUtils.INSTANCE.getFlagIdForIsoCode(index.shortName);
+ if (flagId != 0) {
+ languageButton.setImageResource(flagId);
} else {
if (indexIndex % 2 == 0) {
languageButton.setImageResource(android.R.drawable.ic_media_next);
for (int i = 0; i < dictionaryInfo.indexInfos.size(); ++i) {
final IndexInfo indexInfo = dictionaryInfo.indexInfos.get(i);
- final View button = application.createButton(parent.getContext(),
- dictionaryInfo, indexInfo);
+ final View button = IsoUtils.INSTANCE.createButton(parent.getContext(),
+ dictionaryInfo, indexInfo, application.languageButtonPixels);
final IntentLauncher intentLauncher = new IntentLauncher(parent.getContext(),
getLaunchIntent(getApplicationContext(),
application.getPath(dictionaryInfo.uncompressedFilename),
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);