小编Lew*_*ary的帖子

Android支持库:getDrawable是否为vector而不是vector

使用Android> = 5.0时,

Drawable d = getResources().getDrawable(R.drawable.icon)
Run Code Online (Sandbox Code Playgroud)

正确解析XML并返回有效的drawable.但是当使用新的Vector Drawable支持库(版本23.4,Gradle 2.1.2)时,此代码在Android 4下崩溃.

android.content.res.Resources $ NotFoundException

...

引起:org.xmlpull.v1.XmlPullParserException:二进制XML文件行#2:无效的drawable标签向量

解决方案是使用

Drawable d = VectorDrawableCompat.create(getResources(), R.drawable.icon, null);
Run Code Online (Sandbox Code Playgroud)

但是,如果资源不是矢量资源,则会崩溃:

java.io.FileNotFoundException:损坏的XML二进制文件

那么什么样的代码已经被代替的第一线,使其适用于Android 4和Android 6与向量和非向量绘图资源 - 例如在在Android 5.0以上版本的项目中使用该行的所有情况?支持库文章未提及执行此迁移的方法

java android android-support-library android-support-design android-vectordrawable

23
推荐指数
2
解决办法
4855
查看次数

android工具栏:如何在背景中显示带有图像的工具栏和顶部的菜单项

使用材质设计如何使用背景图像创建工具栏.

以下是我想要的:

带图像和溢出的工具栏和搜索菜单图标.

我正在尝试以下代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/actionBar"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:contentInsetEnd="0dp"
    app:contentInsetStart="0dp" 
    android:minHeight="200dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageViewplaces"
        android:src="@drawable/puri" 
        android:layout_gravity="center"/>

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

而我得到的是:

在此输入图像描述

android android-toolbar

11
推荐指数
3
解决办法
2万
查看次数

支持库中的AnimatedVectorDrawable和"pathData"的动画

我使用动画矢量支持库23.2.0,就像这样:

compile 'com.android.support:support-vector-drawable:23.2.0'
compile 'com.android.support:animated-vector-drawable:23.2.0'
Run Code Online (Sandbox Code Playgroud)

我试图动画" pathData "(将线条变换为另一个).我的代码看起来像这样.

绘制/ ic_done.xml:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:name="tick"
        android:pathData="M4.8,12L9,16.2L20,8"
        android:strokeColor="#FF000000" />
</vector>
Run Code Online (Sandbox Code Playgroud)

绘制/ ic_done_animated.xml:

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:drawable="@drawable/ic_done">
    <target
        android:name="tick"
        android:animation="@animator/tick_path_animation" />
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

动画师/ tick_path_animation.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">
    <objectAnimator
        android:duration="200"
        android:propertyName="pathData"
        android:valueFrom="M4.8,12L4.8,12L4.8,12"
        android:valueTo="M4.8,12L9,16.2L9,16.2"
        android:valueType="pathType" />
    <objectAnimator
        android:duration="200"
        android:propertyName="pathData"
        android:valueFrom="M4.8,12L9,16.2L9,16.2"
        android:valueTo="M4.8,12L9,16.2L20,8"
        android:valueType="pathType" />
</set>
Run Code Online (Sandbox Code Playgroud)

Java代码:

ImageView vImgAnimated = findByViewId(R.id.img);
AnimatedVectorDrawableCompat animatedVector = AnimatedVectorDrawableCompat.create(getContext(), R.drawable.ic_done_animated);
vImgAnimated.setImageDrawable(animatedVector);
animatedVector.start(); …
Run Code Online (Sandbox Code Playgroud)

java android android-animation android-support-library android-vectordrawable

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

RTL支持以下API 19的矢量绘图

我有一个vector绘画.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
    <path
        android:fillColor="#65666a"
        android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z" />
</vector>
Run Code Online (Sandbox Code Playgroud)

我添加android:autoMirrored="true"了支持RTL的属性,但它仅用于API 19及更高版本.但我的最低API级别是API 17.如何添加后向可比性?任何帮助,将不胜感激.

android right-to-left android-vectordrawable

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

如何使用设计支持库23.2实现动画矢量drawable?

我见过android开发者博客,新的设计支持库23.2支持动画矢量.当我搜索时,我遇到了这个链接来实现动画矢量drawable.在设计支持库23.2中实现动画矢量drawables的方法是否相同?有人可以帮我解决新的实施问题吗?

animation android android-studio androiddesignsupport android-vectordrawable

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

Android-如何在矢量图像上实现中心比例动画

我最近开始涉足矢量图像和动画.但是,一旦路径变形动画完成,我希望能够在所有方向上均匀地缩放我的图像.

我尝试过在任何地方应用pivotX和Y但它似乎没有什么区别.

我怎样才能实现中心规模,而不仅仅是从左到右扩展?

test_layout.xml

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

    <ImageView
        android:id="@+id/test_image"
        android:layout_gravity="center"
        android:src="@drawable/animated_logo"
        android:layout_width="200dp"
        android:layout_height="200dp" />

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

