2015-11-02 6 views
9

लागू करें मैं एंड्रॉइड सामग्री डिजाइन के पैलेट फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे इसे लागू करने में कुछ परेशानी हो रही है।एंड्रॉइड पैलेट

मैंने सफलतापूर्वक पैलेट जेनरेट किया है और अब मैं पैलेट को उस फ़ंक्शन में पास करने की कोशिश कर रहा हूं जो इसे लागू करता है।

मेरी समस्या यह है कि जब मैं पैलेट में applyPalette फ़ंक्शन में पास करता हूं तो palette.getDarkMutedColor().getRgb() , palette.getVibrantColor().getRgb() जैसे किसी भी तरीके को पैलेट से मानों के साथ पॉप्युलेट नहीं किया जा रहा है।

ट्यूटोरियल है कि मैं फ्लॉप कुछ उल्लेख पीछा कर रहा था अन्य तो कार्य करने के लिए पैलेट में गुजर, और इतने तरीकों करने में से भरे जाएंगे

यह जनरेटर समारोह और लागू करने के समारोह है, कर सकते हैं किसी भी एक देखो यह क्यों काम नहीं कर रहा है?

कोड

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

आप तुल्यकालिक तरह से कोशिश की है। तो मुझे लगता है कि नीचे कोड आपकी समस्या का समाधान करेगा (असीमित तरीके से)।

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

सुझाव के लिए धन्यवाद, मैंने आपके कोड को आपके साथ बदलने की कोशिश की लेकिन अभी भी एक ही त्रुटि – Hayes121

0

documentation से, कॉल आप Palette से उपयोग कर रहे हैं पहले से ही एक आरजीबी मान लेकिन आवश्यकता होती है एक डिफ़ॉल्ट रंग पारित किया जा के सभी। शायद आप उन लोगों का उपयोग करना चाहते हैं जो बदले में रंग बदलते हैं? उदाहरण के लिए, palette.getVibrantColor().getRgb() करने के बजाय आप इसके बजाय palette.getVibrantSwatch().getRgb() ऐसा करेंगे। अपने सभी उचित कॉल के साथ रंग कॉल स्वैच() कॉल प्राप्त करें।

इसके अलावा, सुनिश्चित करें कि आपके आयात में import android.support.v7.graphics.Palette है और आप अपनी निर्भरताओं में compile 'com.android.support:palette-v7:22.1.0' शामिल हैं। संस्करण 22.1.0 न्यूनतम होने के नाते आप Palette.Builder का उपयोग कर रहे हैं। मैं नहीं जानता कि

+0

सुझाव के लिए धन्यवाद लेकिन मैंने पहले से ही इन्हें शामिल किया है और आयात किया है – Hayes121

0

पहली बात तुम क्यों त्रुटि नहीं मिला जब आप लिखते हैं

palette.getVibrantColor().getRgb() 

मैं आप त्रुटि नहीं मिला समझेंगे, तो आप पुराने पुस्तकालय का उपयोग करना चाहिए। जैसा कि अद्यतन किया गया है, यह एक पैरामीटर को डिफ़ॉल्ट रंग मान के रूप में स्वीकार करता है। आरजीबी बेहतर चीज निकालने के लिए Palette.Swatch ऑब्जेक्ट प्राप्त करना और आरजीबी मान प्राप्त करना है। मैंने बेहतर लाइब्रेरी का उपयोग करने के तरीके को प्रदर्शित करने के लिए एक छोटा काम करने वाला सरल ऐप बनाया है, आप here देख सकते हैं। उम्मीद है की यह मदद करेगा।

संबंधित मुद्दे