android矢量图 内存大,Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。...

先上一个 位图和矢量图的 说明。外链网址已屏蔽

维基百科里面有更详细的说明 我就不贴地址了。简单来说就是位图 比 矢量图要大。但是位图可以适用于各种场景。

但是矢量图就只能显示一些有规律的图形。复杂的做不了或者是很难做。

对于android来说,我们一般app里面 会有各种icon 的图片。以前我们都是喜欢用imageview来表示。然后让美工去切图,

通常还会切好几套,因为我们的app要适配各种不一样dpi的设备。这么做的结果就是我们的drawable下面 图片太多,

apk包打出来很大,而且imageview其实占的内存也不小。最重要的是开发麻烦,我们复制图片,美工切图都是很累的。

但是使用矢量图的话,上述问题就都解决了。开发方便,占用内存小。(你简直找不到一个更好的方案来做android的icon了)

首先 网上有2个资源库 可以供我们使用

第一个是github上的开源项目,大家可以自己去里面找,但是这个里面貌似没有给你表明矢量图的key,你需要另外下载软件来获取

对应图标的key 不然无法在代码中使用。

外链网址已屏蔽

第二个就是阿里巴巴的图库,选取你喜欢的图标放进购物车,然后下载就可以了。

外链网址已屏蔽

下载完毕以后 是这样的。

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

那个ttf 文件就是我们要存放在android assets目录下的文件。

而那个html文件里面 则有图标和对应的key的值。

类似于这种:

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

注意key的值里面 分号不能少了。

最后看下代码 实际上非常简单 就是三步:

1.把ttf文件放进assets下。

2.在代码里 让textview set typeface(这个typeface会引用你的assets下的ttf文件)

3.在xml里写入图标对应的key值 即可。

4.要注意的就是icon的大小就是由textview的sp来控制的。这一点可能和imageview 我们使用的wrapcontent有所不同。

1 packagecom.example.wuyue.iconfonttest;2

3 importandroid.graphics.Typeface;4 importandroid.support.v7.app.ActionBarActivity;5 importandroid.os.Bundle;6 importandroid.util.Log;7 importandroid.view.Menu;8 importandroid.view.MenuItem;9 importandroid.widget.TextView;10

11

12 public class MainActivity extendsActionBarActivity {13

14 privateTextView iconFontTv;15

16 @Override17 protected voidonCreate(Bundle savedInstanceState) {18 super.onCreate(savedInstanceState);19 setContentView(R.layout.activity_main);20 //设置tpyeface的代码不要漏掉

21 Typeface typeface = Typeface.createFromAsset(getAssets(), "iconfont.ttf");22 iconFontTv = (TextView) this.findViewById(R.id.tv);23 iconFontTv.setTypeface(typeface);24

25

26 }27

28 @Override29 public booleanonCreateOptionsMenu(Menu menu) {30 //Inflate the menu; this adds items to the action bar if it is present.

31 getMenuInflater().inflate(R.menu.menu_main, menu);32 return true;33 }34

35 @Override36 public booleanonOptionsItemSelected(MenuItem item) {37 //Handle action bar item clicks here. The action bar will38 //automatically handle clicks on the Home/Up button, so long39 //as you specify a parent activity in AndroidManifest.xml.

40 int id =item.getItemId();41

42 //noinspection SimplifiableIfStatement

43 if (id ==R.id.action_settings) {44 return true;45 }46

47 return super.onOptionsItemSelected(item);48 }49 }

1

2 xmlns:tools="外链网址已屏蔽"android:layout_width="match_parent"

3 android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"

4 android:paddingRight="@dimen/activity_horizontal_margin"

5 android:paddingTop="@dimen/activity_vertical_margin"

6 android:paddingBottom="@dimen/activity_vertical_margin"tools:context=".MainActivity">

7

8

10 android:layout_width="wrap_content"

11 android:layout_height="wrap_content"

12 android:textSize="50sp"

13 android:text=""

14 />

15

16

text里 填入图标对应的key 即可,注意不要漏掉分号。

最后看下效果

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 快捷键代码行标记并快捷跳到标记行

idea有一个组合快捷键 标记代码行(左边的行数会出现一个1,代表着已经标记了) ctrlshift1 迅速跳到标记行 ctrl1 这边给大家送上显示GIF

鸿蒙之火是什么意思,鸿蒙突然火了!鸿蒙是什么?

原标题:"鸿蒙"突然火了!"鸿蒙"是什么?什么是鸿蒙?鸿蒙是什么?很多人都在发问,仿佛一夜之间就火了的鸿蒙有何独特之处?鸿蒙是真的来了。鸿蒙是文化,鸿蒙也是科技…

String类的indexOf方法的用法和举例

