标签: svg-android

android:从web加载svg文件并在图像视图中显示它

我想从web加载svg文件并在imageView上显示此文件,对于普通的png或其他图像文件我使用Picasso库是否可以将此库用于svg文件?有没有办法从网上加载svg文件并在图像视图上显示?我使用svg-android库来显示svg文件,但我不知道如何从web获取svg图像所有示例都使用本地文件.

svg android imageview svg-android picasso

27
推荐指数
4
解决办法
3万
查看次数

在Android 3.0+中使用相同代码不可见的SVG图像

我有一个测试应用程序,我有一个ListView与一个项目,其中包含两个图像.

nexus 7 vs.欲望高清

正如您在API 17设备中看到的那样,当API 10设备执行此操作时,设备不会显示播放按钮(SVG图像).我该如何解决这个问题?

我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/background"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:scaleType="centerCrop" />

    <ImageView
        android:id="@+id/forceground"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是我设置图像的基本代码:

View preview = inflater.inflate(R.layout.list_video_preview, parent, false);
ImageView background = (ImageView)preview.findViewById(R.id.background);
ImageView forceground = (ImageView)preview.findViewById(R.id.forceground);
PictureDrawable play = SVGParser.getSVGFromResource(parent.getResources(), R.raw.play_blue).createPictureDrawable();
forceground.setImageDrawable(play);
Run Code Online (Sandbox Code Playgroud)

SVG paser来自svg-android.

svg android android-imageview svg-android

10
推荐指数
2
解决办法
3282
查看次数

缩放画布以在Android中调整SVG的大小

我没有太多的运气包围我的头,所以我希望有人可以帮助我.

我使用svg-android从SVG获得了一个drawable,但是drawable没有缩放到视图.我能够找到的所有内容都说我应该直接绘制到画布并重新缩放画布,但是当我尝试它时,它似乎只是改变边界而不是缩放图像.

这是我到目前为止所尝试的:

ImageView testview = (ImageView)findViewById(R.id.testview);

//Get SVG and convert to drawable
SVG vector = SVGParser.getSVGFromResource(getResources(),R.drawable.testvector);
Drawable test = vector.createPictureDrawable();

testview.setBackground(test);  //displays fine, but won't scale to the dimensions of
                               //the View

//function that clips the image but doesn't scale:
Drawable testTwo = new CustomPictureDrawable(vector.getPicture(), 
(float)0.5, (float)0.5);

testView.setBackground(testTwo);

