Skip to content

Instantly share code, notes, and snippets.

@aleien
aleien / animated-vector-puzzler.md
Last active October 11, 2018 20:56
Почему drawable, определенный по дефолту как vector, а v21 как animated-vector, будет отображаться по-разному в зависимости от значения supportVectorDrawable?

В общем, дело обстоит так. Когда ты определяешь ресурс с одним именем в разных папках, они раскладываются так, чтобы было понятно андроиду. Путь к этим файлам для разных конфигураций прописывается в файле resources.arsc, который лежит в apk.

Если определить drawable/avd.xml и drawable-v21/avd.xml (анимированный), для supportVectorDrawable=true они будут определены как: default=res/drawable/avd.xml (неанимированный) v21=res/drawable-v21.xml (анимированный)

А для supportVectorDrawable=false будут другие значения. anydpi-v21=res/drawable-anydpi-v21/avd.xml (неанимированный) v21=res/drawable-v21/avd.xml (анимаированный)

Presenter(@NonNull RxTransformer rxTransformer,
@NonNull Repository repository) {
mRxTransformer = rxTransformer;
mRepository = repository;
}
void onLoadEvents() {
mRepository.getEvent(id)
.compose(mRxTransformer.chainSchedulers())
.subscribe(event -> doSomething());
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Transformer for observables. You can pass it to class that uses subscriptions to have full
* control of schedulers used. Also it is preferable way to mock schedulers in tests.
*
* <p>Usage example:
* <code><pre>
public class FeedLoader {
public Observable<FeedResponse> loadFeedsList() {
return feedWebService.getFeeds();
}
}
public class FeedSubscriber {
feedLoader = new FeedLoader();
public void loadFeedsList() {
public Observable<List<String>> uploadImages(List<GalleryImage> images) {
return Observable.from(images)
.map(galleryImage -> checkImageSize(galleryImage))
.flatMap(galleryImage ->
uploadWebService.uploadPic(
new TypedFile(Utils.getMimeType(galleryImage.path()), new File(galleryImage.path()))))
.map(FileUploadResponse::filename)
.toList();
}