这次要说的还是思路或者是说分享一个自定义控件时的一个小窍门。
最近遇到一个这样的需求:在一个自定义的控件上加上我们App的logo。
遇到这个需求,我最先有的思路是把控件弄成Viewgroup,logo做成图片,然后使用ImageView,Layout进来。 后来想想,这个方法我不想用,我分析的原因如下:
1.觉得效率不高(纯猜测) 2.使用图片的话,需要不同分辨率适配啊,会增加APK的size 3.代码量也不少 4.如果以后需求变更,修改了LOGO的颜色啊,大小啊什么,还要更换图片
然后,退而求其次,当一个画家,一笔一笔的画一个logo,但是最后看了logo的真身之后,我就怂了,logo太复杂,看到美工的设计稿,好多辅助线,好多细节,所以这个想法也放弃了。
最后我的解决方法是把logo做成了字体写在了自定义的View上,这样可以控制大小和颜色,还不会失真,用到的字体文件只有4k,如果不同的地方用到,也不会增加体积。
下面是具体步骤: 1.AI文件转SVG 转出之前需要用AI中的(窗口菜单里面)路径查找器,合并路径。
然后导出svg。
2.把svg转成字体库 我用到了 这个网站 。
上面图的编码要记住,后面会用到。
3.集成到项目中
把下载下来的字体放到项目中,我放到了这里。
在string.xml中
<string name="SHOWlogo"></string>
自定义View中
typeface_logo = Typeface.createFromAsset(context.getAssets(), "iconfont/icomoon.ttf");
logo_paint.setTypeface(typeface_logo);
canvas.drawText(mContext.getResources().getString(R.string.SHOWlogo), centre - logo_paint.measureText(mContext.getResources().getString(R.string.SHOWlogo)) / 2,
centre * 1.48f - 0.62f * (logo_paint.ascent() + logo_paint.descent()), logo_paint);
这样logo就出现在自定义控件中了。