Android Studio使用Vector Asset的注意事项

<p>Vector是Android 5.0之后新增加的一项特性,目前已经可以兼容到Android 5.0之前的版本。但使用过程中依然还是可能产生一些兼容性的问题。</p><p>1、Android Studio创建Vector Asset</p><p>在res目录下的drawable目录上单击右键,选择New --&gt; Vector Asset,弹出Asset Studio对话框。</p><p>目前有两种方式创建vector资源,一种是通过Material Icon生成vector资源,一种是通过SVG或PSD文件生成vector资源。具体操作过程比较简单,不再详述。</p><p>Asset Studio</p><p>注意:最好将生成的vector drawable资源放在drawable目录下或drawable-anydpi目录下。</p><p>2、兼容问题解决</p><p>如果使用的Android Studio版本为2.2以上,gradle版本也较新,生成的vector drawable资源也放在了drawable目录下或drawable-anydpi目录下,则一般就直接可以兼容Android 5.0之前操作系统。</p><p>vector drawable资源的使用方式如下,ic_egg05_got.xml为生成的vector 资源。</p><pre class="brush:xml;toolbar:false">&lt;ImageView android:id=&quot;@+id/ivVector&quot; android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot; android:src=&quot;@drawable/ic_egg05_got&quot;/&gt;</pre><p>如果不满足以上的条件或由于其他原因导致Android 5.0之前的设备无法使用vector资源,也有别的解决办法。</p><p>如果设备无法使用vector资源,则会导致应用崩溃,异常信息大致如下所示:</p><pre class="brush:html;toolbar:false">Causedby:android.view.InflateException:BinaryXMLfileline#11:ErrorinflatingclassImageView Causedby:android.content.res.Resources$NotFoundException:Fileres/drawable-nodpi-v4/egg01_got.xmlfromdrawableresourceID#0x7f020053 Causedby:org.xmlpull.v1.XmlPullParserException:BinaryXMLfileline#2:invaliddrawabletagvector</pre><p>2.1、修改build.gradle<br/></p><p>打开该模块下的build.gradle文件。</p><p>如果当前使用的gradle版本为2.0以上,在android节点下的defaultConfig节点下加入一行代码:</p><p>vectorDrawables.useSupportLibrary = true</p><p>如果使用的gradle版本为2.0以下,1.5以上,则需要在android节点下的defaultConfig节点下加入如下一行代码:</p><p>generatedDensities = []</p><p>并在android节点下,defaultConfig节点后面加入</p><pre class="brush:java;toolbar:false">aaptOptions{ additionalParameters&quot;--no-version-vectors&quot; }</pre><p>推荐使用较新的gradle版本以免不必要的麻烦。</p><p>之后,在dependencies中引入appcompat-v7兼容包,版本需要23.2以上。</p><pre class="brush:java;toolbar:false">compile&#39;com.android.support:appcompat-v7:25.0.1&#39;</pre><p>2.2、修改布局文件</p><p>如果在布局文件中使用了vector drawable资源的话,则需要修改其使用方式为:</p><pre class="brush:xml;toolbar:false">app:srcCompat=&quot;@drawable/ic_egg05_got&quot;</pre><p>需要在根布局中引入命名空间xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;。</p><p>2.3、修改Activity</p><p>需要将加载vector drawable资源的Activity继承自AppCompatActivity。</p><p>做完以上工作之后,Android 5.0之前的设备就可以支持使用vector drawable资源了。</p>
返回顶部 留言