Android用Shape制作单边框图的两种思路(和坑;附Shape各种实用效果)

开发中遇到单/多边框的UI,简单的可以自己写shape图,复杂的一般都让设计配合制作9patch图了。
今天不说需要切图的情况,只聊简单的单/多边框,主要是实现思路。
效果很简单:

image.png

就以上图为例介绍,只有上边框,边框红色、宽1dp,其余为白色。

思路一

  • 两层画布叠加:底层红色;上层白色;
  • 上层白色画布下移1dp。

代码实现:



    
    
        
            
        
    
    
    
        
            
        
    

其中标签的lefttoprightbottom属性可以理解为viewmarginXX,这样接下来的思路二也就顺理成章了。

思路二

margin有正值,也有负值,所以...

  • 两层画布:底层全部白色;上层只有红色边框,边框宽度1dp;
  • 上层红色边框分别设置左、右、下margin为-1dp(这里只要负值大于边框宽度即可,并且必须大于边框宽度)

代码实现:



    
    
        
            
        
    
    
    
        
            
        
    

单边框就这样了,同理,那二边框、三边框也就简单了。
按需自取。

坑?

你以为到则里就结束了?图样图森炮!
跑一下上边思路二的代码看看效果

image.png

神马情况,strokewidth的值和itemleft等的值转化为像素的比例还不一样?并且不同手机分辨率效果也不同,分辨率越高越容易出现。
当然,思路二里把itemleft等的负值绝对值设置比width大的多一些就阔以了;另外,思路一是没这个问题的。

至于原因嘛,太晚了,睡一觉再研究吧。

更多shape实用效果请移步这里:

  • android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)

更多博客,请关注

  • https://blog.csdn.net/rflyee/
  • https://www.jianshu.com/u/ff8bcd76e5a7

你可能感兴趣的:(Android用Shape制作单边框图的两种思路(和坑;附Shape各种实用效果))