Android
फ्रेस्को
खोज…
परिचय
फ्रेस्को 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.