2015-11-02 19 views
9

アンドロイド素材デザインのパレット機能を使用しようとしていますが、適用に問題があります。Android適用パレット

パレットを正常に生成しましたが、パレットを適用する関数にパレットを渡そうとしています。 関数にパレットを渡したときに、palette.getDarkMutedColor().getRgb() , palette.getVibrantColor().getRgb()のようなメソッドのどれもがパレットの値で設定されていないという問題があります。

これは、発電機の機能と応用機能である私はdidntはその後、関数にパレットを渡し、他の何かを言及し、次し、そうすることで方法が

を埋められるチュートリアル、いずれかのことができますなぜこのisntの作業を参照してください?

コード

private void colorize(Bitmap photo) { 
    Palette palette = new Palette.Builder(photo).generate(); 
    applyPalette(palette); 
} 

private void applyPalette(Palette palette) { 
    getWindow().setBackgroundDrawable(new ColorDrawable(palette.getDarkMutedColor().getRgb())); 

    TextView titleView = (TextView) findViewById(R.id.title); 
    titleView.setTextColor(palette.getVibrantColor().getRgb()); 

    TextView descriptionView = (TextView) findViewById(R.id.description); 
    descriptionView.setTextColor(palette.getLightVibrantColor().getRgb()); 

    colorRipple(R.id.info, palette.getDarkMutedColor().getRgb(), 
      palette.getDarkVibrantColor().getRgb()); 
    colorRipple(R.id.star, palette.getMutedColor().getRgb(), 
      palette.getVibrantColor().getRgb()); 

    View infoView = findViewById(R.id.information_container); 
    infoView.setBackgroundColor(palette.getLightMutedColor().getRgb()); 

    AnimatedPathView star = (AnimatedPathView) findViewById(R.id.star_container); 
    star.setFillColor(palette.getVibrantColor().getRgb()); 
    star.setStrokeColor(palette.getLightVibrantColor().getRgb()); 
} 
+0

getRgb()関数を削除してみます。 –

+0

いいえ、それでも同じエラーが表示されません – Hayes121

+0

「機能しない」という色機能を使用しているときの意味を明確にしてください。 – stkent

答えて

1

使用picassopaletteサードパーティのライブラリをし、次のコードを使用してプロジェクトにインポート:あなたは、同期の方法で試してみました

try { 
     ContextWrapper cw = new ContextWrapper(OtherUserProfileScreenActivity.this); 
     Picasso.with(this).load(image + ".jpg").placeholder(R.drawable.ic_loading).error(R.drawable.ic_error).into(imageView, PicassoPalette.with(Image + ".jpg", imageView).use(PicassoPalette.Profile.MUTED_DARK).intoCallBack(new BitmapPalette.CallBack() { 
      @Override 
      public void onPaletteLoaded(Palette palette) { 

       int mutedColor = palette.getMutedColor(R.attr.colorPrimary); 
       mCollapsingToolbarLayout.setContentScrimColor(mutedColor); 
      } 
     })); 
    } catch (OutOfMemoryError e) { 
     e.printStackTrace(); 
     System.gc(); 
    } 
+0

返信ありがとうございますが、私はサードパーティのライブラリを使用するために探していません – Hayes121

0

を。だから、私は以下のコードがあなたの問題を(非同期の方法で)解決すると思います。 documentationから

private void colorize(Bitmap photo) { 
Palette.from(photo).generate(new Palette.PaletteAsyncListener() { 
      @Override 
      public void onGenerated(Palette palette) { 
       applyPalette(palette); 
      } 
     }); 
} 
+0

提案していただきありがとうございます、私はあなたのコードを置き換えてみましたが、まだ同じエラー – Hayes121

0

Paletteからあなたが使用しているコールの全てが既にRGB値を返しますが、デフォルトの色渡すことが必要です。おそらく代わりにカラースウォッチを返すものを使用するつもりでしたか?たとえば、この代わりにpalette.getVibrantColor().getRgb()の代わりにpalette.getVibrantSwatch().getRgb()を代わりに使用します。すべてのカラーコールを適切なスウォッチ()呼び出しで置き換えます。

また、インポートにimport android.support.v7.graphics.Paletteがあり、依存関係にcompile 'com.android.support:palette-v7:22.1.0'が含まれていることを確認してください。 Palette.Builderを使用している場合、バージョン22.1.0が最小です。あなたは

palette.getVibrantColor().getRgb() 

を書くときに、古いライブラリを使用する必要がありますので、あなたは、私はあなたがエラーを取得していないと仮定しますエラーを取得しなかった理由を私は知らない

+0

提案ありがとうございますが、 – Hayes121

0

最初のもの。更新されたものと同様に、デフォルトのカラー値として1つのパラメータを受け取ります。 RGBをより良く抽出するには、Palette.Swatchオブジェクトを取得し、RGB値を取得することです。 改良されたライブラリの使い方をデモンストレーションするために、小さな作業用のシンプルなアプリケーションを作成しました。そのhereを確認できます。お役に立てれば。

関連する問題