animated_logo.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/closed_logo" >
    <target
        android:animation="@anim/scale"
        android:name="logo"/>
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

scale.anim

<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
    android:duration="1500"
    android:propertyName="scaleX"
    android:valueFrom="1.0"
    android:valueTo="10"
    android:valueType="floatType"/>
<objectAnimator
    android:duration="1500"
    android:propertyName="scaleY"
    android:valueFrom="1.0"
    android:valueTo="10"
    android:valueType="floatType"/>
Run Code Online (Sandbox Code Playgroud)

closed_logo.xml

    <?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="75"
    android:viewportHeight="75"
    android:width="1000dp"
    android:height="1000dp">
    <group android:name="logo">
        <path
            android:name="box"
            android:fillColor="#DADADA"
            android:pathData="M65.5,54.4L11.1,65.5L0,11.1L54.4,0L65.5,54.4z"/>


    <path
            android:name="bottom_left"
            android:fillColor="#47A89C"
            android:pathData="M 7.1,22.2 l 15.2,36.0 l 10.4,-25.6 L 32.699997,32.6 L 7.1,22.2 L 7.1,22.2z" />

        <path …
Run Code Online (Sandbox Code Playgroud)

xml animation android scale android-vectordrawable

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

了解Android的VectorDrawable属性

我需要帮助来了解XML定义的VectorDrawable的某些属性。

当我使用Android Studio导入新的矢量资产时,它会生成类似以下内容的内容:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">

    <path 
        android:fillColor="#000000"
        android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z" />
</vector>
Run Code Online (Sandbox Code Playgroud)

默认情况下,宽度,高度,viewportHeight和viewportWidth被设置为某些默认的Material设计值。

由于我们处理的是矢量而不是像素图像。我的问题是:

  • 为什么需要设置尺寸(宽度,高度等)?
  • 如果我需要对多个尺寸使用相同的矢量xml,那么如何在不创建多个矢量xml的情况下覆盖此24dp值,这当然会破坏整个目的!

android android-vectordrawable

5
推荐指数
2
解决办法
1289
查看次数

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

如何在具有不同颜色的 Android XML 中重用矢量

假设我有一个复杂的矢量图像。路径数据有一个填充颜色。我正在使用需要可绘制资源 ID 的 API。我想给这个 API 三个不同的矢量图像,唯一的区别是颜色。

我找不到一种方法来从 XML 着色矢量图像,只能以编程方式。我认为以下可能有效,但事实并非如此。

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/ic_awesome_bar_play"
        android:tint="#a8a8a8" />
Run Code Online (Sandbox Code Playgroud)

我也考虑过使用图层列表,但这不支持着色。任何人都知道如何不制作此矢量图像的三个副本?

xml android colors drawable android-vectordrawable

5
推荐指数
0
解决办法
280
查看次数

Android Studio 导出矢量可绘制

是否可以在 Android Studio 中执行将 .svg 文件导入矢量可绘制的反向过程?https://developer.android.com/studio/write/vector-asset-studio.html

我正在处理遗留代码,设计人员需要我们应用程序的图标示例。我给他发送了 Android Studio 中矢量可绘制的 xml 文件,但他说他不知道 xml 文件。

svg android android-drawable android-studio android-vectordrawable

5
推荐指数
0
解决办法
3844
查看次数

Youtube播放/暂停动画矢量Drawable在android上

我正在尝试使用svgs路径和动画矢量来制作像youtube Play/Pause这样的动画.

Strings.xml

<resources>
  <string name="app_name">AnimatedSvgTest</string>

  <string name="svg_triangle">
    M0,0 L0,24 12,12 0,0
  </string>
  <string name="svg_pause">
    M0,0 L0,24 M12,0 L12,24
  </string>
</resources>
Run Code Online (Sandbox Code Playgroud)

anim/path_morph.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
  <objectAnimator
    android:duration="4000"
    android:propertyName="pathData"
    android:valueFrom="@string/svg_triangle"
    android:valueTo="@string/svg_pause"
    android:valueType="pathType" />
</set>
Run Code Online (Sandbox Code Playgroud)

drawable/avd.xml

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
  android:drawable="@drawable/ic_play_arrow_24dp">
  <target
    android:name="play"
    android:animation="@anim/path_morph" />
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

drawable/ic_pause_arrow.xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
  android:width="24dp"
  android:height="24dp"
  android:viewportHeight="24.0"
  android:viewportWidth="24.0">
  <path
    android:pathData="@string/svg_pause"
    android:strokeColor="#000"
    android:strokeWidth="1.0" />
</vector>
Run Code Online (Sandbox Code Playgroud)

drawable/ic_play_arrow.xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
  android:width="100dp"
  android:height="100dp"
  android:viewportHeight="100.0"
  android:viewportWidth="100.0">
  <path
    android:fillColor="#FF000000"
    android:pathData="@string/svg_triangle" />
</vector>
Run Code Online (Sandbox Code Playgroud)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin" …
Run Code Online (Sandbox Code Playgroud)

animation android android-vectordrawable

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

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
查看次数