我目前正在使用标准24dp大小的PNG。但是,我需要一些大于100dp的图标。所以我发现使用SVG而不是大尺寸的PNG会更好。
(使用gradle 2.0,Android支持lib 23.3)
一个图标是普通的共享图标。以前我使用ic_share_white_24dp.png
来显示ActionBar上的分享按钮。我需要使用大型共享图标,因此我使用Vector Asset Studio导入Material SVG Share图标。导入后它看起来像这样:
文件名: ic_share_white_48px.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="100dp"
android:height="100dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFF"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
</vector>
我将宽度和高度更改为100dp
。这背后的原因是当使用 API LOLLIPOP时,会生成PNG并在显示为100dp时进行缩放。所以,我将24dp改为100dp,这样Android Studio就可以生成100dp的PNG。
现在,我也想在Action Bar上使用这个SVG。我应该创建一个高度和宽度设置为24dp的新xml吗?或者这可以很好地缩小规模而没有任何性能问题?使用多尺寸图像的最佳方法是什么?
最重要的是,我是否缺少一些理解基础?
答案 0 :(得分:4)
这是一个在.ttf文件中转换SVG并生成Unicode的网站。把它放在资产/字体文件夹&amp; Value in Value文件夹(icons.xml
)为特定图标提供字符串名称。
示例:<string name="icon_info"></string>
在textView
中使用此字符串<TextView
android:id="@+id/icon_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/icon_info"
android:textColor="@color/black"
android:textSize="40dp" />
在.java文件中
icon_info=(TextView)findViewById(R.id.icon_info);
Typeface font = Typeface.createFromAsset(this.getResources().getAssets(), "fonts/icons.ttf");
icon_info.setTypeface(font);