class CustomPictureDrawable extends PictureDrawable {
   private float scalex, scaley;

public CustomPictureDrawable(Picture picture, float scalex, float scaley) {
    super(picture);
    this.scalex = scalex;
    this.scaley = scaley;
}

@Override
public void draw(Canvas canvas) { …
Run Code Online (Sandbox Code Playgroud)

android android-canvas svg-android

10
推荐指数
2
解决办法
8150
查看次数

使用svg-android时,我只得到空白的白色屏幕

目的: 我想使用ImageView显示SVG图像文件.

尝试1:

  • 我正在使用svg-android库来做到这一点.

  • 我正在逐字逐句地跟进他们的教程.我只是将他们的代码粘贴到我的onCreate中,从onCreate中注释掉我的应用代码.

    在此之前我有一个闪屏,但我怀疑这无论如何会干扰这一点.无论如何,我只会更改启动意图并发布更新.

  • 我已将他们的jar添加到libs文件夹中并引用它.

结果1:

我正在测试三星Galaxy I93000(国际版)

我得到的只是一个白色的屏幕.

没有编译或运行时错误.

Logcat输出如下:

01-13 01:22:11.755: D/dalvikvm(24889): GC_FOR_ALLOC freed 52K, 7% free 12198K/12995K, paused 17ms, total 17ms
01-13 01:22:11.765: I/dalvikvm-heap(24889): Grow heap (frag case) to 17.000MB for 4642816-byte allocation
01-13 01:22:11.810: D/dalvikvm(24889): GC_CONCURRENT freed 1K, 5% free 16730K/17543K, paused 15ms+2ms, total 43ms
01-13 01:22:12.080: D/dalvikvm(24889): GC_FOR_ALLOC freed <1K, 5% free 16731K/17543K, paused 13ms, total 13ms
01-13 01:22:12.100: I/dalvikvm-heap(24889): Grow heap (frag case) to 21.928MB for 5168972-byte allocation …
Run Code Online (Sandbox Code Playgroud)

svg android imageview svg-android

9
推荐指数
1
解决办法
2954
查看次数

我如何着色这个PictureDrawable?

svgandroid用来PictureDrawable从SVG原始资源生成s.但是,我似乎无法在这种方式创建的drawable上应用滤色器.

使用PNG的旧代码

icon = getResources().getDrawable(R.drawable.ic_braille);
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);
Run Code Online (Sandbox Code Playgroud)

有效,但是

icon = SVGParser.getSVGFromResource(getResources(), R.raw.ic_braille).createPictureDrawable();
icon.setColorFilter(0x88880000, Mode.MULTIPLY);
((ImageView)v.findViewById(R.id.icon)).setImageDrawable(icon);
Run Code Online (Sandbox Code Playgroud)

才不是.我尝试在DrawView上,在ImageView上(在设置drawable之后),通过XML,甚至在Drawable上将其设置为ImageView的drawable之后应用滤色器,对于PNG也可以,但是它们都不适用PictureDrawable.更换setImageDrawablesetBackgroundDrawable,被一些人视为建议,不呈现绘制的.我在Androids 1.6,2.3,4.0上运行代码,没有区别.我检查了SVG库的来源,它在任何时候都没有触摸彩色滤镜.我究竟做错了什么?某些种类的抽屉是否无法着色?

svg android svg-android

6
推荐指数
1
解决办法
1096
查看次数

使用svg-android库


我正在尝试使用svg-android来显示我从openstreetmap导出的路线图.
我按照教程中的步骤操作,它与test.svg图形(3KB)配合使用.但导出的地图大小为500KB.当我尝试加载地图时,我得到一个SVGParseException:

System.err: com.larvalabs.svgandroid.SVGParseException: java.lang.NumberFormatException
System.err:     at com.larvalabs.svgandroid.SVGParser.parse(Unknown Source)
System.err:     at com.larvalabs.svgandroid.SVGParser.getSVGFromResource(Unknown Source)
System.err:     at my.package.view.SVGMapView.loadSVGImage(SVGMapView.java:141)
Run Code Online (Sandbox Code Playgroud)

第141行说:

svg = SVGParser.getSVGFromResource(getResources(), R.raw.test);
Run Code Online (Sandbox Code Playgroud)

是否有可能在额外的线程中预加载svg图像,或者是否有更好的解决方案来解决我的问题?

谢谢

svg android svg-android

5
推荐指数
1
解决办法
3335
查看次数

带有可点击区域的可缩放 SVG - Android

我正在制作非常简单的应用程序。它需要显示一个包含广义世界地图的 SVG。通过单击城市名称(svg 矩形),我需要显示与该城市对应的另一个 SVG。此外,所有 SVG 都必须支持缩放和平移。

我设法让 SVG 支持缩放和平移,效果很好。为此,我使用svg-android库来渲染SVG,并使用定制的TouchImageView进行平移、缩放和捕获缩放和触摸事件。但是,在 Android 中的 SVG 上制作可点击区域似乎是不可能的。

我尝试了蛮力,在每次用户交互(触摸或缩放)和每次点击 SVG 时重新计算我感兴趣区域的位置,以检查我的区域(矩形列表)是否包含该点,并执行相应的操作。

这不起作用,因为我无法理解计算规则MotionEvent#getX/Y和类似方法。也许我可以为固定 SVG 实现这一点,但对于可缩放,我真的不能。

任何提示?这在Android中甚至可能吗?

svg android svg-android motionevent touchimageview

5
推荐指数
1
解决办法
2040
查看次数

Android中的矢量动态调整大小

我在android中使用SVG导入的图像,但我无法使用ImageView调整大小,图像是这样的.

在此输入图像描述

进口的drawable是:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="208dp"
android:height="208dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
    android:fillColor="#8A1D3043"
    android:pathData="...lines and curves..."/>
</vector>
Run Code Online (Sandbox Code Playgroud)

当我更改ImageView(它所附加的位置)layout_height和layout_width时,我得到了这个:

        <ImageView
        android:layout_height="100dp"
        android:layout_width="100dp"
        app:layout_width="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
        app:layout_height="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
        android:layout_gravity="center_horizontal"
        android:contentDescription="@{message}"
        android:src="@{image}"
        android:scaleType="center"
        tools:src="@drawable/img_message_private"/>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,向量的高度和宽度都是208dp,但我的ImageView必须用作100dp.必须使用dataBind动态调整View的大小,因此我认为有多个向量不是一个选项.

显然,图像不能与ImageView一起缩放.有人知道为什么以及如何轻松绕过它?

svg android svg-android android-vectordrawable

1
推荐指数
1
解决办法
5761
查看次数