使用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
使用材质设计如何使用背景图像创建工具栏.
以下是我想要的:
我正在尝试以下代码:
<?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)
而我得到的是:
我使用动画矢量从支持库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
我有一个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开发者博客,新的设计支持库23.2支持动画矢量.当我搜索时,我遇到了这个链接来实现动画矢量drawable.在设计支持库23.2中实现动画矢量drawables的方法是否相同?有人可以帮我解决新的实施问题吗?
animation android android-studio androiddesignsupport android-vectordrawable
我最近开始涉足矢量图像和动画.但是,一旦路径变形动画完成,我希望能够在所有方向上均匀地缩放我的图像.
我尝试过在任何地方应用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定义的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设计值。
由于我们处理的是矢量而不是像素图像。我的问题是:
如何从在线位置加载矢量绘图,例如http://arsenal.com/image.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)
我也考虑过使用图层列表,但这不支持着色。任何人都知道如何不制作此矢量图像的三个副本?
是否可以在 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
我正在尝试使用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) 我在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一起缩放.有人知道为什么以及如何轻松绕过它?