diff options
Diffstat (limited to 'src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java')
| -rw-r--r-- | src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java | 78 |
1 files changed, 71 insertions, 7 deletions
diff --git a/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java b/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java index 6c2c7d981..207f9c904 100644 --- a/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java +++ b/src/main/java/com/anysoftkeyboard/ui/settings/MainFragment.java @@ -3,12 +3,19 @@ package com.anysoftkeyboard.ui.settings; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.drawable.AnimationDrawable; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; +import android.support.v7.graphics.Palette; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.method.LinkMovementMethod; @@ -34,6 +41,7 @@ public class MainFragment extends Fragment { private static final String TAG = "MainFragment"; private AnimationDrawable mNotConfiguredAnimation = null; + private AsyncTask<Drawable, Void, Palette.Swatch> mPaletteTask; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -136,11 +144,8 @@ public class MainFragment extends Fragment { View notConfiguredBox = getView().findViewById(R.id.not_configured_click_here); //checking if the IME is configured final Context context = getActivity().getApplicationContext(); - //checking the default IME - final boolean isDefaultIME; - isDefaultIME = SetupSupport.isThisKeyboardSetAsDefaultIME(context); - if (isDefaultIME) { + if (SetupSupport.isThisKeyboardSetAsDefaultIME(context)) { notConfiguredBox.setVisibility(View.GONE); } else { notConfiguredBox.setVisibility(View.VISIBLE); @@ -154,13 +159,72 @@ public class MainFragment extends Fragment { ImageView screenShotHolder = (ImageView) getView().findViewById(R.id.keyboard_screen_shot); if (themeScreenShot == null) - screenShotHolder.setBackgroundResource(R.drawable.lean_dark_theme_screenshot); - else - screenShotHolder.setImageDrawable(themeScreenShot); + themeScreenShot = ContextCompat.getDrawable(getActivity(), R.drawable.lean_dark_theme_screenshot); + screenShotHolder.setImageDrawable(themeScreenShot); + mPaletteTask = new AsyncTask<Drawable, Void, Palette.Swatch>() { + @Override + protected Palette.Swatch doInBackground(Drawable... params) { + Bitmap bitmap = drawableToBitmap(params[0]); + Palette p = Palette.from(bitmap).generate(); + Palette.Swatch highestSwatch = null; + for (Palette.Swatch swatch : p.getSwatches()) { + if (highestSwatch == null || highestSwatch.getPopulation() < swatch.getPopulation()) + highestSwatch = swatch; + } + return highestSwatch; + } + + @Override + protected void onPostExecute(Palette.Swatch swatch) { + super.onPostExecute(swatch); + if (!isCancelled()) { + if (swatch != null) { + final int backgroundRed = Color.red(swatch.getRgb()); + final int backgroundGreed = Color.green(swatch.getRgb()); + final int backgroundBlue = Color.blue(swatch.getRgb()); + final int backgroundColor = Color.argb(128/*50% alpha*/, backgroundRed, backgroundGreed, backgroundBlue); + TextView gplusLink = (TextView) getView().findViewById(R.id.ask_gplus_link); + gplusLink.setTextColor(swatch.getTitleTextColor()); + gplusLink.setBackgroundColor(backgroundColor); + + TextView subtitle = (TextView) getView().findViewById(R.id.main_settings_hero_sub_title); + subtitle.setTextColor(swatch.getBodyTextColor()); + subtitle.setBackgroundColor(backgroundColor); + } + } + } + }.execute(themeScreenShot); if (mNotConfiguredAnimation != null) mNotConfiguredAnimation.start(); } + @Override + public void onStop() { + super.onStop(); + mPaletteTask.cancel(false); + mPaletteTask = null; + } + private static Bitmap drawableToBitmap(Drawable drawable) { + Bitmap bitmap; + + if (drawable instanceof BitmapDrawable) { + BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; + if (bitmapDrawable.getBitmap() != null) { + return bitmapDrawable.getBitmap(); + } + } + + if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) { + bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel + } else { + bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + return bitmap; + } }
\ No newline at end of file |
