खोज…


परिचय

फ्रेस्को Android अनुप्रयोगों में छवियों को प्रदर्शित करने के लिए एक शक्तिशाली प्रणाली है।

एंड्रॉइड 4.x और निचले हिस्से में, फ्रेस्को एंड्रॉइड मेमोरी के एक विशेष क्षेत्र में छवियां डालता है (जिसे अश्मम कहा जाता है)। यह आपके एप्लिकेशन को अधिक तेज़ी से चलाने देता है - और बहुत कम बार भयानक DOOMemoryError को पीड़ित करता है।

फ्रेस्को जेपीईजी की स्ट्रीमिंग का भी समर्थन करता है।

टिप्पणियों

अनुप्रयोग स्तर build.gradle फ़ाइल में निर्भरताएँ कैसे सेट करें:

dependencies {
    // Your app's other dependencies.
    compile 'com.facebook.fresco:fresco:0.14.1' // Or a newer version if available.
}

अधिक जानकारी यहां पाई जा सकती है

फ्रेस्को के साथ शुरुआत करना

सबसे पहले, अपने build.gradle में फ्रेस्को जोड़ें जैसा कि रिमार्क्स अनुभाग में दिखाया गया है:

यदि आपको अतिरिक्त सुविधाओं की आवश्यकता है, जैसे कि एनिमेटेड जीआईएफ या वेबपी सपोर्ट, तो आपको संबंधित फ्रेस्को कलाकृतियों को भी जोड़ना होगा।

फ्रेस्को को आरंभीकृत करने की आवश्यकता है। आपको यह केवल 1 बार करना चाहिए, इसलिए अपने Application में इनिशियलाइज़ेशन रखना एक अच्छा विचार है। इसके लिए एक उदाहरण होगा:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

यदि आप किसी सर्वर से दूरस्थ चित्र लोड करना चाहते हैं, तो आपके ऐप को इंटर्न अनुमति की आवश्यकता है। बस इसे अपने AndroidManifest.xml जोड़ें:

<uses-permission android:name="android.permission.INTERNET" />

फिर, अपने XML लेआउट में एक SimpleDraweeView जोड़ें। फ्रेस्को छवि आयामों के लिए wrap_content समर्थन नहीं करता है क्योंकि आपके पास विभिन्न आयामों (प्लेसहोल्डर छवि, त्रुटि छवि, वास्तविक छवि, ...) के साथ कई छवियां हो सकती हैं।

तो आप या तो निर्धारित आयामों के साथ एक SimpleDraweeView जोड़ सकते हैं (या match_parent ):

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="120dp"
    fresco:placeholderImage="@drawable/placeholder" />

या अपनी छवि के लिए एक पहलू अनुपात की आपूर्ति करें:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    fresco:viewAspectRatio="1.33"
    fresco:placeholderImage="@drawable/placeholder" />

अंत में, आप जावा में अपनी छवि URI सेट कर सकते हैं:

SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI("http://yourdomain.com/yourimage.jpg");

बस! आपको अपने प्लेसहोल्डर को तब तक देखने योग्य होना चाहिए जब तक कि नेटवर्क छवि को प्राप्त नहीं किया गया हो।

Fresco के साथ OkHttp 3 का उपयोग करना

सबसे पहले, सामान्य फ्रेस्को ग्रैडल निर्भरता के अलावा, आपको अपने build.gradle लिए ओके हेट्प 3 निर्भरता को build.gradle :

compile "com.facebook.fresco:imagepipeline-okhttp3:1.2.0" // Or a newer version.

जब आप फ्रेस्को (आमतौर पर आपके कस्टम Application कार्यान्वयन में) को इनिशियलाइज़ करते हैं, तो आप अब अपने OkHttp क्लाइंट को निर्दिष्ट कर सकते हैं:

OkHttpClient okHttpClient = new OkHttpClient(); // Build on your own OkHttpClient.

Context context = ... // Your Application context.
ImagePipelineConfig config = OkHttpImagePipelineConfigFactory
        .newBuilder(context, okHttpClient)
        .build();
Fresco.initialize(context, config);

जेपीईजी स्ट्रीमिंग फ्रैस्को के साथ ड्रेवे कांट्रोलर का उपयोग करते हुए

यह उदाहरण मानता है कि आपने पहले ही फ्रेस्को को अपने ऐप में शामिल कर लिया है ( इस उदाहरण को देखें):

SimpleDraweeView img = new SimpleDraweeView(context);
ImageRequest request = ImageRequestBuilder
        .newBuilderWithSource(Uri.parse("http://example.com/image.png"))
        .setProgressiveRenderingEnabled(true) // This is where the magic happens.
        .build();

DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setImageRequest(request)
        .setOldController(img.getController()) // Get the current controller from our SimpleDraweeView.
        .build();

img.setController(controller); // Set the new controller to the SimpleDraweeView to enable progressive JPEGs.


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow