package com.s16.preference; import com.s16.inputmethod.skeyboard.R; import android.app.AlertDialog; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.preference.DialogPreference; import android.text.Html; import android.text.method.LinkMovementMethod; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.View; import android.widget.TextView; public class AboutPreference extends DialogPreference { private static final float PADDING = 10.0f; public AboutPreference(Context context, AttributeSet attrs) { super(context, attrs); } public AboutPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } private float convertDpToPixel(float dp){ DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); } @Override protected void onBindView(View view) { try { PackageInfo pInfo = getContext().getPackageManager().getPackageInfo(getContext().getPackageName(), 0); String versionText = getContext().getResources().getString(R.string.version_text).toString(); setSummary(String.format(versionText, pInfo.versionName)); } catch (NameNotFoundException e) { e.printStackTrace(); } super.onBindView(view); } @Override protected View onCreateDialogView() { String html = getContext().getResources().getString(R.string.about_text).toString(); final TextView message = new TextView(getContext()); int padding = (int)convertDpToPixel(PADDING); message.setPadding(padding, padding, padding, padding); //message.setTextColor(context.getResources().getColor(android.R.color.black)); message.setMovementMethod(LinkMovementMethod.getInstance()); message.setText(Html.fromHtml(html)); return message; } @Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { builder.setIcon(android.R.drawable.ic_dialog_info); builder.setTitle(R.string.prefs_about); builder.setNegativeButton(getContext().getText(android.R.string.ok), this); builder.setPositiveButton(null, null); } public static void showAboutDialog(Context context) { AboutPreference prefs = new AboutPreference(context, null); final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); prefs.onPrepareDialogBuilder(dialogBuilder); View contentView = prefs.onCreateDialogView(); dialogBuilder.setView(contentView); dialogBuilder.show(); } }