String类的indexof方法的作用和返回值: 今天在这里重点回顾一下,希望对大家能有所帮助: indexOf(int,ch) 先看第一个indexOf它返回值是int,在看它的参数(int,ch&#x…

Java字符串池(String Pool)深度解析

在工作中,String类是我们使用频率非常高的一种对象类型。JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存空间,这就是我们今天要讨论的核心,即字符串池(String Pool&#xff0…

用dl元素编辑html个人信息,html dl dt dd标签元素语法结构与使用

dl dt dd认识及dl dt dd使用方法一、dl dt dd认识 - TOPhtml 是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也叫dl表格(扩展阅读:table tr td、…

千牛怎么注销卖家店铺_新店铺怎么拥有亚马逊购物车?亚马逊小卖家如何尽快获得黄金购物车?...

我做跨境电商也有六年的时间了,在电商这个行业也有自己的一些经验。经验也许没有其他大卖家丰富,但会将我知道的都进行分享。如果有不懂得亚马逊问题可以我(V:772024802)。我这里给大家安排一堂直播课,可以系统的帮你解决做亚马逊…

mysql中like是否使用索引

一.测试数据 CREATE TABLE test_orderdetail (id int(11) NOT NULL AUTO_INCREMENT,order_id int(11) DEFAULT NULL,product_name varchar(100) DEFAULT NULL,cnt int(11) DEFAULT NULL,create_date datetime DEFAULT NULL,PRIMARY KEY (id),KEY idx_orderid_productname (pro…

电子科大16秋计算机应用基础在线作业一,电子科大16秋《计算机应用基础(本科)》在线作业3...

电子科技大学电子科大16秋《计算机应用基础(本科)》在线作业3一、单选题(共35 道试题,共70 分。)1. 在Windows,打开一个菜单后,其中某菜单项会出现下属级联菜单的标识是()。A. 菜单右侧有一组英文提示B. 菜单右侧有一个黑色三角形C. 菜单左侧有一个黑色圆点D. 菜单左…

wince手机投屏代码_除了 iOS,这些手机系统你肯定没用过

今年是2020年,智能手机市场经过大浪淘沙,留存下来的品牌可以说都是精品,国外的像苹果、三星、索尼、LG,国内有华为、小米、OV、魅族....都是有特色有竞争力的。华为在海外的巨幅广告牌但是大家有没有发现,如此多的手机…

SpringBoot读取Resource下文件的几种方式

最近在项目中涉及到Excle的导入功能,通常是我们定义完模板供用户下载,用户按照模板填写完后上传;这里待下载模板位置为resource/excleTemplate/test.xlsx,尝试了四种读取方式,并且测试了四种读取方式分别的windows开发…

kido机器人用流量吗_国脉电信200元天网卡,交1700流量无线用,拉人加入还会有不错的收益,你信吗?反正我是不信!...

最近又很多人咨询小编国脉天电信网卡是真的吗,是不是骗人的。关于国脉天网骗局,反传销联合会曾在网站发表了一篇关于国脉天网骗局的文章。今天来说说200元的国脉天网和1700的流量包。首先来说说200元购买的国脉天网卡,这个也就是国脉电信推广…

孩子学计算机最佳年龄,孩子学编程最佳年龄是多少

随着IT技术几十年的发展,编程也正变得越来越简单、易用,而不再是那么复杂、繁琐。那么孩子学编程最佳年龄是多少呢?孩子学编程的最佳年龄3-5岁的儿童可以先进行少儿编程语言启蒙,正式学习编程建议在上小学后。国外脑科学实证研究表…

messageformat.format() 自定义参数名_DedeCMS的Java版mcms 第四季之一: 自定义插件

自定义mcms插件包含自定义字典、自定义搜索、自定义模型、自定义表单、自定义页面等功能依赖: Apache Maven<dependency><groupId>net.mingsoft</groupId><artifactId>ms-mdiy</artifactId><version>当前版本</version> </de…

计算机里的网络是什么意思啊,计算机网络中本地站点是什么意思

Dreamweaver 站点提供一种组织所有与 Web 站点关联的文档的方法。通过在站点中组织文件&#xff0c;可以利用 Dreamweaver 将站点上传到 Web 服务器、自动跟踪和维护链接、管理文件以及共享文件。若要充分利用 Dreamweaver 的功能&#xff0c;需要定义一个站点。Dreamweaver 站…

angularjs input标签用一个日期插件后数据不能双向绑定了_微信如何定时发朋友圈?(最方便最好用的办法!)...

微信怎么发朋友圈&#xff08;微信如何定时发朋友圈&#xff09;作为一个运营新媒体的小编&#xff0c;很多情况下&#xff0c;我都会遇到定时发文的情况&#xff0c;对于我来说&#xff0c;定时发文很简单。只要将文案编辑好&#xff0c;使用平台的定时发文功能就可以&#xf…

POI的getLastRowNum() getPhysicalNumberOfRows()区别

// 获得总记录数&#xff08;行数&#xff09;int lastRowNum sheet.getLastRowNum();int rowNumsheet.getPhysicalNumberOfRows();同样的都是获取Excel工作sheet行数的两个方法 getLastRowNum()getPhysicalNumberOfRows()他们的主要区别是&#xff1a; getPhysicalNumberOfR…

java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...

最近在职业论坛看到这样一个热门的帖子&#xff0c;“腾讯员工裸辞3个月&#xff0c;转行去送外卖&#xff0c;曝出当月收入网友&#xff1a;又骗我去送外卖“到底怎么回事&#xff1f;请往下看。原来一位腾讯员工分享了自己从程序员到外卖员的经历&#xff0c;据男子说在腾讯&…

设置response.setContentType(“application/json;charset=utf-8“)后还是中文乱码

首先是我确认了response.setContentType(“application/json;charsetutf-8”)是设置正确了 代码如下&#xff1a; 找不到头绪&#xff0c;看了一下前端请求头信息&#xff1a; 确定是response.setContentType(“application/json;charsetutf-8”)没有生效&#xff0c;代码是没…

二年级计算机认识键盘教案,关于《认识键盘》的教学反思

关于《认识键盘》的教学反思键盘是计算机最基本、最常用的输入设备&#xff0c;通过键盘接口与主机相连&#xff0c;用户通过按键向计算机输入信息。本课学生学习的是标准的104键键盘&#xff0c;其中3个是Windows专用键。学生已经学习了鼠标操作的能力&#xff0c;在第七课安排…

Java实现文件写入——IO流(输入输出流详解)

输入输出的重要性&#xff1a; 输入和输出功能是Java对程序处理数据能力的提高&#xff0c;Java以流的形式处理数据。流是一组有序的数据序列&#xff0c;根据操作的类型&#xff0c;分为输入流和输出流。 程序从输入流读取数据&#xff0c;向输出流写入数据。Java是面向对象…