를로드 한 후 이미지 뷰에 대한 색조 색상을 설정하는 방법 : https://github.com/bumptech/glide/tree/master/samples/svg/src/main/java/com/bumptech/glide/samples/svg안드로이드 - 글라이드 4.0.0-RC0 성공적으로 내가이 샘플 다음 SVG
성공적으로 글라이드 4.0.0-RC0와 SVG 파일을로드 한 후를, 내가 설정하려면 색조 이미지 뷰의 색상,하지만 setColorFilter 작동하지
내 소스: 나는에서 (PNG 이미지를로드
: 내 소스에서
package com.example.quangson.glidesvg;
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
import android.content.ContentResolver;
import android.graphics.PorterDuff;
import android.graphics.drawable.PictureDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.bumptech.glide.RequestBuilder;
import com.example.quangson.glidesvg.glide.GlideApp;
import com.example.quangson.glidesvg.glide.SvgSoftwareLayerSetter;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "SVGActivity";
private ImageView imageViewSVG;
private ImageView imageViewPNG;
private RequestBuilder<PictureDrawable> requestBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageViewSVG = (ImageView) findViewById(R.id.svg_image_view1);
imageViewPNG = (ImageView) findViewById(R.id.svg_image_view2);
imageViewPNG.setImageResource(R.drawable.image_mylogo);
requestBuilder = GlideApp.with(this)
.as(PictureDrawable.class)
.error(R.drawable.image_error)
.transition(withCrossFade())
.listener(new SvgSoftwareLayerSetter());
Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getPackageName() + "/" + R.raw.android_toy_h);
requestBuilder.load(uri).into(imageViewSVG);
imageViewSVG.setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);
imageViewPNG.setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);
}
}
imageViewPNG ⇒ WORKING
에 대한 imageViewPNG 및 setColorFilter로)/당김 입술 나는 성공적으로 (로드 SVG 파일을 작동하지 ⇒ imageViewSVG에 대한 imageViewSVG에 고해상도/원시) 및 setColorFilter에서 (SVG 이미지를로드 할 수 있지만하지 setColorFilter)
imageViewSVG에 색조 색을 설정하도록 도와주세요.
은 내가 BitmapDrawable을 생성 (그리고 그 이후 setColorFilter 것) SvgDrawableTranscoder을 만들기 위해 코드를 다음과 같이 편집을했지만, 그것은 나를 도와 작동하지 않습니다?
package com.sonzero.chibiz.glide;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Picture;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.PictureDrawable;
import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.resource.SimpleResource;
import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
import com.caverock.androidsvg.SVG;
/**
* Convert the {@link SVG}'s internal representation to an Android-compatible one
* ({@link Picture}).
*/
public class SvgDrawableTranscoder implements ResourceTranscoder<SVG, BitmapDrawable> {
@Override
public Resource<BitmapDrawable> transcode(Resource<SVG> toTranscode) {
SVG svg = toTranscode.get();
Picture picture = svg.renderToPicture();
PictureDrawable drawable = new PictureDrawable(picture);
Bitmap bitmap = asBitmap(drawable);
BitmapDrawable mDrawable = new BitmapDrawable(bitmap);
return new SimpleResource<BitmapDrawable>(mDrawable);
}
public Bitmap asBitmap(PictureDrawable pd) {
Bitmap bitmap = Bitmap.createBitmap(pd.getIntrinsicWidth(),pd.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawPicture(pd.getPicture());
return bitmap;
}
}
감사
은 [구현되지 않음] (https://github.com/bumptech/glide/search?utf8=%E2%9C%93&q=setColorFilter&type=)처럼 보이는 github에서 문제가 발생합니다. –
SVG가 아닌 Drawable 또는 GifDrawable 만 지원합니다. 제발 도와주세요 – Sonzero
어떻게 도와 드릴까요? 이 라이브러리를 계속 사용하려면이 기능을 구현할 사람이 필요합니다. 당신 스스로 그것을 할 필요가 있거나 그것을하기 위해 다른 사람에게 돈을 지불해야 할 것입니다. –