Android
프레스코
수색…
소개
프레스코 는 안드로이드 응용 프로그램에서 이미지를 표시하는 강력한 시스템입니다.
안드로이드 4.x 이하에서는 Fresco가 이미지를 안드로이드 메모리 (ashmem이라고 불리는)의 특별한 영역에 넣습니다. 이렇게하면 응용 프로그램을 더 빨리 실행할 수 있으며, 두려운 OutOfMemoryError가 훨씬 덜 자주 발생합니다.
Fresco는 JPEG 스트리밍도 지원합니다.
비고
앱 수준 build.gradle 파일에서 의존성을 설정하는 방법은 다음과 같습니다.
dependencies {
// Your app's other dependencies.
compile 'com.facebook.fresco:fresco:0.14.1' // Or a newer version if available.
}
자세한 내용은 여기를 참조하십시오 .
프레스코와 함께 시작하기
먼저, 비고 섹션에 표시된대로 Fresco를 build.gradle
추가하십시오.
애니메이션 GIF 또는 WebP 지원과 같은 추가 기능이 필요한 경우 해당 프레스코 아티팩트 도 추가해야합니다.
프레스코 화를 초기화해야합니다. 이 작업은 1 번만 수행해야하므로 Application
초기화를 Application
하는 것이 좋습니다. 예를 들면 다음과 같습니다.
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
서버에서 원격 이미지를로드하려면 앱에 internt 권한이 필요합니다. AndroidManifest.xml
추가하기 만하면됩니다.
<uses-permission android:name="android.permission.INTERNET" />
그런 다음 XML 레이아웃에 SimpleDraweeView
를 추가합니다. 프레스코는 다른 크기 (자리 표시 자 이미지, 오류 이미지, 실제 이미지 등)가 여러 이미지 일 수 있으므로 이미지 크기의 wrap_content
를 지원하지 않습니다.
따라서 고정 치수 (또는 match_parent
)가있는 SimpleDraweeView
를 추가 할 수 있습니다.
<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" />
마지막으로 Java에서 이미지 URI를 설정할 수 있습니다.
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI("http://yourdomain.com/yourimage.jpg");
그게 다야! 네트워크 이미지를 가져올 때까지 자리 표시 자 드로어 블을보아야합니다.
프레스 코에서 OkHttp 3 사용하기
첫째, 일반 프레스코 Gradle을 의존성뿐만 아니라, 당신은 당신에 OkHttp 3 종속성을 추가해야 build.gradle
:
compile "com.facebook.fresco:imagepipeline-okhttp3:1.2.0" // Or a newer version.
Fresco를 초기화 할 때 (대개 사용자 지정 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);
DraweeController를 사용하여 프레스코 화 된 JPEG 스트리밍
이 예에서는 이미 앱에 Fresco를 추가했다고 가정합니다 ( 이 예 참조).
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.