Android加载html中svg格式图⽚进⾏显⽰
最近做的⼀个项⽬是把assets⽬录中的html显⽰出来,但是因为html⾥⾯有⼀些⼯程图⽚,虽然我⽤ViewPager和PhotoView,进⾏显⽰放⼤了,但是因为⼯程图⽚的线条较多还是⽐较模糊.所以后来就想⽤svg图⽚来进⾏显⽰,⾄于svg是什么,我这⾥就不做多的说明,可以去⽹上搜⼀搜看看.因为svg和png jpg是不同的,没办法⽤glide(我图⽚加载框架⽤的是glide)进⾏加载,所以我就只能另想办法了,最后到⼀个开源库,解决了我的问题,下⾯我也是⽤开源库做的,但是有⼏个坑需要注意:
接下来我贴下我的代码,主要就是ViewPager中的代码:
t.Context;
aphics.Canvas;
aphics.drawable.PictureDrawable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGBuilder;
import java.io.IOException;
svg和canvas的区别import java.util.ArrayList;
senab.photoview.PhotoView;
class ViewPagerAdapter extends PagerAdapter {
private Context context;
private ArrayList<String> images;
private Canvas canvas = new Canvas();
public ViewPagerAdapter(Context context, ArrayList<String> images) {
this.images = images;
}
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = View.inflate(context, R.layout.view_pager_item, null);
PhotoView photoView = (PhotoView) view.findViewById(R.id.photoview);
//注意⼀定要加这⾏代码,不然会加载不出来
photoView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//拿到图⽚的url
String url = (position);
//因为我要显⽰所有图⽚进⾏浏览所以我⽤后缀名进⾏区分
if (dsWith(".svg")) {
try {
//获取assets⽬录下的svg图⽚的相对路径
String replaceUrl = place("file:///android_asset/", "");
SVG svg = new SVGBuilder().Assets(), replaceUrl).build();
canvas.Picture());
//github上的ateDrawable()没有了,现在只有这个⽅法
PictureDrawable drawable = Drawable();
drawable.draw(canvas);
photoView.setImageDrawable(drawable);
} catch (IOException e) {
e.printStackTrace();
}
} else {
//⽤Glide加载图⽚
Glide.with(context).load(url).into(photoView);
}
container.addView(view, ViewPager.LayoutParams.MATCH_PARENT, ViewPager.LayoutParams.MATCH_PARENT); return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}
}
因为也是刚接触svg,欢迎⼤家进⾏交流.
效果:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论