From 08282b0fca13473f7084de654601476e63f6c5de Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Wed, 13 May 2015 13:53:50 +0200 Subject: [PATCH 01/10] update readme and remove dependencies --- lib/build.gradle | 1 - readme.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 readme.md diff --git a/lib/build.gradle b/lib/build.gradle index e0ac450..94b763c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -21,7 +21,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.android.support:palette-v7:21.0.0' compile 'org.apache.commons:commons-collections4:4.0' } diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4f10277 --- /dev/null +++ b/readme.md @@ -0,0 +1,117 @@ +# PaletteLoader + +This is a library aiming to simplify the use of Palette, especially in lists such as ListView, GridView, or RecyclerView. + +## Download + +Add the [Jitpack][jit] repository to your project-level or module-level `build.gradle`: +```groovy +repositories { + maven { + url "https://jitpack.io" + } +} +``` + +Now, you can add the PaletteLoader dependency: +```groovy +compile 'com.github.Musenkishi:PaletteLoader:1.0' +``` + +## Usage + +Currently PaletteLoader supports classes (and extensions of): +* View +* ImageView (masking and background) +* TextView + +If the supplied view is or extends `View`, PaletteLoader will apply the color to the background. If view extends `ImageView` and you use `.mask()`, PaletteLoader will apply the color to the image, not the background. And lastly if view is, or extends `TextView`, the color will be applied to the text, not the background. + +```java +PaletteLoader.with(context, uniqueStringForBitmap) //For reuse purposes uniqueStringForBitmap could be the url for the image. + .load(bitmap) + .setPaletteRequest( + new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.BACKGROUND)) + .into(view); +``` + +## Example +In this example [Glide][glide] is used, which is similar to Picasso: +```java +RequestListener glideDrawableRequestListener = new RequestListener() { + @Override + public boolean onResourceReady(GlideDrawable resource, + String model, + Target target, + boolean isFromMemoryCache, + boolean isFirstResource) { + Bitmap bitmap = ((GlideBitmapDrawable) resource).getBitmap(); + if (bitmap != null) { + Context context = viewHolder.bottomBar.getContext(); + + //Set color to a View's background + PaletteLoader.with(context, model) + .load(bitmap) + .setPaletteRequest( + new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.BACKGROUND)) + .into(viewHolder.bottomBar); + + //Set color to text in a TextView + PaletteLoader.with(context, model) + .load(bitmap) + .setPaletteRequest( + new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.TEXT_TITLE)) + .into(viewHolder.textViewResolution); + + //Colorize an ImageView/ImageButton with .mask(). + //Best result is accomplished with a white image (transparent bakground). + PaletteLoader.with(context, model) + .load(bitmap) + .fallbackColor(viewHolder.textViewResolution.getCurrentTextColor()) + .setPaletteRequest( + new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.TEXT_TITLE)) + .mask() + .into(viewHolder.imageButton); + } + return false; + } + }; + + Glide.with(viewHolder.bottomBar.getContext()) + .load(imageUrl) + .fitCenter() + .placeholder(R.color.Transparent) + .listener(glideDrawableRequestListener) + .into(viewHolder.imageView); +``` + +PaletteLoader will generate the palette in a seperate thread (up to 5 threads on post-lollipop) and apply the color in the assigned view. + +## License + + Copyright 2015 Freddie Lust-Hed + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + [jmdns]: https://github.com/openhab/jmdns + [jit]: https://jitpack.io + [glide]: https://github.com/bumptech/glide \ No newline at end of file From 598ff48a4e7c194286eb2bbb2910fafdc225198e Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Wed, 13 May 2015 14:25:38 +0200 Subject: [PATCH 02/10] fix jitpack integration --- build.gradle | 2 +- lib/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index bf5871d..40ee460 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' - + classpath 'com.github.dcendents:android-maven-plugin:1.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/lib/build.gradle b/lib/build.gradle index 94b763c..3849ce7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'com.android.library' -apply plugin: 'maven' +apply plugin: 'android-maven' android { compileSdkVersion 22 From 70ede1935594a67b2f064073058a51a99ebf2e73 Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Wed, 13 May 2015 14:39:30 +0200 Subject: [PATCH 03/10] fix jitpack integration --- build.gradle | 3 --- 1 file changed, 3 deletions(-) diff --git a/build.gradle b/build.gradle index 40ee460..a212805 100644 --- a/build.gradle +++ b/build.gradle @@ -15,8 +15,5 @@ buildscript { allprojects { repositories { jcenter() - maven { - url "https://jitpack.io" - } } } From 8bd2a15389ba67ba132b63cb14b931a8d3d3f692 Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Wed, 13 May 2015 14:51:25 +0200 Subject: [PATCH 04/10] fix jitpack integration --- lib/build.gradle | 9 +++++++++ readme.md | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3849ce7..3183ea3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -24,3 +24,12 @@ dependencies { compile 'com.android.support:palette-v7:21.0.0' compile 'org.apache.commons:commons-collections4:4.0' } + +// build a jar with source files +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} +artifacts { + archives sourcesJar +} diff --git a/readme.md b/readme.md index 4f10277..7b03e2d 100644 --- a/readme.md +++ b/readme.md @@ -15,7 +15,7 @@ repositories { Now, you can add the PaletteLoader dependency: ```groovy -compile 'com.github.Musenkishi:PaletteLoader:1.0' +compile 'com.github.Musenkishi:PaletteLoader:1.0.0' ``` ## Usage From 7a000e63fe15950fe872b291c64cf22976992f56 Mon Sep 17 00:00:00 2001 From: Freddie Lust-Hed Date: Wed, 13 May 2015 16:08:36 +0200 Subject: [PATCH 05/10] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 7b03e2d..4250062 100644 --- a/readme.md +++ b/readme.md @@ -15,7 +15,7 @@ repositories { Now, you can add the PaletteLoader dependency: ```groovy -compile 'com.github.Musenkishi:PaletteLoader:1.0.0' +compile 'com.github.Musenkishi:PaletteLoader:0.1.0' ``` ## Usage @@ -114,4 +114,4 @@ PaletteLoader will generate the palette in a seperate thread (up to 5 threads on [jmdns]: https://github.com/openhab/jmdns [jit]: https://jitpack.io - [glide]: https://github.com/bumptech/glide \ No newline at end of file + [glide]: https://github.com/bumptech/glide From 37fbc6df306b2c1393148b1ce88232af2d5eff4d Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Thu, 14 May 2015 11:50:52 +0200 Subject: [PATCH 06/10] name consistency refactor --- .../com/musenkishi/paletteloader/PaletteLoader.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java b/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java index 285e4e3..704e370 100644 --- a/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java +++ b/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java @@ -143,8 +143,8 @@ public PaletteBuilder load(Bitmap bitmap) { return this; } - public PaletteBuilder load(Palette colorScheme) { - this.palette = colorScheme; + public PaletteBuilder load(Palette palette) { + this.palette = palette; return this; } @@ -331,12 +331,12 @@ private PaletteRenderer(Bitmap bitmap, PaletteTarget paletteTarget) { @Override public void run() { if (bitmap != null && !bitmap.isRecycled()) { - Palette colorScheme = Palette.generate(bitmap); - paletteCache.put(paletteTarget.getId(), colorScheme); + Palette palette = Palette.generate(bitmap); + paletteCache.put(paletteTarget.getId(), palette); PalettePresenter palettePresenter = new PalettePresenter( paletteTarget, - colorScheme, + palette, false ); uiHandler.post(palettePresenter); From 29eaf924db8617b6ca724e1de974511e7852489e Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Thu, 14 May 2015 12:52:55 +0200 Subject: [PATCH 07/10] CardView support added --- example/src/main/res/layout/activity_main.xml | 11 -- example/src/main/res/values/strings.xml | 6 - lib/build.gradle | 1 + .../paletteloader/PaletteLoader.java | 39 ++++--- {example => sample}/.gitignore | 0 {example => sample}/build.gradle | 6 +- {example => sample}/proguard-rules.pro | 0 .../paletteloader/ApplicationTest.java | 0 .../src/main/AndroidManifest.xml | 4 +- .../paletteloader/sample/Countries.java | 28 +++++ .../paletteloader/sample/Country.java | 30 +++++ .../paletteloader/sample/CountryAdapter.java | 107 ++++++++++++++++++ .../paletteloader/sample}/MainActivity.java | 13 ++- sample/src/main/res/layout/activity_main.xml | 16 +++ sample/src/main/res/layout/list_item.xml | 34 ++++++ .../src/main/res/menu/menu_main.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin sample/src/main/res/values-v21/fonts.xml | 4 + .../src/main/res/values-w820dp/dimens.xml | 0 .../src/main/res/values/dimens.xml | 0 sample/src/main/res/values/fonts.xml | 4 + sample/src/main/res/values/strings.xml | 4 + .../src/main/res/values/styles.xml | 2 +- settings.gradle | 2 +- 27 files changed, 271 insertions(+), 40 deletions(-) delete mode 100644 example/src/main/res/layout/activity_main.xml delete mode 100644 example/src/main/res/values/strings.xml rename {example => sample}/.gitignore (100%) rename {example => sample}/build.gradle (67%) rename {example => sample}/proguard-rules.pro (100%) rename {example => sample}/src/androidTest/java/com/musenkishi/paletteloader/ApplicationTest.java (100%) rename {example => sample}/src/main/AndroidManifest.xml (84%) create mode 100644 sample/src/main/java/com/musenkishi/paletteloader/sample/Countries.java create mode 100644 sample/src/main/java/com/musenkishi/paletteloader/sample/Country.java create mode 100644 sample/src/main/java/com/musenkishi/paletteloader/sample/CountryAdapter.java rename {example/src/main/java/com/musenkishi/paletteloader => sample/src/main/java/com/musenkishi/paletteloader/sample}/MainActivity.java (65%) create mode 100644 sample/src/main/res/layout/activity_main.xml create mode 100644 sample/src/main/res/layout/list_item.xml rename {example => sample}/src/main/res/menu/menu_main.xml (100%) rename {example => sample}/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {example => sample}/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {example => sample}/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {example => sample}/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) create mode 100644 sample/src/main/res/values-v21/fonts.xml rename {example => sample}/src/main/res/values-w820dp/dimens.xml (100%) rename {example => sample}/src/main/res/values/dimens.xml (100%) create mode 100644 sample/src/main/res/values/fonts.xml create mode 100644 sample/src/main/res/values/strings.xml rename {example => sample}/src/main/res/values/styles.xml (60%) diff --git a/example/src/main/res/layout/activity_main.xml b/example/src/main/res/layout/activity_main.xml deleted file mode 100644 index f7158b8..0000000 --- a/example/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/example/src/main/res/values/strings.xml b/example/src/main/res/values/strings.xml deleted file mode 100644 index 749be54..0000000 --- a/example/src/main/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - PaletteLoader - - Hello world! - Settings - diff --git a/lib/build.gradle b/lib/build.gradle index 3183ea3..9967e1b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -22,6 +22,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:palette-v7:21.0.0' + compile 'com.android.support:cardview-v7:22.1.1' compile 'org.apache.commons:commons-collections4:4.0' } diff --git a/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java b/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java index 704e370..67d34fd 100644 --- a/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java +++ b/lib/src/main/java/com/musenkishi/paletteloader/PaletteLoader.java @@ -30,6 +30,7 @@ import android.os.HandlerThread; import android.os.Message; import android.support.v7.graphics.Palette; +import android.support.v7.widget.CardView; import android.util.Pair; import android.view.View; import android.widget.ImageView; @@ -103,7 +104,7 @@ public boolean handleMessage(Message message) { Message uiMessage = uiHandler.obtainMessage(); uiMessage.what = MSG_DISPLAY_PALETTE; - uiMessage.obj = new Pair(palette, pair.second); + uiMessage.obj = new Pair<>(palette, pair.second); uiMessage.arg1 = FALSE; uiHandler.sendMessage(uiMessage); @@ -185,7 +186,7 @@ public void into(View view) { } else { Message bgMessage = backgroundHandler.obtainMessage(); bgMessage.what = MSG_RENDER_PALETTE; - bgMessage.obj = new Pair(bitmap, paletteTarget); + bgMessage.obj = new Pair<>(bitmap, paletteTarget); backgroundHandler.sendMessage(bgMessage); } } @@ -204,6 +205,9 @@ private static void applyColorToView(final PaletteTarget target, int color, bool if (target.getView() instanceof TextView) { applyColorToView((TextView) target.getView(), color, fromCache); return; + } else if (target.getView() instanceof CardView) { + applyColorToCardView((CardView) target.getView(), color, fromCache); + return; } if (fromCache) { if (target.getView() instanceof ImageView && target.shouldMaskDrawable()) { @@ -291,6 +295,23 @@ public void onAnimationUpdate(ValueAnimator animator) { } } + private static void applyColorToCardView(final CardView cardView, int color, boolean fromCache) { + if (fromCache) { + cardView.setCardBackgroundColor(color); + } else { + Integer colorFrom = Color.parseColor("#FFFAFAFA"); //Default light CardView color. + Integer colorTo = color; + ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); + colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animator) { + cardView.setCardBackgroundColor((Integer) animator.getAnimatedValue()); + } + }); + colorAnimation.start(); + } + } + /** * Is it null? Is that null? What about that one? Is that null too? What about this one? * And this one? Is this null? Is null even null? How can null be real if our eyes aren't real? @@ -445,18 +466,4 @@ private static void callListener(Palette palette, OnPaletteRenderedListener onPa onPaletteRenderedListener.onRendered(palette); } } - -// /** -// * Will return a {@link android.support.v7.graphics.Palette} if it's available in the cache -// * @param id The URL or ID that was used to render the {@link android.support.v7.graphics.Palette}. -// * @return The desired {@link android.support.v7.graphics.Palette} if available, otherwise null. -// */ -// public static Palette getPaletteFromCache(String id) { -// if (paletteCache.containsKey(id)){ -// return paletteCache.get(id); -// } else { -// return null; -// } -// } - } diff --git a/example/.gitignore b/sample/.gitignore similarity index 100% rename from example/.gitignore rename to sample/.gitignore diff --git a/example/build.gradle b/sample/build.gradle similarity index 67% rename from example/build.gradle rename to sample/build.gradle index 339a7b0..7413f7c 100644 --- a/example/build.gradle +++ b/sample/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "22.0.1" defaultConfig { - applicationId "com.musenkishi.paletteloader" + applicationId "com.musenkishi.paletteloader.sample" minSdkVersion 15 targetSdkVersion 22 versionCode 1 @@ -21,6 +21,10 @@ android { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') + compile 'com.android.support:support-v4:22.1.1' compile 'com.android.support:appcompat-v7:22.1.1' + compile 'com.android.support:recyclerview-v7:21.0.0' + compile 'com.android.support:cardview-v7:22.1.1' + compile 'com.github.bumptech.glide:glide:3.6.0' compile project(':lib') } diff --git a/example/proguard-rules.pro b/sample/proguard-rules.pro similarity index 100% rename from example/proguard-rules.pro rename to sample/proguard-rules.pro diff --git a/example/src/androidTest/java/com/musenkishi/paletteloader/ApplicationTest.java b/sample/src/androidTest/java/com/musenkishi/paletteloader/ApplicationTest.java similarity index 100% rename from example/src/androidTest/java/com/musenkishi/paletteloader/ApplicationTest.java rename to sample/src/androidTest/java/com/musenkishi/paletteloader/ApplicationTest.java diff --git a/example/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml similarity index 84% rename from example/src/main/AndroidManifest.xml rename to sample/src/main/AndroidManifest.xml index 15aba90..92e7ab5 100644 --- a/example/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ + package="com.musenkishi.paletteloader.sample" > + + countries = new ArrayList<>(Arrays.asList(new Country[]{ + new Country("Sweden", "https://i.imgur.com/7VWkxxU.jpg"), + new Country("Greece", "https://i.imgur.com/sH1yrJD.jpg"), + new Country("France", "https://i.imgur.com/1Gt5ldY.jpg"), + new Country("Japan", "https://i.imgur.com/ypGnx2q.jpg"), + new Country("U.S.A.", "https://i.imgur.com/qfQGh.jpg"), + new Country("China", "https://i.imgur.com/fpgPo.jpg"), + new Country("Australia", "https://i.imgur.com/zW30U2O.jpg"), + new Country("Egypt", "https://i.imgur.com/mXlezUD.jpg"), + new Country("Haiti", "https://i.imgur.com/QS6Dx.jpg"), + new Country("Zambia", "https://gp1.wac.edgecastcdn.net/806614/photos/photos.500px.net/86372017/b367fd0ce34e41f1b357b11942629e7c68dcfb8a/2048.jpg"), + new Country("Chile", "https://i.imgur.com/DcTmjg4.jpg"), + new Country("United Kingdom", "https://i.imgur.com/V0A6N3s.jpg"), + new Country("Canada", "https://i.imgur.com/PLehguA.jpg") + })); + +} diff --git a/sample/src/main/java/com/musenkishi/paletteloader/sample/Country.java b/sample/src/main/java/com/musenkishi/paletteloader/sample/Country.java new file mode 100644 index 0000000..54ddbeb --- /dev/null +++ b/sample/src/main/java/com/musenkishi/paletteloader/sample/Country.java @@ -0,0 +1,30 @@ +package com.musenkishi.paletteloader.sample; + +/** + * Created by frelus on 13/05/15. + */ +public class Country { + + private String name, url; + + public Country(String name, String url) { + this.name = name; + this.url = url; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/sample/src/main/java/com/musenkishi/paletteloader/sample/CountryAdapter.java b/sample/src/main/java/com/musenkishi/paletteloader/sample/CountryAdapter.java new file mode 100644 index 0000000..e4bad73 --- /dev/null +++ b/sample/src/main/java/com/musenkishi/paletteloader/sample/CountryAdapter.java @@ -0,0 +1,107 @@ +package com.musenkishi.paletteloader.sample; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.support.v7.widget.CardView; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; +import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; +import com.musenkishi.paletteloader.PaletteLoader; +import com.musenkishi.paletteloader.PaletteRequest; + +/** + * A simple adapter for loading countries names and images. + * Created by Freddie (Musenkishi) Lust-Hed on 14/05/15. + */ +public class CountryAdapter extends RecyclerView.Adapter { + + @Override + public CountryAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) { + LayoutInflater inflater = (LayoutInflater) viewGroup.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final CardView view = (CardView) inflater.inflate(R.layout.list_item, viewGroup, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final CountryAdapter.ViewHolder viewHolder, int position) { + + Country country = Countries.countries.get(position); + + viewHolder.textView.setText(country.getName()); + + viewHolder.rootView.setCardBackgroundColor(Color.parseColor("#FFFAFAFA")); + viewHolder.textView.setTextColor(Color.BLACK); + + RequestListener glideDrawableRequestListener = new RequestListener() { + @Override + public boolean onException(Exception e, + String url, + Target target, + boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(GlideDrawable resource, + String url, + Target target, + boolean isFromMemoryCache, + boolean isFirstResource) { + Bitmap bitmap = ((GlideBitmapDrawable) resource).getBitmap(); + if (bitmap != null) { + Context context = viewHolder.rootView.getContext(); + PaletteLoader.with(context, url) + .load(bitmap) + .setPaletteRequest(new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.BACKGROUND)) + .into(viewHolder.rootView); + PaletteLoader.with(context, url) + .load(bitmap) + .setPaletteRequest(new PaletteRequest( + PaletteRequest.SwatchType.REGULAR_VIBRANT, + PaletteRequest.SwatchColor.TEXT_TITLE)) + .into(viewHolder.textView); + } + return false; + } + }; + + Glide.with(viewHolder.rootView.getContext()) + .load(country.getUrl()) + .fitCenter() + .placeholder(Color.TRANSPARENT) + .listener(glideDrawableRequestListener) + .into(viewHolder.imageView); + + } + + @Override + public int getItemCount() { + return Countries.countries.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + CardView rootView; + ImageView imageView; + TextView textView; + + public ViewHolder(CardView rootView) { + super(rootView); + this.rootView = rootView; + imageView = (ImageView) rootView.findViewById(R.id.image); + textView = (TextView) rootView.findViewById(R.id.text); + } + } + +} diff --git a/example/src/main/java/com/musenkishi/paletteloader/MainActivity.java b/sample/src/main/java/com/musenkishi/paletteloader/sample/MainActivity.java similarity index 65% rename from example/src/main/java/com/musenkishi/paletteloader/MainActivity.java rename to sample/src/main/java/com/musenkishi/paletteloader/sample/MainActivity.java index 19ceb81..0e4422e 100644 --- a/example/src/main/java/com/musenkishi/paletteloader/MainActivity.java +++ b/sample/src/main/java/com/musenkishi/paletteloader/sample/MainActivity.java @@ -1,17 +1,24 @@ -package com.musenkishi.paletteloader; +package com.musenkishi.paletteloader.sample; -import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; -public class MainActivity extends ActionBarActivity { +public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); + LinearLayoutManager layoutManager = new LinearLayoutManager(this); + recyclerView.setLayoutManager(layoutManager); + recyclerView.setAdapter(new CountryAdapter()); } @Override diff --git a/sample/src/main/res/layout/activity_main.xml b/sample/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..42f762a --- /dev/null +++ b/sample/src/main/res/layout/activity_main.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/sample/src/main/res/layout/list_item.xml b/sample/src/main/res/layout/list_item.xml new file mode 100644 index 0000000..f1a5ea2 --- /dev/null +++ b/sample/src/main/res/layout/list_item.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/example/src/main/res/menu/menu_main.xml b/sample/src/main/res/menu/menu_main.xml similarity index 100% rename from example/src/main/res/menu/menu_main.xml rename to sample/src/main/res/menu/menu_main.xml diff --git a/example/src/main/res/mipmap-hdpi/ic_launcher.png b/sample/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from example/src/main/res/mipmap-hdpi/ic_launcher.png rename to sample/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/example/src/main/res/mipmap-mdpi/ic_launcher.png b/sample/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from example/src/main/res/mipmap-mdpi/ic_launcher.png rename to sample/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/example/src/main/res/mipmap-xhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from example/src/main/res/mipmap-xhdpi/ic_launcher.png rename to sample/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/example/src/main/res/mipmap-xxhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from example/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to sample/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/sample/src/main/res/values-v21/fonts.xml b/sample/src/main/res/values-v21/fonts.xml new file mode 100644 index 0000000..15629ea --- /dev/null +++ b/sample/src/main/res/values-v21/fonts.xml @@ -0,0 +1,4 @@ + + + sans-serif-medium + \ No newline at end of file diff --git a/example/src/main/res/values-w820dp/dimens.xml b/sample/src/main/res/values-w820dp/dimens.xml similarity index 100% rename from example/src/main/res/values-w820dp/dimens.xml rename to sample/src/main/res/values-w820dp/dimens.xml diff --git a/example/src/main/res/values/dimens.xml b/sample/src/main/res/values/dimens.xml similarity index 100% rename from example/src/main/res/values/dimens.xml rename to sample/src/main/res/values/dimens.xml diff --git a/sample/src/main/res/values/fonts.xml b/sample/src/main/res/values/fonts.xml new file mode 100644 index 0000000..cf1294a --- /dev/null +++ b/sample/src/main/res/values/fonts.xml @@ -0,0 +1,4 @@ + + + sans-serif + \ No newline at end of file diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml new file mode 100644 index 0000000..fac0da4 --- /dev/null +++ b/sample/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + PaletteLoader Sample + Settings + diff --git a/example/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml similarity index 60% rename from example/src/main/res/values/styles.xml rename to sample/src/main/res/values/styles.xml index 766ab99..ac1962f 100644 --- a/example/src/main/res/values/styles.xml +++ b/sample/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - diff --git a/settings.gradle b/settings.gradle index 90c274b..035bb58 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':example', ':lib' +include ':sample', ':lib' From d4df6181a3f63ea6f2a6d3414645eb43ade673f9 Mon Sep 17 00:00:00 2001 From: Musenkishi Date: Thu, 14 May 2015 12:56:59 +0200 Subject: [PATCH 08/10] update readme --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 4250062..e892de8 100644 --- a/readme.md +++ b/readme.md @@ -15,7 +15,7 @@ repositories { Now, you can add the PaletteLoader dependency: ```groovy -compile 'com.github.Musenkishi:PaletteLoader:0.1.0' +compile 'com.github.Musenkishi:PaletteLoader:1.1.0' ``` ## Usage @@ -24,6 +24,7 @@ Currently PaletteLoader supports classes (and extensions of): * View * ImageView (masking and background) * TextView +* CardView If the supplied view is or extends `View`, PaletteLoader will apply the color to the background. If view extends `ImageView` and you use `.mask()`, PaletteLoader will apply the color to the image, not the background. And lastly if view is, or extends `TextView`, the color will be applied to the text, not the background. From ec7f16ce2b06029bbe69be53d08755dbb267e636 Mon Sep 17 00:00:00 2001 From: Freddie Lust-Hed Date: Thu, 14 May 2015 13:01:36 +0200 Subject: [PATCH 09/10] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index e892de8..093d714 100644 --- a/readme.md +++ b/readme.md @@ -26,7 +26,7 @@ Currently PaletteLoader supports classes (and extensions of): * TextView * CardView -If the supplied view is or extends `View`, PaletteLoader will apply the color to the background. If view extends `ImageView` and you use `.mask()`, PaletteLoader will apply the color to the image, not the background. And lastly if view is, or extends `TextView`, the color will be applied to the text, not the background. +If the supplied view is or extends `View`, PaletteLoader will apply the color to the background. If view extends `ImageView` and you use `.mask()`, PaletteLoader will apply the color to the image, not the background. And lastly if view is, or extends `TextView`, the color will be applied to the text, not the background. If view is or extends `CardView`, PaletteLoader will apply the color through `.setCardBackgroundColor()`. ```java PaletteLoader.with(context, uniqueStringForBitmap) //For reuse purposes uniqueStringForBitmap could be the url for the image. From 2547bfc95bbfbb51ee9f76c6791db441a362d344 Mon Sep 17 00:00:00 2001 From: Freddie Lust-Hed Date: Thu, 14 May 2015 13:09:20 +0200 Subject: [PATCH 10/10] Update readme.md --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 093d714..c3d91f4 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ # PaletteLoader +![](https://img.shields.io/github/release/Musenkishi/PaletteLoader.svg?label=JitPack%20Maven) + This is a library aiming to simplify the use of Palette, especially in lists such as ListView, GridView, or RecyclerView. ## Download